View source
<?php
namespace Drupal\Tests\gridstack\Kernel;
use Drupal\Component\Render\FormattableMarkup;
use Drupal\gridstack\Entity\GridStack;
use Drupal\Tests\blazy\Kernel\BlazyKernelTestBase;
class GridStackCrudTest extends BlazyKernelTestBase {
public static $modules = [
'image',
'blazy',
'gridstack',
'gridstack_ui',
'gridstack_test',
];
protected function setUp() {
parent::setUp();
$this
->installConfig(static::$modules);
$this
->installEntitySchema('gridstack');
$this->gridstackManager = $this->container
->get('gridstack.manager');
$this->gridstackManager
->getConfigFactory()
->getEditable('gridstack.settings')
->set('framework', 'bootstrap')
->save();
}
public function testGridStackCrud() {
$empty = GridStack::create([
'name' => 'test_empty',
'label' => 'Empty gridstack',
'json' => [],
]);
$empty
->save();
$this
->verifyGridStackOptionset($empty);
$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'));
$this
->verifyGridStackOptionset($main);
$main
->set('label', 'Altered gridstack');
$main
->setOption('use_framework', TRUE);
$main
->save();
$this
->verifyGridStackOptionset($main);
$main
->setSetting('auto', FALSE);
$main
->save();
$this
->verifyGridStackOptionset($main);
$main
->delete();
$gridstacks = GridStack::loadMultiple();
$this
->assertFalse(isset($gridstacks[$main
->id()]), 'GridStack::loadMultiple: Deleted gridstack optionset no longer exists.');
$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);
$breakpoints = $frontend
->getJson('breakpoints');
$this
->assertTrue(is_string($breakpoints));
$end = $frontend
->getLastBreakpoint('grids');
$this
->assertEquals(0, $end[0][0]);
$lg = $frontend
->getBreakpoints('lg');
$this
->assertEquals(12, $lg['column']);
$grid = $frontend
->getBreakpointItem('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');
$this
->assertTrue(strpos($summary, 'width') === FALSE);
$settings = [
'_root' => 'grids',
];
$breakpoints = $frontend
->breakpointsToArray();
$this
->assertNotEmpty($breakpoints);
$bootstrap = GridStack::load('test');
$this
->assertNotEmpty($bootstrap);
$nested = $bootstrap
->getNestedGridsByDelta(1);
$this
->assertNotEmpty($nested);
$settings = [
'_root' => 'nested',
];
$breakpoints = $bootstrap
->breakpointsToArray();
$this
->assertNotEmpty($breakpoints);
}
public function verifyGridStackOptionset(GridStack $gridstack) {
$t_args = [
'%gridstack' => $gridstack
->label(),
];
$default_langcode = \Drupal::languageManager()
->getDefaultLanguage()
->getId();
$gridstack = GridStack::load($gridstack
->id());
$this
->assertEquals($gridstack
->id(), $gridstack
->id(), new FormattableMarkup('GridStack::load: Proper gridstack id for gridstack optionset %gridstack.', $t_args));
$this
->assertEquals($gridstack
->label(), $gridstack
->label(), new FormattableMarkup('GridStack::load: Proper title for gridstack optionset %gridstack.', $t_args));
$this
->assertEquals($gridstack
->language()
->getId(), $default_langcode, new FormattableMarkup('GridStack::load: Proper language code for gridstack optionset %gridstack.', $t_args));
}
}