You are here

public function GridStackCrudTest::testGridStackCrud in GridStack 8

Same name and namespace in other branches
  1. 8.2 tests/src/Kernel/GridStackCrudTest.php \Drupal\Tests\gridstack\Kernel\GridStackCrudTest::testGridStackCrud()

Tests CRUD operations for GridStack optionsets.

File

tests/src/Kernel/GridStackCrudTest.php, line 44

Class

GridStackCrudTest
Tests creation, loading, updating, deleting of GridStack optionsets.

Namespace

Drupal\Tests\gridstack\Kernel

Code

public function testGridStackCrud() {

  // Add a GridStack optionset with minimum data only.
  $empty = GridStack::create([
    'name' => 'test_empty',
    'label' => 'Empty gridstack',
    'json' => [],
  ]);
  $empty
    ->save();
  $this
    ->verifyGridStackOptionset($empty);

  // Add main GridStack optionset with possible properties.
  $main = GridStack::create([
    'name' => 'test_main',
    'label' => 'Test main',
    'json' => [],
  ]);
  $main
    ->save();
  $settings = [
    'cellHeight' => 80,
    'minWidth' => 480,
    'verticalMargin' => 15,
  ] + $main
    ->getSettings();
  $main
    ->setSettings($settings);
  $main
    ->getSetting('float');
  $main
    ->setSetting('float', TRUE);
  $main
    ->getOption('use_framework');
  $main
    ->setOption('use_framework', TRUE);
  $main
    ->save();
  $this
    ->assertEquals(TRUE, $main
    ->getSetting('float'));
  $this
    ->assertEquals(TRUE, $main
    ->getOption('use_framework'));
  $breakpoints = $main
    ->getBreakpoints();
  $this
    ->assertEmpty($breakpoints);
  $this
    ->verifyGridStackOptionset($main);

  // Alter some gridstack optionset properties and save again.
  $main
    ->set('label', 'Altered gridstack');
  $main
    ->setOption('use_framework', TRUE);
  $main
    ->save();
  $this
    ->verifyGridStackOptionset($main);

  // Disable auto and save again.
  $main
    ->setSetting('auto', FALSE);
  $main
    ->save();
  $this
    ->verifyGridStackOptionset($main);

  // Delete the gridstack optionset.
  $main
    ->delete();
  $gridstacks = GridStack::loadMultiple();
  $this
    ->assertFalse(isset($gridstacks[$main
    ->id()]), 'GridStack::loadMultiple: Deleted gridstack optionset no longer exists.');

  // Tests for optionset Frontend JS.
  $frontend = GridStack::load('frontend');
  $icon_uri = $frontend
    ->getIconUri();
  $this
    ->assertTrue(strpos($icon_uri, 'frontend.png') !== FALSE);
  $icon_url = $frontend
    ->getIconUrl();
  $this
    ->assertTrue(strpos($icon_url, 'frontend.png') !== FALSE);
  $string = 'data-role|complimentary';
  $attributes = $frontend::parseAttributes($string);
  $this
    ->assertEquals('complimentary', $attributes['data-role']);
  $breakpoints = $frontend
    ->getJson('breakpoints');
  $this
    ->assertTrue(is_string($breakpoints));
  $end = $frontend
    ->getEndBreakpointGrids('grids');
  $this
    ->assertEquals(0, $end[0]['x']);
  $lg = $frontend
    ->getBreakpoints('lg');
  $this
    ->assertEquals(12, $lg['column']);
  $grids = $frontend
    ->getBreakpointGrids('lg', 'grids');
  $this
    ->assertArrayHasKey('image_style', $grids[0]);
  $grid = $frontend
    ->getBreakpointGrid('lg', 0, 'x', 'grids');
  $this
    ->assertEquals(0, $grid);
  $auto = $frontend
    ->getOptions([
    'settings',
    'float',
  ]);
  $this
    ->assertEquals(FALSE, $auto);
  $options = $frontend
    ->getOptions();
  $this
    ->assertArrayHasKey('settings', $options);
  $summary = $frontend
    ->getJsonSummaryBreakpoints('lg', FALSE, TRUE);
  $this
    ->assertTrue(strpos($summary, 'width') === FALSE);
  $settings = [];
  $frontend
    ->gridsJsonToArray($settings);
  $this
    ->assertArrayHasKey('breakpoints', $settings);
  $widths = $frontend::optimizeGridWidths($settings, 'grids', FALSE);
  $this
    ->assertNotEmpty($widths);

  // Tests for optionset Test which is a clone of Bootstrap.
  $bootstrap = GridStack::load('test');
  $nested = $bootstrap
    ->getNestedGridsByDelta(1);
  $this
    ->assertNotEmpty($nested);
  $settings = [];
  $bootstrap
    ->gridsJsonToArray($settings);
  $this
    ->assertArrayHasKey('breakpoints', $settings);
  $settings['delta'] = 1;
  $settings['nested_delta'] = 1;
  $widths = $bootstrap::optimizeGridWidths($settings, 'nested', FALSE);
  $this
    ->assertArrayHasKey('lg', $widths);
  $id_1 = GridStack::getHtmlId('gridstack');
  $this
    ->assertNotEmpty($id_1);
  $id_2 = GridStack::getHtmlId('gridstack', 'gridstack-hotdamn');
  $this
    ->assertEquals($id_2, 'gridstack-hotdamn');
}