Skip to content

Commit 2d0f4af

Browse files
Added test cases covering Renderer:columnOptions
1 parent 72668ce commit 2d0f4af

File tree

5 files changed

+282
-0
lines changed

5 files changed

+282
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/**
4+
* Spiral Framework.
5+
*
6+
* @license MIT
7+
* @author Anton Titov (Wolfy-J)
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace Cycle\Migrations\Tests\MySQL;
13+
14+
/**
15+
* @group driver
16+
* @group driver-mysql
17+
*/
18+
class RendererTest extends \Cycle\Migrations\Tests\RendererTest
19+
{
20+
public const DRIVER = 'mysql';
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/**
4+
* Spiral Framework.
5+
*
6+
* @license MIT
7+
* @author Anton Titov (Wolfy-J)
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace Cycle\Migrations\Tests\Postgres;
13+
14+
/**
15+
* @group driver
16+
* @group driver-postgres
17+
*/
18+
class RendererTest extends \Cycle\Migrations\Tests\RendererTest
19+
{
20+
public const DRIVER = 'postgres';
21+
}

tests/Migrations/RendererTest.php

Lines changed: 198 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
<?php
2+
3+
/**
4+
* Spiral Framework.
5+
*
6+
* @license MIT
7+
* @author Anton Titov (Wolfy-J)
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace Cycle\Migrations\Tests;
13+
14+
use Cycle\Database\Schema\AbstractColumn;
15+
use Cycle\Migrations\Atomizer\Renderer;
16+
17+
abstract class RendererTest extends BaseTest
18+
{
19+
public function testColumnOptionsForEnumColumn(): void
20+
{
21+
$column = $this->createMock(AbstractColumn::class);
22+
$column->method('isNullable')->willReturn(true);
23+
$column->method('getDefaultValue')->willReturn('one');
24+
$column->method('getAttributes')->willReturn([]);
25+
$column->method('getAbstractType')->willReturn('enum');
26+
$column->method('getEnumValues')->willReturn(['one', 'two', 'three']);
27+
28+
$renderer = new Renderer();
29+
30+
$method = new \ReflectionMethod($renderer, 'columnOptions');
31+
$method->setAccessible(true);
32+
33+
$options = $method->invoke($renderer, $column);
34+
35+
$this->assertArrayHasKey('nullable', $options);
36+
$this->assertArrayHasKey('defaultValue', $options);
37+
$this->assertArrayHasKey('values', $options);
38+
$this->assertTrue($options['nullable']);
39+
$this->assertSame('one', $options['defaultValue']);
40+
$this->assertSame(['one', 'two', 'three'], $options['values']);
41+
}
42+
43+
public function testColumnOptionsWithDateTimeNow(): void
44+
{
45+
$column = $this->createMock(AbstractColumn::class);
46+
$column->method('isNullable')->willReturn(false);
47+
$column->method('getDefaultValue')->willReturn(AbstractColumn::DATETIME_NOW);
48+
$column->method('getAttributes')->willReturn([]);
49+
$column->method('getAbstractType')->willReturn('datetime');
50+
51+
$renderer = new Renderer();
52+
53+
$method = new \ReflectionMethod($renderer, 'columnOptions');
54+
$method->setAccessible(true);
55+
56+
$options = $method->invoke($renderer, $column);
57+
58+
$this->assertArrayHasKey('nullable', $options);
59+
$this->assertArrayHasKey('defaultValue', $options);
60+
$this->assertFalse($options['nullable']);
61+
$this->assertSame(AbstractColumn::DATETIME_NOW, $options['defaultValue']);
62+
}
63+
64+
public function testColumnOptionsSizeNotZeroIsAccepted(): void
65+
{
66+
$column = $this->createMock(AbstractColumn::class);
67+
$column->method('isNullable')->willReturn(true);
68+
$column->method('getDefaultValue')->willReturn(null);
69+
$column->method('getAttributes')->willReturn(['size' => 11]);
70+
$column->method('getAbstractType')->willReturn('integer');
71+
72+
$renderer = new Renderer();
73+
74+
$method = new \ReflectionMethod($renderer, 'columnOptions');
75+
$method->setAccessible(true);
76+
77+
$options = $method->invoke($renderer, $column);
78+
79+
$this->assertArrayHasKey('nullable', $options);
80+
$this->assertArrayHasKey('defaultValue', $options);
81+
$this->assertArrayHasKey('size', $options);
82+
$this->assertTrue($options['nullable']);
83+
$this->assertNull($options['defaultValue']);
84+
$this->assertSame(11, $options['size']);
85+
}
86+
87+
public function testColumnOptionsSizeZeroIsIgnored(): void
88+
{
89+
$column = $this->createMock(AbstractColumn::class);
90+
$column->method('isNullable')->willReturn(true);
91+
$column->method('getDefaultValue')->willReturn(null);
92+
$column->method('getAttributes')->willReturn(['size' => 0]);
93+
$column->method('getAbstractType')->willReturn('integer');
94+
95+
$renderer = new Renderer();
96+
97+
$method = new \ReflectionMethod($renderer, 'columnOptions');
98+
$method->setAccessible(true);
99+
100+
$options = $method->invoke($renderer, $column);
101+
102+
$this->assertArrayHasKey('nullable', $options);
103+
$this->assertArrayHasKey('defaultValue', $options);
104+
$this->assertArrayNotHasKey('size', $options);
105+
$this->assertTrue($options['nullable']);
106+
$this->assertNull($options['defaultValue']);
107+
}
108+
109+
public function testColumnOptionsAfterNotEmptyStringIsAccepted(): void
110+
{
111+
$column = $this->createMock(AbstractColumn::class);
112+
$column->method('isNullable')->willReturn(true);
113+
$column->method('getDefaultValue')->willReturn(null);
114+
$column->method('getAttributes')->willReturn(['after' => 'email']);
115+
$column->method('getAbstractType')->willReturn('integer');
116+
117+
$renderer = new Renderer();
118+
119+
$method = new \ReflectionMethod($renderer, 'columnOptions');
120+
$method->setAccessible(true);
121+
122+
$options = $method->invoke($renderer, $column);
123+
124+
$this->assertArrayHasKey('nullable', $options);
125+
$this->assertArrayHasKey('defaultValue', $options);
126+
$this->assertArrayHasKey('after', $options);
127+
$this->assertTrue($options['nullable']);
128+
$this->assertNull($options['defaultValue']);
129+
$this->assertSame('email', $options['after']);
130+
}
131+
132+
public function testColumnOptionsAfterEmptyStringIsIgnored(): void
133+
{
134+
$column = $this->createMock(AbstractColumn::class);
135+
$column->method('isNullable')->willReturn(true);
136+
$column->method('getDefaultValue')->willReturn(null);
137+
$column->method('getAttributes')->willReturn(['after' => '']);
138+
$column->method('getAbstractType')->willReturn('integer');
139+
140+
$renderer = new Renderer();
141+
142+
$method = new \ReflectionMethod($renderer, 'columnOptions');
143+
$method->setAccessible(true);
144+
145+
$options = $method->invoke($renderer, $column);
146+
147+
$this->assertArrayHasKey('nullable', $options);
148+
$this->assertArrayHasKey('defaultValue', $options);
149+
$this->assertArrayNotHasKey('after', $options);
150+
$this->assertTrue($options['nullable']);
151+
$this->assertNull($options['defaultValue']);
152+
}
153+
154+
public function testColumnOptionsFirstNotFalseIsAccepted(): void
155+
{
156+
$column = $this->createMock(AbstractColumn::class);
157+
$column->method('isNullable')->willReturn(true);
158+
$column->method('getDefaultValue')->willReturn(null);
159+
$column->method('getAttributes')->willReturn(['first' => true]);
160+
$column->method('getAbstractType')->willReturn('integer');
161+
162+
$renderer = new Renderer();
163+
164+
$method = new \ReflectionMethod($renderer, 'columnOptions');
165+
$method->setAccessible(true);
166+
167+
$options = $method->invoke($renderer, $column);
168+
169+
$this->assertArrayHasKey('nullable', $options);
170+
$this->assertArrayHasKey('defaultValue', $options);
171+
$this->assertArrayHasKey('first', $options);
172+
$this->assertTrue($options['nullable']);
173+
$this->assertNull($options['defaultValue']);
174+
$this->assertTrue($options['first']);
175+
}
176+
177+
public function testColumnOptionsFirstFalseIsIgnored(): void
178+
{
179+
$column = $this->createMock(AbstractColumn::class);
180+
$column->method('isNullable')->willReturn(true);
181+
$column->method('getDefaultValue')->willReturn(null);
182+
$column->method('getAttributes')->willReturn(['first' => false]);
183+
$column->method('getAbstractType')->willReturn('integer');
184+
185+
$renderer = new Renderer();
186+
187+
$method = new \ReflectionMethod($renderer, 'columnOptions');
188+
$method->setAccessible(true);
189+
190+
$options = $method->invoke($renderer, $column);
191+
192+
$this->assertArrayHasKey('nullable', $options);
193+
$this->assertArrayHasKey('defaultValue', $options);
194+
$this->assertArrayNotHasKey('first', $options);
195+
$this->assertTrue($options['nullable']);
196+
$this->assertNull($options['defaultValue']);
197+
}
198+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/**
4+
* Spiral Framework.
5+
*
6+
* @license MIT
7+
* @author Anton Titov (Wolfy-J)
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace Cycle\Migrations\Tests\SQLServer;
13+
14+
/**
15+
* @group driver
16+
* @group driver-sqlserver
17+
*/
18+
class RendererTest extends \Cycle\Migrations\Tests\RendererTest
19+
{
20+
public const DRIVER = 'sqlserver';
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
/**
4+
* Spiral Framework.
5+
*
6+
* @license MIT
7+
* @author Anton Titov (Wolfy-J)
8+
*/
9+
10+
declare(strict_types=1);
11+
12+
namespace Cycle\Migrations\Tests\SQLite;
13+
14+
/**
15+
* @group driver
16+
* @group driver-sqlite
17+
*/
18+
class RendererTest extends \Cycle\Migrations\Tests\RendererTest
19+
{
20+
public const DRIVER = 'sqlite';
21+
}

0 commit comments

Comments
 (0)