Skip to content

Commit a221080

Browse files
committed
Add tests for StaticEntityBuilder
1 parent 302f6de commit a221080

File tree

1 file changed

+171
-0
lines changed

1 file changed

+171
-0
lines changed

tests/StaticEntityBuilderTest.php

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
<?php
2+
3+
namespace Byscripts\StaticEntity\Tests;
4+
5+
use Byscripts\StaticEntity\StaticEntity;
6+
use Byscripts\StaticEntity\StaticEntityBuilder;
7+
use Byscripts\StaticEntity\Tests\Fixtures\Civility;
8+
use Byscripts\StaticEntity\Tests\Fixtures\InvalidData;
9+
use Byscripts\StaticEntity\Tests\Fixtures\InvalidDataSet;
10+
use Byscripts\StaticEntity\Tests\Fixtures\MissingProperty;
11+
12+
/**
13+
* Class StaticEntityTest
14+
*
15+
* @author Thierry Goettelmann <thierry@byscripts.info>
16+
*/
17+
class StaticEntityBuilderTest extends \PHPUnit_Framework_TestCase
18+
{
19+
public function testInstance()
20+
{
21+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
22+
23+
/** @var $civility Civility */
24+
$civility = $builder->get('mr');
25+
26+
$this->assertInstanceOf('\Byscripts\StaticEntity\Tests\Fixtures\Civility', $civility);
27+
$this->assertEquals('Mister', $civility->getName());
28+
$this->assertEquals('mr', $civility->getId());
29+
$this->assertEquals('Mr', $civility->getShortName());
30+
}
31+
32+
public function testNotFound()
33+
{
34+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
35+
$civility = $builder->get('not-exists');
36+
37+
$this->assertNull($civility);
38+
}
39+
40+
public function testSameInstances()
41+
{
42+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
43+
44+
$civility1 = $builder->get('mr');
45+
$civility2 = $builder->get('mr');
46+
47+
$this->assertSame($civility1, $civility2);
48+
}
49+
50+
/**
51+
* @expectedException \Exception
52+
* @expectedExceptionMessage must returns an array
53+
*/
54+
public function testInvalidDataSet()
55+
{
56+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\InvalidDataSet');
57+
$builder->get('foo');
58+
}
59+
60+
/**
61+
* @expectedException \Exception
62+
* @expectedExceptionMessage Data at index
63+
*/
64+
public function testInvalidData()
65+
{
66+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\InvalidData');
67+
$builder->get('foo');
68+
}
69+
70+
/**
71+
* @expectedException \Exception
72+
* @expectedExceptionMessage not-exists does not exist
73+
*/
74+
public function testMissingProperty()
75+
{
76+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\MissingProperty');
77+
$builder->get('foo');
78+
}
79+
80+
public function testExists()
81+
{
82+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
83+
84+
$this->assertTrue(
85+
$builder->hasId('mr')
86+
);
87+
88+
$this->assertFalse(
89+
$builder->hasId('non-existent-id')
90+
);
91+
}
92+
93+
public function testToId()
94+
{
95+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
96+
97+
$civility = $builder->get('mr');
98+
99+
$this->assertEquals('mr', $builder->convertToId($civility));
100+
$this->assertEquals('mr', $builder->convertToId('mr'));
101+
102+
}
103+
104+
/**
105+
* @expectedException \Exception
106+
* @expectedExceptionMessage Unable to convert
107+
*/
108+
public function testBadToId()
109+
{
110+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
111+
$builder->convertToId('non-existent-id');
112+
}
113+
114+
public function testGetAll()
115+
{
116+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
117+
118+
/** @var $all Civility[] */
119+
$all = $builder->getAll();
120+
121+
$this->assertArrayHasKey('mr', $all);
122+
$this->assertArrayHasKey('mrs', $all);
123+
124+
$this->assertInstanceOf('\Byscripts\StaticEntity\Tests\Fixtures\Civility', $all['mr']);
125+
$this->assertInstanceOf('\Byscripts\StaticEntity\Tests\Fixtures\Civility', $all['mrs']);
126+
127+
$this->assertEquals('Mister', $all['mr']->getName());
128+
$this->assertEquals('Misses', $all['mrs']->getName());
129+
}
130+
131+
public function testGetAllTwice()
132+
{
133+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
134+
135+
$all1 = $builder->getAll();
136+
$all2 = $builder->getAll();
137+
138+
$this->assertSame($all1, $all2);
139+
}
140+
141+
public function testGetAssoc()
142+
{
143+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
144+
$assoc = $builder->getAssociativeArray('name');
145+
146+
$this->assertArrayHasKey('mr', $assoc);
147+
$this->assertArrayHasKey('mrs', $assoc);
148+
149+
$this->assertEquals('Mister', $assoc['mr']);
150+
$this->assertEquals('Misses', $assoc['mrs']);
151+
152+
$assoc = $builder->getAssociativeArray('shortName');
153+
154+
$this->assertArrayHasKey('mr', $assoc);
155+
$this->assertArrayHasKey('mrs', $assoc);
156+
157+
$this->assertEquals('Mr', $assoc['mr']);
158+
$this->assertEquals('Mrs', $assoc['mrs']);
159+
}
160+
161+
public function testIs()
162+
{
163+
$builder = new StaticEntityBuilder('\Byscripts\StaticEntity\Tests\Fixtures\Civility');
164+
165+
/** @var $civility Civility */
166+
$civility = $builder->get('mr');
167+
168+
$this->assertTrue($civility->is('mr'));
169+
$this->assertFalse($civility->is('mrs'));
170+
}
171+
}

0 commit comments

Comments
 (0)