X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs-website;a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Ftext%2Ftests%2Fsrc%2FUnit%2FPlugin%2Fmigrate%2Ffield%2Fd6%2FTextFieldTest.php;fp=web%2Fcore%2Fmodules%2Ftext%2Ftests%2Fsrc%2FUnit%2FPlugin%2Fmigrate%2Ffield%2Fd6%2FTextFieldTest.php;h=b79a0b5c3ed68ac025702dd8266030313f888cf4;hp=0000000000000000000000000000000000000000;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hpb=aea91e65e895364e460983b890e295aa5d5540a5 diff --git a/web/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php b/web/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php new file mode 100644 index 000000000..b79a0b5c3 --- /dev/null +++ b/web/core/modules/text/tests/src/Unit/Plugin/migrate/field/d6/TextFieldTest.php @@ -0,0 +1,167 @@ +plugin = new TextField([], 'text', []); + + $migration = $this->prophesize(MigrationInterface::class); + + // The plugin's processFieldValues() method will call + // setProcessOfProperty() and return nothing. So, in order to examine the + // process pipeline created by the plugin, we need to ensure that + // getProcess() always returns the last input to setProcessOfProperty(). + $migration->setProcessOfProperty(Argument::type('string'), Argument::type('array')) + ->will(function ($arguments) use ($migration) { + $migration->getProcess()->willReturn($arguments[1]); + }); + + $this->migration = $migration->reveal(); + } + + /** + * @covers ::processFieldValues + */ + public function testProcessFilteredTextFieldValues() { + $field_info = [ + 'widget_type' => 'text_textfield', + ]; + $this->plugin->processFieldValues($this->migration, 'body', $field_info); + + $process = $this->migration->getProcess(); + $this->assertSame('sub_process', $process['plugin']); + $this->assertSame('body', $process['source']); + $this->assertSame('value', $process['process']['value']); + + // Ensure that filter format IDs will be looked up in the filter format + // migrations. + $lookup = $process['process']['format'][2]; + $this->assertSame('migration', $lookup['plugin']); + $this->assertContains('d6_filter_format', $lookup['migration']); + $this->assertContains('d7_filter_format', $lookup['migration']); + $this->assertSame('format', $lookup['source']); + } + + /** + * @covers ::processFieldValues + */ + public function testProcessBooleanTextImplicitValues() { + $info = [ + 'widget_type' => 'optionwidgets_onoff', + 'global_settings' => [ + 'allowed_values' => "foo\nbar", + ] + ]; + $this->plugin->processFieldValues($this->migration, 'field', $info); + + $expected = [ + 'value' => [ + 'plugin' => 'static_map', + 'source' => 'value', + 'default_value' => 0, + 'map' => [ + 'bar' => 1, + ], + ], + ]; + $this->assertSame($expected, $this->migration->getProcess()['process']); + } + + /** + * @covers ::processFieldValues + */ + public function testProcessBooleanTextExplicitValues() { + $info = [ + 'widget_type' => 'optionwidgets_onoff', + 'global_settings' => [ + 'allowed_values' => "foo|Foo\nbaz|Baz", + ] + ]; + $this->plugin->processFieldValues($this->migration, 'field', $info); + + $expected = [ + 'value' => [ + 'plugin' => 'static_map', + 'source' => 'value', + 'default_value' => 0, + 'map' => [ + 'baz' => 1, + ], + ], + ]; + $this->assertSame($expected, $this->migration->getProcess()['process']); + } + + /** + * Data provider for testGetFieldType(). + */ + public function getFieldTypeProvider() { + return [ + ['string_long', 'text_textfield', ['text_processing' => FALSE]], + ['string', 'text_textfield', [ + 'text_processing' => FALSE, + 'max_length' => 128, + ], + ], + ['string_long', 'text_textfield', [ + 'text_processing' => FALSE, + 'max_length' => 4096, + ], + ], + ['text_long', 'text_textfield', ['text_processing' => TRUE]], + ['text', 'text_textfield', [ + 'text_processing' => TRUE, + 'max_length' => 128, + ], + ], + ['text_long', 'text_textfield', [ + 'text_processing' => TRUE, + 'max_length' => 4096, + ], + ], + ['list_string', 'optionwidgets_buttons'], + ['list_string', 'optionwidgets_select'], + ['boolean', 'optionwidgets_onoff'], + ['text_long', 'text_textarea', ['text_processing' => TRUE]], + ['string_long', 'text_textarea', ['text_processing' => FALSE]], + [NULL, 'undefined'], + ]; + } + + /** + * @covers ::getFieldType + * @dataProvider getFieldTypeProvider + */ + public function testGetFieldType($expected_type, $widget_type, array $settings = []) { + $row = new Row(); + $row->setSourceProperty('widget_type', $widget_type); + $row->setSourceProperty('global_settings', $settings); + $this->assertSame($expected_type, $this->plugin->getFieldType($row)); + } + +}