3 namespace Drupal\Tests\blazy\Kernel\Views;
5 use Drupal\Core\Form\FormState;
6 use Drupal\views\Views;
7 use Drupal\blazy\BlazyViews;
10 * Test Blazy Views integration.
12 * @coversDefaultClass \Drupal\blazy\Dejavu\BlazyStylePluginBase
15 class BlazyViewsFileTest extends BlazyViewsTestBase {
20 public static $testViews = ['test_blazy_entity', 'test_blazy_entity_2'];
25 protected function setUp($import_test_views = TRUE) {
26 parent::setUp($import_test_views);
28 $this->entityFieldName = 'field_entity_test';
29 $this->entityPluginId = 'blazy_entity_test';
30 $this->targetBundle = 'bundle_target_test';
31 $this->targetBundles = [$this->targetBundle];
33 $bundle = $this->bundle;
34 $settings['image_settings'] = [
35 'iframe_lazy' => TRUE,
36 'image_style' => 'blazy_crop',
37 'media_switch' => 'blazy_test',
39 'view_mode' => 'default',
42 $this->setUpContentWithEntityReference($settings);
44 // Create referencing entity.
45 $this->referencingEntity = $this->createReferencingEntity();
47 $data['fields'] = $this->getDefaultFields();
50 $this->setUpContentTypeTest($bundle, $data);
52 $data['settings'] = $this->getFormatterSettings();
53 $data['settings']['breakpoints'] = $this->getDataBreakpoints(TRUE);
55 $display = $this->setUpFormatterDisplay($bundle, $data);
57 $display->setComponent('field_image', [
59 'settings' => $settings['image_settings'],
65 $this->setUpContentWithItems($bundle);
69 * Make sure that the HTML list style markup is correct.
71 public function testBlazyViews() {
72 $view = Views::getView('test_blazy_entity');
73 $this->executeView($view);
74 $view->setDisplay('default');
76 $style_plugin = $view->style_plugin;
78 $this->assertInstanceOf('\Drupal\blazy\BlazyManagerInterface', $style_plugin->blazyManager(), 'BlazyManager implements interface.');
79 $this->assertInstanceOf('\Drupal\blazy_test\Form\BlazyAdminTestInterface', $style_plugin->admin(), 'BlazyAdmin implements interface.');
81 $style_plugin->options = array_merge($style_plugin->options, $this->getDefaultFields(TRUE));
82 $style_plugin->options['grid'] = 0;
83 $style_plugin->options['grid_medium'] = 3;
84 $style_plugin->options['grid_small'] = 1;
85 $style_plugin->options['image'] = 'field_image';
86 $style_plugin->options['media_switch'] = 'blazy_test';
87 $style_plugin->options['overlay'] = $this->testFieldName;
88 $style_plugin->options['caption']['title'] = 'title';
89 $style_plugin->options['caption']['field_teaser'] = 'field_teaser';
91 $settings = $style_plugin->options;
105 $definition = $style_plugin->getDefinedFieldOptions($fields);
106 $this->assertEquals('blazy_test', $definition['plugin_id']);
109 $form_state = new FormState();
110 $style_plugin->buildOptionsForm($form, $form_state);
111 $this->assertArrayHasKey('closing', $form);
113 $style_plugin->submitOptionsForm($form, $form_state);
118 $row = $view->result[$index];
121 $render = $view->getStyle()->render();
122 $this->assertArrayHasKey('data-blazy', $render['#attributes']);
124 $output = $view->preview();
125 $output = $this->blazyManager->getRenderer()->renderRoot($output);
126 $this->assertTrue(strpos($output, 'data-blazy') !== FALSE, 'Blazy attribute is added to DIV.');
128 $element = ['settings' => $settings];
129 $view->getStyle()->buildElement($element, $row, $index);
132 $output = $view->getStyle()->getImageRenderable($settings, $row, $index);
134 catch (\PHPUnit_Framework_Exception $e) {
136 $this->assertTrue(TRUE);
138 $image = $view->getStyle()->getImageRenderable($settings, $row, $index);
139 $this->assertArrayHasKey('image', $settings);
141 $output = $view->getStyle()->getImageItem($image);
142 $this->assertArrayHasKey('image', $settings);
144 $output = $view->getStyle()->isImageRenderable($row, $index, $this->testFieldName);
145 $this->assertArrayHasKey('image', $settings);
147 $output = $view->getStyle()->getCaption($index, $settings);
148 $this->assertArrayHasKey('caption', $settings);
150 $view->getStyle()->getLayout($settings, $index);
151 $this->assertArrayHasKey('layout', $settings);
155 $output = $view->getStyle()->getFieldRenderable($row, $index, '');
157 catch (\PHPUnit_Framework_Exception $e) {
160 $this->assertTrue(TRUE);
162 $output = $view->getStyle()->getFieldRendered($index, $this->testFieldName);
163 $this->assertArrayHasKey('image', $settings);
165 $output = $view->getStyle()->getFieldRenderable($row, $index, $this->testFieldName);
166 $this->assertArrayHasKey('image', $settings);
168 $output = $view->getStyle()->getFieldString($row, 'title', $index);
169 $this->assertNotEmpty($output[0]);
171 if ($blazy = BlazyViews::viewsField($view)) {
172 $scopes = $blazy->getScopedFormElements();
173 $this->assertArrayHasKey('settings', $scopes);
176 $form_state = new FormState();
177 $blazy->buildOptionsForm($form, $form_state);
178 $this->assertArrayHasKey('image_style', $form);
180 $this->assertInstanceOf('\Drupal\blazy\Form\BlazyAdminInterface', $blazy->blazyAdmin(), 'BlazyAdmin implements interface.');
184 $view = Views::getView('test_blazy_entity_2');
185 $this->executeView($view);
186 $view->setDisplay('default');
188 $style_plugin = $view->style_plugin;
189 $style_plugin->options['grid'] = 0;
192 $form_state = new FormState();
193 $style_plugin->buildOptionsForm($form, $form_state);
194 $this->assertArrayHasKey('closing', $form);
196 $style_plugin->submitOptionsForm($form, $form_state);
199 $render = $view->getStyle()->render();
200 $this->assertArrayHasKey('data-blazy', $render['#attributes']);
202 $output = $view->preview();
203 $output = $this->blazyManager->getRenderer()->renderRoot($output);
204 $this->assertTrue(strpos($output, 'data-blazy') !== FALSE, 'Blazy attribute is added to DIV.');