public function testSubCellsToView()
 {
     /** @var CompoundColumn $column */
     $column = $this->factory->createColumn('actions', $this->getTestedType(), ['label' => 'Actions']);
     $columns = [];
     $columns['age'] = $this->factory->createColumn('age', NumberType::class, ['parent_column' => $column]);
     $columns['name'] = $this->factory->createColumn('name', TextType::class, ['parent_column' => $column, 'block_name' => 'my_named']);
     $column->setColumns($columns);
     $datagrid = new Datagrid('grid', [$column]);
     $object = new \stdClass();
     $object->key = ' foo ';
     $object->name = ' sheldon ';
     $object->age = 42;
     $datagrid->setData([1 => $object]);
     $datagridView = $datagrid->createView();
     $row = $datagridView->rows[1]->cells;
     // Actions (root) column
     $view = $row['actions'];
     self::assertDatagridCompoundCell('age', ['unique_block_prefix' => '_grid_actions', 'row' => 1], $view);
     self::assertDatagridCompoundCell('name', ['unique_block_prefix' => '_grid_actions', 'row' => 1], $view);
     self::assertArrayHasKey('age', $view->value);
     self::assertArrayHasKey('name', $view->value);
     self::assertArrayNotHasKey('key', $view->value);
     // Internal cells
     $cells = $view->value;
     self::assertDatagridCell('age', '42', ['unique_block_prefix' => '_grid_actions_age', 'block_prefixes' => ['column', 'number', '_grid_actions_age'], 'cache_key' => '_grid_actions_age_number', 'row' => 1, 'compound' => true], $cells['age']);
     self::assertDatagridCell('name', ' sheldon ', ['unique_block_prefix' => '_my_named', 'block_prefixes' => ['column', 'text', '_my_named'], 'cache_key' => '_my_named_text', 'row' => 1, 'compound' => true], $cells['name']);
 }
Beispiel #2
0
 public function testCreateView()
 {
     $gridData = [new Entity('entity1'), new Entity('entity2')];
     $this->datagrid->setData($gridData);
     $view = $this->datagrid->createView();
     self::assertEquals('_users', $view->vars['unique_block_prefix']);
     self::assertEquals(['datagrid', '_users'], $view->vars['block_prefixes']);
     self::assertEquals(['unique_block_prefix' => '_users_row', 'block_prefixes' => ['datagrid_row', '_users_row']], $view->vars['row_vars']);
     self::assertTrue($view->hasColumn('foo'));
     self::assertFalse($view->hasColumn('foo2'));
 }
 public function testPassLabelToHeaderView()
 {
     $column = $this->factory->createColumn('edit', $this->getTestedType(), ['label' => 'My label', 'data_provider' => function ($data) {
         return ['key' => $data->key];
     }, 'uri_scheme' => '/entity/{key}/edit']);
     $datagrid = new Datagrid('grid', [$column]);
     $object = new \stdClass();
     $object->key = ' foo ';
     $datagrid->setData([1 => $object]);
     $view = $datagrid->createView();
     $view = $column->createHeaderView($view);
     $this->assertSame('My label', $view->label);
 }
 public function testPassLabelAndOtherToView()
 {
     $column = $this->factory->createColumn('id', $this->getTestedType(), ['label' => 'My label', 'label_attr' => ['class' => 'info'], 'header_attr' => ['class' => 'striped'], 'cell_attr' => ['class' => 'striped'], 'label_translation_domain' => 'messages', 'data_provider' => function ($data) {
         return $data->key;
     }]);
     $datagrid = new Datagrid('my_grid', [$column]);
     $object = new \stdClass();
     $object->key = new \DateTime();
     $datagrid->setData([1 => $object]);
     $view = $datagrid->createView();
     $view = $column->createHeaderView($view);
     $this->assertSame('My label', $view->label);
     self::assertViewVarsEquals(['label_attr' => ['class' => 'info'], 'header_attr' => ['class' => 'striped'], 'cell_attr' => ['class' => 'striped'], 'label_translation_domain' => 'messages', 'unique_block_prefix' => '_my_grid_id', 'block_prefixes' => ['column', 'date_time', '_my_grid_id']], $view);
 }
 protected function assertCellValueNotEquals($expectedValue, $data, array $options = [], $idx = 1)
 {
     $column = $this->factory->createColumn('id', $this->getTestedType(), array_merge(['label' => 'My label', 'data_provider' => !is_array($data) ? function ($data) {
         return $data->key;
     } : null], $options));
     $datagrid = new Datagrid('grid', [$column]);
     if (!is_array($data)) {
         $object = new \stdClass();
         $object->key = $data;
         $data = [$idx => $object];
     }
     $datagrid->setData($data);
     $datagridView = $datagrid->createView();
     $view = $column->createCellView($datagridView->columns['id'], $data[$idx], $idx);
     $this->assertNotEquals($expectedValue, $view->value);
 }
