@@ 34-190 (lines=157) @@ | ||
31 | * |
|
32 | * @author Ivannis Suárez Jerez <[email protected]> |
|
33 | */ |
|
34 | class DocumentQueryRepositoryTests extends QueryRepositoryTestCase |
|
35 | { |
|
36 | use DocumentManagerTestCaseTrait; |
|
37 | ||
38 | /** |
|
39 | * {@inheritdoc} |
|
40 | */ |
|
41 | protected function randomValue() |
|
42 | { |
|
43 | $user = new User(UserId::next(), 'User-'.\rand(1, 100), \rand(1, 100), $this->faker->email); |
|
44 | ||
45 | $user->setFax(new Phonenumber($this->faker->phoneNumber)); |
|
46 | foreach (range(1, 3) as $key) { |
|
47 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
48 | } |
|
49 | ||
50 | $user->setMainRole($this->faker->randomElement(Role::values())); |
|
51 | foreach (range(1, 3) as $key) { |
|
52 | $user->addRole($this->faker->randomElement(Role::values())); |
|
53 | } |
|
54 | ||
55 | $user->addAddress( |
|
56 | new Address( |
|
57 | AddressId::next(), |
|
58 | 'Home', |
|
59 | $this->faker->streetAddress, |
|
60 | $this->faker->postcode, |
|
61 | $this->faker->city, |
|
62 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
63 | ) |
|
64 | ); |
|
65 | ||
66 | $user->addAddress( |
|
67 | new Address( |
|
68 | AddressId::next(), |
|
69 | 'Work', |
|
70 | $this->faker->streetAddress, |
|
71 | $this->faker->postcode, |
|
72 | $this->faker->city, |
|
73 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
74 | ) |
|
75 | ); |
|
76 | ||
77 | $user->setLanguageLevel('english', $this->faker->randomDigit); |
|
78 | $user->setLanguageLevel('spanish', $this->faker->randomDigit); |
|
79 | $user->setLanguageLevel('french', $this->faker->randomDigit); |
|
80 | ||
81 | return $user; |
|
82 | } |
|
83 | ||
84 | /** |
|
85 | * {@inheritdoc} |
|
86 | */ |
|
87 | protected function uniqueValue() |
|
88 | { |
|
89 | $user = new User(UserId::next(), 'Methuselah', 1000, $this->faker->email); |
|
90 | ||
91 | $user->setFax(new Phonenumber('+34-208-1234567')); |
|
92 | $user->addPhonenumber(new Phonenumber('+34 685 165 267')); |
|
93 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
94 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
95 | ||
96 | $user->setMainRole(Role::ROLE_ADMIN()); |
|
97 | $user->addRole(Role::ROLE_ADMIN()); |
|
98 | $user->addRole(Role::ROLE_ADMIN()); |
|
99 | $user->addRole(Role::ROLE_USER()); |
|
100 | ||
101 | $user->setLanguageLevel('english', 10); |
|
102 | $user->setLanguageLevel('spanish', 7); |
|
103 | $user->setLanguageLevel('french', 2.5); |
|
104 | ||
105 | $user->addAddress( |
|
106 | new Address( |
|
107 | AddressId::next(), |
|
108 | 'Home', |
|
109 | $this->faker->streetAddress, |
|
110 | $this->faker->postcode, |
|
111 | $this->faker->city, |
|
112 | Coordinate::fromLatLng(41.390205, 2.154007) |
|
113 | ) |
|
114 | ); |
|
115 | ||
116 | $user->addAddress( |
|
117 | new Address( |
|
118 | AddressId::next(), |
|
119 | 'Work', |
|
120 | $this->faker->streetAddress, |
|
121 | $this->faker->postcode, |
|
122 | $this->faker->city, |
|
123 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
124 | ) |
|
125 | ); |
|
126 | ||
127 | return $user; |
|
128 | } |
|
129 | ||
130 | /** |
|
131 | * {@inheritdoc} |
|
132 | */ |
|
133 | protected function emptyRepository() |
|
134 | { |
|
135 | return new DocumentQueryRepository($this->dm()->getRepository(User::class), $this->documentDataSourceFactory()); |
|
136 | } |
|
137 | ||
138 | /** |
|
139 | * {@inheritdoc} |
|
140 | */ |
|
141 | protected function comparator() |
|
142 | { |
|
143 | return Comparator::by(Criteria::property('age'), Direction::DESC()); |
|
144 | } |
|
145 | ||
146 | /** |
|
147 | * Test get. |
|
148 | */ |
|
149 | public function testGet() |
|
150 | { |
|
151 | parent::testGet(); |
|
152 | ||
153 | $this |
|
154 | ->given($repository = $this->randomRepository()) |
|
155 | ->and($unique = $this->uniqueValue()) |
|
156 | ->and($friend = new User(UserId::next(), 'Ivan', 32, $this->faker->email)) |
|
157 | ->and($friend1 = new User(UserId::next(), 'Karel', 32, $this->faker->email)) |
|
158 | ->and($repository->persist($friend)) |
|
159 | ->and($repository->persist($friend1)) |
|
160 | ->and($unique->addFriend($friend)) |
|
161 | ->and($unique->addFriend($friend1)) |
|
162 | ->and($repository->persist($unique)) |
|
163 | ->when( |
|
164 | /** @var User $object */ |
|
165 | $object = $repository->get($unique->id()) |
|
166 | ) |
|
167 | ->then() |
|
168 | ->object($object->fullName()) |
|
169 | ->isEqualTo(StringLiteral::fromNative('Methuselah')) |
|
170 | ->integer($object->languagesLevel()->get('english')) |
|
171 | ->isEqualTo(10) |
|
172 | ->boolean($object->mainRole()->is(Role::ROLE_ADMIN)) |
|
173 | ->isTrue() |
|
174 | ->array($object->roles()->toArray()) |
|
175 | ->contains(Role::ROLE_ADMIN) |
|
176 | ->array($object->phonenumbers()->toArray()) |
|
177 | ->contains('+34 685 165 267') |
|
178 | ->string($object->fax()->number()) |
|
179 | ->isEqualTo('+34-208-1234567') |
|
180 | ->array($object->addresses()->toArray()) |
|
181 | ->object[0]->isInstanceOf(Address::class) |
|
182 | ->string($object->addresses()->toArray()[0]->name()) |
|
183 | ->isEqualTo('Home') |
|
184 | ->object($object->addresses()->toArray()[0]->coordinate()) |
|
185 | ->isEqualTo(Coordinate::fromLatLng(41.390205, 2.154007)) |
|
186 | ->integer($object->friends()->count()) |
|
187 | ->isEqualTo(2) |
|
188 | ; |
|
189 | } |
|
190 | } |
|
191 |
@@ 35-191 (lines=157) @@ | ||
32 | * |
|
33 | * @author Karel Osorio Ramírez <[email protected]> |
|
34 | */ |
|
35 | class DocumentRepositoryTests extends RepositoryTestCase |
|
36 | { |
|
37 | use DocumentManagerTestCaseTrait; |
|
38 | ||
39 | /** |
|
40 | * {@inheritdoc} |
|
41 | */ |
|
42 | protected function randomValue() |
|
43 | { |
|
44 | $user = new User(UserId::next(), 'User-'.\rand(1, 100), \rand(1, 100), $this->faker->email); |
|
45 | ||
46 | $user->setFax(new Phonenumber($this->faker->phoneNumber)); |
|
47 | foreach (range(1, 3) as $key) { |
|
48 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
49 | } |
|
50 | ||
51 | $user->setMainRole($this->faker->randomElement(Role::values())); |
|
52 | foreach (range(1, 3) as $key) { |
|
53 | $user->addRole($this->faker->randomElement(Role::values())); |
|
54 | } |
|
55 | ||
56 | $user->addAddress( |
|
57 | new Address( |
|
58 | AddressId::next(), |
|
59 | 'Home', |
|
60 | $this->faker->streetAddress, |
|
61 | $this->faker->postcode, |
|
62 | $this->faker->city, |
|
63 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
64 | ) |
|
65 | ); |
|
66 | ||
67 | $user->addAddress( |
|
68 | new Address( |
|
69 | AddressId::next(), |
|
70 | 'Work', |
|
71 | $this->faker->streetAddress, |
|
72 | $this->faker->postcode, |
|
73 | $this->faker->city, |
|
74 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
75 | ) |
|
76 | ); |
|
77 | ||
78 | $user->setLanguageLevel('english', $this->faker->randomDigit); |
|
79 | $user->setLanguageLevel('spanish', $this->faker->randomDigit); |
|
80 | $user->setLanguageLevel('french', $this->faker->randomDigit); |
|
81 | ||
82 | return $user; |
|
83 | } |
|
84 | ||
85 | /** |
|
86 | * {@inheritdoc} |
|
87 | */ |
|
88 | protected function uniqueValue() |
|
89 | { |
|
90 | $user = new User(UserId::next(), 'Methuselah', 1000, $this->faker->email); |
|
91 | ||
92 | $user->setFax(new Phonenumber('+34-208-1234567')); |
|
93 | $user->addPhonenumber(new Phonenumber('+34 685 165 267')); |
|
94 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
95 | $user->addPhonenumber(new Phonenumber($this->faker->phoneNumber)); |
|
96 | ||
97 | $user->setMainRole(Role::ROLE_ADMIN()); |
|
98 | $user->addRole(Role::ROLE_ADMIN()); |
|
99 | $user->addRole(Role::ROLE_ADMIN()); |
|
100 | $user->addRole(Role::ROLE_USER()); |
|
101 | ||
102 | $user->setLanguageLevel('english', 10); |
|
103 | $user->setLanguageLevel('spanish', 7); |
|
104 | $user->setLanguageLevel('french', 2.5); |
|
105 | ||
106 | $user->addAddress( |
|
107 | new Address( |
|
108 | AddressId::next(), |
|
109 | 'Home', |
|
110 | $this->faker->streetAddress, |
|
111 | $this->faker->postcode, |
|
112 | $this->faker->city, |
|
113 | Coordinate::fromLatLng(41.390205, 2.154007) |
|
114 | ) |
|
115 | ); |
|
116 | ||
117 | $user->addAddress( |
|
118 | new Address( |
|
119 | AddressId::next(), |
|
120 | 'Work', |
|
121 | $this->faker->streetAddress, |
|
122 | $this->faker->postcode, |
|
123 | $this->faker->city, |
|
124 | Coordinate::fromLatLng($this->faker->latitude, $this->faker->longitude) |
|
125 | ) |
|
126 | ); |
|
127 | ||
128 | return $user; |
|
129 | } |
|
130 | ||
131 | /** |
|
132 | * {@inheritdoc} |
|
133 | */ |
|
134 | protected function emptyRepository() |
|
135 | { |
|
136 | return new DocumentRepository($this->dm()->getRepository(User::class), $this->documentDataSourceFactory()); |
|
137 | } |
|
138 | ||
139 | /** |
|
140 | * {@inheritdoc} |
|
141 | */ |
|
142 | protected function comparator() |
|
143 | { |
|
144 | return Comparator::by(Criteria::property('age'), Direction::DESC()); |
|
145 | } |
|
146 | ||
147 | /** |
|
148 | * Test get. |
|
149 | */ |
|
150 | public function testGet() |
|
151 | { |
|
152 | parent::testGet(); |
|
153 | ||
154 | $this |
|
155 | ->given($repository = $this->randomRepository()) |
|
156 | ->and($unique = $this->uniqueValue()) |
|
157 | ->and($friend = new User(UserId::next(), 'Ivan', 32, $this->faker->email)) |
|
158 | ->and($friend1 = new User(UserId::next(), 'Karel', 32, $this->faker->email)) |
|
159 | ->and($repository->persist($friend)) |
|
160 | ->and($repository->persist($friend1)) |
|
161 | ->and($unique->addFriend($friend)) |
|
162 | ->and($unique->addFriend($friend1)) |
|
163 | ->and($repository->persist($unique)) |
|
164 | ->when( |
|
165 | /** @var User $object */ |
|
166 | $object = $repository->get($unique->id()) |
|
167 | ) |
|
168 | ->then() |
|
169 | ->object($object->fullName()) |
|
170 | ->isEqualTo(StringLiteral::fromNative('Methuselah')) |
|
171 | ->integer($object->languagesLevel()->get('english')) |
|
172 | ->isEqualTo(10) |
|
173 | ->boolean($object->mainRole()->is(Role::ROLE_ADMIN)) |
|
174 | ->isTrue() |
|
175 | ->array($object->roles()->toArray()) |
|
176 | ->contains(Role::ROLE_ADMIN) |
|
177 | ->array($object->phonenumbers()->toArray()) |
|
178 | ->contains('+34 685 165 267') |
|
179 | ->string($object->fax()->number()) |
|
180 | ->isEqualTo('+34-208-1234567') |
|
181 | ->array($object->addresses()->toArray()) |
|
182 | ->object[0]->isInstanceOf(Address::class) |
|
183 | ->string($object->addresses()->toArray()[0]->name()) |
|
184 | ->isEqualTo('Home') |
|
185 | ->object($object->addresses()->toArray()[0]->coordinate()) |
|
186 | ->isEqualTo(Coordinate::fromLatLng(41.390205, 2.154007)) |
|
187 | ->integer($object->friends()->count()) |
|
188 | ->isEqualTo(2) |
|
189 | ; |
|
190 | } |
|
191 | } |
|
192 |