/** * Tests responsive image formatter on node display with one source. */ public function testResponsiveImageFieldFormattersOneSource() { $this->responsiveImgStyle->addImageStyleMapping('responsive_image_test_module.empty', '1x', array('image_mapping_type' => 'image_style', 'image_mapping' => 'medium'))->addImageStyleMapping('responsive_image_test_module.empty', '2x', array('image_mapping_type' => 'image_style', 'image_mapping' => 'large'))->save(); $node_storage = $this->container->get('entity.manager')->getStorage('node'); $field_name = Unicode::strtolower($this->randomMachineName()); $this->createImageField($field_name, 'article', array('uri_scheme' => 'public')); // Create a new node with an image attached. $test_image = current($this->drupalGetTestFiles('image')); $nid = $this->uploadNodeImage($test_image, $field_name, 'article', $this->randomMachineName()); $node_storage->resetCache(array($nid)); // Use the responsive image formatter linked to file formatter. $display_options = array('type' => 'responsive_image', 'settings' => array('image_link' => '', 'responsive_image_style' => 'style_one')); $display = entity_get_display('node', 'article', 'default'); $display->setComponent($field_name, $display_options)->save(); // View the node. $this->drupalGet('node/' . $nid); // Assert the media attribute is present if it has a value. $large_style = ImageStyle::load('large'); $medium_style = ImageStyle::load('medium'); $node = $node_storage->load($nid); $image_uri = File::load($node->{$field_name}->target_id)->getFileUri(); $this->assertRaw('<img srcset="' . file_url_transform_relative($medium_style->buildUrl($image_uri)) . ' 1x, ' . file_url_transform_relative($large_style->buildUrl($image_uri)) . ' 2x"'); }
/** * Tests responsive image formatter on node display with an empty media query. */ public function testResponsiveImageFieldFormattersEmptyMediaQuery() { $this->responsiveImgStyle->addImageStyleMapping('responsive_image_test_module.empty', '1x', array('image_mapping_type' => 'image_style', 'image_mapping' => RESPONSIVE_IMAGE_EMPTY_IMAGE))->addImageStyleMapping('responsive_image_test_module.mobile', '1x', array('image_mapping_type' => 'image_style', 'image_mapping' => 'thumbnail'))->save(); $node_storage = $this->container->get('entity.manager')->getStorage('node'); $field_name = Unicode::strtolower($this->randomMachineName()); $this->createImageField($field_name, 'article', array('uri_scheme' => 'public')); // Create a new node with an image attached. $test_image = current($this->drupalGetTestFiles('image')); $nid = $this->uploadNodeImage($test_image, $field_name, 'article', $this->randomMachineName()); $node_storage->resetCache(array($nid)); // Use the responsive image formatter linked to file formatter. $display_options = array('type' => 'responsive_image', 'settings' => array('image_link' => '', 'responsive_image_style' => 'style_one')); $display = entity_get_display('node', 'article', 'default'); $display->setComponent($field_name, $display_options)->save(); // View the node. $this->drupalGet('node/' . $nid); // Assert an empty media attribute is not output. $this->assertNoPattern('@srcset="data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== 1x".+?media=".+?/><source@'); // Assert the media attribute is present if it has a value. $thumbnail_style = ImageStyle::load('thumbnail'); $node = $node_storage->load($nid); $image_uri = File::load($node->{$field_name}->target_id)->getFileUri(); $this->assertPattern('/srcset="' . preg_quote($thumbnail_style->buildUrl($image_uri), '/') . ' 1x".+?media="\\(min-width: 0px\\)"/'); }
/** * @covers ::setBreakpointGroup * @covers ::getBreakpointGroup */ public function testSetBreakpointGroup() { $entity = new ResponsiveImageStyle(array('breakpoint_group' => 'test_group')); $entity->addImageStyleMapping('test_breakpoint', '1x', array('image_mapping_type' => 'image_style', 'image_mapping' => 'large')); $entity->addImageStyleMapping('test_breakpoint', '2x', array('image_mapping_type' => 'sizes', 'image_mapping' => array('sizes' => '(min-width:700px) 700px, 100vw', 'sizes_image_styles' => array('large' => 'large')))); $entity->addImageStyleMapping('test_breakpoint2', '1x', array('image_mapping_type' => 'image_style', 'image_mapping' => 'thumbnail')); // Ensure that setting to same group does not remove mappings. $entity->setBreakpointGroup('test_group'); $this->assertTrue($entity->hasImageStyleMappings()); $this->assertEquals('test_group', $entity->getBreakpointGroup()); // Ensure that changing the group removes mappings. $entity->setBreakpointGroup('test_group2'); $this->assertEquals('test_group2', $entity->getBreakpointGroup()); $this->assertFalse($entity->hasImageStyleMappings()); }