Beispiel #6
0
 /** @test */
 public function configures_batch_element_name_and_id()
 {
     $object1 = new \stdClass();
     $object1->key = 'b2-3b-fa-31-31:fb';
     $object2 = new \stdClass();
     $object2->key = '12-3b-fa-31-31-fb';
     $data = [1 => $object1, 2 => $object2];
     $column = $this->factory->createColumn('key', BatchType::class);
     $datagrid = new Datagrid('my_grid', [$column]);
     $datagrid->setData($data);
     $datagridView = $datagrid->createView();
     $view1 = $column->createCellView($datagridView->columns['key'], $object1, 1);
     $view2 = $column->createCellView($datagridView->columns['key'], $object2, 2);
     self::assertEquals($this->normalizeViewExpectation(['row' => 1, 'datagrid_name' => 'my_grid', 'selection_name' => 'my_grid[key][]', 'selection_id' => 'my_grid-key__b2-3b-fa-31-31-fb'], $view1), $view1->vars);
     self::assertEquals($this->normalizeViewExpectation(['row' => 2, 'datagrid_name' => 'my_grid', 'selection_name' => 'my_grid[key][]', 'selection_id' => 'my_grid-key__12-3b-fa-31-31-fb'], $view2), $view2->vars);
 }
Beispiel #7
0
 public function testDifferentCurrencyByMapping()
 {
     \Locale::setDefault('de_DE');
     $column = $this->factory->createColumn('price', $this->getTestedType(), ['currency' => 'EUR']);
     $column2 = $this->factory->createColumn('price2', $this->getTestedType(), ['data_provider' => function ($value) {
         return ['currency' => $value->currency, 'amount' => $value->price2];
     }]);
     $datagrid = new Datagrid('grid', [$column, $column2]);
     $object = new \stdClass();
     $object->price = '1.23';
     $object->price2 = '1.23';
     $object->currency = null;
     $object2 = new \stdClass();
     $object2->price = '1.23';
     $object2->price2 = '1.23';
     $object2->currency = 'GBP';
     $data = [1 => $object, 2 => $object2];
     $datagrid->setData($data);
     $datagridView = $datagrid->createView();
     $view = $column->createCellView($datagridView->columns['price'], $data[1], 1);
     $this->assertSame('1,23 €', $view->value);
     $view = $column2->createCellView($datagridView->columns['price'], $data[2], 1);
     $this->assertSame('1,23 £', $view->value);
 }
 /** @test */
 public function url_or_uri_schema_must_be_provided()
 {
     $column = $this->factory->createColumn('id', $this->getTestedType(), ['url' => null, 'uri_scheme' => null, 'content' => 'edit', 'label' => 'My label', 'data_provider' => function ($data) {
         return ['id' => $data->id, 'username' => $data->name];
     }]);
     $datagrid = new Datagrid('grid', [$column]);
     $object = new \stdClass();
     $object->id = 50;
     $object->name = 'sheldon';
     $data = [1 => $object];
     $datagrid->setData($data);
     $this->expectException(InvalidConfigurationException::class);
     $this->expectExceptionMessage('Action needs an "url" or "uri_scheme" but none is provided.');
     $datagrid->createView();
 }
 public function testInvalidPropertyPathProviderFailsWithHelpfulMessage()
 {
     $object = new \stdClass();
     $object->key = 'foo';
     $object->key2 = 'bar';
     $data = [1 => $object];
     $column = $this->factory->createColumn('key2', ColumnType::class, ['data_provider' => '][key3']);
     $datagrid = new Datagrid('grid', [$column]);
     $datagrid->setData($data);
     $this->expectException(DataProviderException::class);
     $this->expectExceptionMessage('Invalid property-path for column "key2" with message: Could not parse property path "][key3"');
     $datagrid->createView();
 }