assertInstanceOf( Table::class, new Table( 'Foo' ) ); } public function testIsCoreTable() { $instance = new Table( 'Foo' ); $this->assertTrue( $instance->isCoreTable() ); $instance = new Table( 'Bar', false ); $this->assertFalse( $instance->isCoreTable() ); } public function testAddColumn() { $instance = new Table( 'Foo' ); $instance->addColumn( 'b', 'integer' ); $expected = [ 'fields' => [ 'b' => 'integer' ] ]; $this->assertEquals( $expected, $instance->getAttributes() ); } public function testAddIndex() { $instance = new Table( 'Foo' ); $instance->addIndex( 'bar' ); $expected = [ 'indices' => [ 'bar' ] ]; $this->assertEquals( $expected, $instance->getAttributes() ); $this->assertIsString( $instance->getHash() ); } public function testAddIndexWithKey() { $instance = new Table( 'Foo' ); $instance->addIndex( [ 'foobar' ], 'bar' ); $expected = [ 'indices' => [ 'bar' => [ 'foobar' ] ] ]; $this->assertEquals( $expected, $instance->getAttributes() ); } public function testSetPrimaryKey() { $instance = new Table( 'Foo' ); $instance->setPrimaryKey( 'abc,def' ); $expected = [ 'indices' => [ 'pri' => [ 'abc,def', 'PRIMARY KEY' ] ] ]; $this->assertEquals( $expected, $instance->getAttributes() ); } public function testAddIndexWithSpaceThrowsException() { $instance = new Table( 'Foo' ); $this->expectException( 'RuntimeException' ); $instance->addIndex( 'foobar, bar' ); } public function testAddOption() { $instance = new Table( 'Foo' ); $instance->addOption( 'bar', [ 'foobar' ] ); $expected = [ 'bar' => [ 'foobar' ] ]; $this->assertEquals( $expected, $instance->getAttributes() ); $this->assertEquals( [ 'foobar' ], $instance->get( 'bar' ) ); } public function testGetOnUnregsiteredKeyThrowsException() { $instance = new Table( 'Foo' ); $this->expectException( 'RuntimeException' ); $instance->get( 'bar' ); } /** * @dataProvider invalidOptionsProvider */ public function testAddOptionOnReservedOptionKeyThrowsException( $key ) { $instance = new Table( 'Foo' ); $this->expectException( 'RuntimeException' ); $instance->addOption( $key, [] ); } public function invalidOptionsProvider() { $provider[] = [ 'fields' ]; $provider[] = [ 'indices' ]; $provider[] = [ 'defaults' ]; return $provider; } }