21 use TYPO3\TestingFramework\Core\Unit\UnitTestCase;
34 $this->expectException(FinisherException::class);
35 $this->expectExceptionCode(1480469086);
37 $mockSaveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, [
41 $mockSaveToDatabaseFinisher->_set(
'options', [
46 $mockSaveToDatabaseFinisher->_call(
'throwExceptionOnInconsistentConfiguration');
54 $elementsConfiguration = [
56 'mapOnDatabaseColumn' =>
'bar'
60 $saveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, [
'getFormValues',
'getElementByIdentifier']);
61 $saveToDatabaseFinisher->method(
'getFormValues')->willReturn([
67 $saveToDatabaseFinisher->method(
'getElementByIdentifier')->willReturn($this->prophesize(FormElementInterface::class)->reveal());
68 $databaseData = $saveToDatabaseFinisher->_call(
'prepareData', $elementsConfiguration, []);
70 self::assertSame(
'one,two', $databaseData[
'bar']);
78 $saveToDatabaseFinisher = $this->getMockBuilder(SaveToDatabaseFinisher::class)
79 ->setMethods([
'process'])
81 $this->inject($saveToDatabaseFinisher,
'options', [
83 'databaseColumnMappings' => [
88 $saveToDatabaseFinisher->expects($this->once())->method(
'process')->with(0);
90 $saveToDatabaseFinisher->execute($this->prophesize(FinisherContext::class)->reveal());
101 'expectedEmpty' =>
true,
105 'expectedEmpty' =>
true,
109 'expectedEmpty' =>
false,
111 'space character' => [
113 'expectedEmpty' =>
false,
117 'expectedEmpty' =>
false,
121 'expectedEmpty' =>
false,
134 $elementsConfiguration = [
136 'mapOnDatabaseColumn' =>
'bar',
137 'skipIfValueIsEmpty' =>
true,
141 $saveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, [
'getFormValues',
'getElementByIdentifier']);
142 $saveToDatabaseFinisher->method(
'getFormValues')->willReturn([
145 $saveToDatabaseFinisher->method(
'getElementByIdentifier')->willReturn($this->prophesize(FormElementInterface::class)->reveal());
146 $databaseData = $saveToDatabaseFinisher->_call(
'prepareData', $elementsConfiguration, []);
148 self:self::assertSame($expectedEmpty, empty($databaseData));
156 $saveToDatabaseFinisher = $this->getMockBuilder(SaveToDatabaseFinisher::class)
157 ->setMethods([
'process'])
159 $this->inject($saveToDatabaseFinisher,
'options', [
162 'databaseColumnMappings' => [
168 'databaseColumnMappings' => [
174 $saveToDatabaseFinisher->expects($this->exactly(2))->method(
'process')->withConsecutive([0], [1]);
176 $saveToDatabaseFinisher->execute($this->prophesize(FinisherContext::class)->reveal());
184 $elementsConfiguration = [
186 'mapOnDatabaseColumn' =>
'date'
190 $saveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, [
'getFormValues',
'getElementByIdentifier']);
191 $saveToDatabaseFinisher->method(
'getFormValues')->willReturn([
192 'date' =>
new \DateTime,
194 $saveToDatabaseFinisher->method(
'getElementByIdentifier')->willReturn($this->prophesize(FormElementInterface::class)->reveal());
195 $databaseData = $saveToDatabaseFinisher->_call(
'prepareData', $elementsConfiguration, []);
197 $expected =
'#^([0-9]{10})$#';
198 $this->assertEquals(1, preg_match($expected, $databaseData[
'date']));
206 $elementsConfiguration = [
208 'mapOnDatabaseColumn' =>
'date',
209 'dateFormat' =>
'Y.m.d',
213 $saveToDatabaseFinisher = $this->getAccessibleMock(SaveToDatabaseFinisher::class, [
'getFormValues',
'getElementByIdentifier']);
214 $saveToDatabaseFinisher->method(
'getFormValues')->willReturn([
215 'date' =>
new \DateTime(
'2018-06-12'),
217 $saveToDatabaseFinisher->method(
'getElementByIdentifier')->willReturn($this->prophesize(FormElementInterface::class)->reveal());
218 $databaseData = $saveToDatabaseFinisher->_call(
'prepareData', $elementsConfiguration, []);
220 self::assertSame(
'2018.06.12', $databaseData[
'date']);