|
3 | 3 | namespace ProAI\Versioning\Tests\Unit; |
4 | 4 |
|
5 | 5 | use Carbon\Carbon; |
| 6 | +use ProAI\Versioning\Tests\Models\Comment; |
6 | 7 | use ProAI\Versioning\Tests\Models\User; |
7 | 8 | use ProAI\Versioning\Tests\TestCase; |
8 | 9 |
|
@@ -159,30 +160,48 @@ public function itWillUpdateTheLatestVersionWhenSaving(): void { |
159 | 160 | * @test |
160 | 161 | */ |
161 | 162 | public function itWillOnlyVersionVersionedAttributes(): void { |
162 | | - /** @var User $model */ |
163 | | - $model = factory(User::class)->create([]); |
164 | | - $email = $model->email; |
| 163 | + /** @var Comment $model */ |
| 164 | + $model = factory(Comment::class)->create( |
| 165 | + [ |
| 166 | + 'title' => 'Some kind of lorem impsum should go here', |
| 167 | + ] |
| 168 | + ); |
| 169 | + $originalContent = $model->content; |
| 170 | + |
| 171 | + $newContent = 'I approve of this comment.'; |
| 172 | + $model->content = $newContent; |
| 173 | + $model->save(); |
165 | 174 |
|
166 | | - $model->email = '[email protected]'; |
167 | | - $model->username = 'RickSanchez'; |
| 175 | + $newTitle = 'Not lorem ipsum'; |
| 176 | + $model->title = $newTitle; |
168 | 177 | $model->save(); |
169 | 178 |
|
170 | 179 | $this->assertDatabaseHas($model->getTable(), [ |
171 | | - 'username' => 'RickSanchez', |
| 180 | + 'title' => $newTitle, |
172 | 181 | ]); |
173 | 182 |
|
174 | 183 | $this->assertDatabaseHas($model->getVersionTable(), [ |
175 | 184 | 'ref_id' => $model->id, |
176 | 185 | 'version' => 1, |
177 | | - 'email' => $email, |
178 | | - 'city' => $model->city |
| 186 | + 'content' => $originalContent, |
179 | 187 | ]); |
180 | 188 |
|
181 | 189 | $this->assertDatabaseHas($model->getVersionTable(), [ |
182 | 190 | 'ref_id' => $model->id, |
183 | 191 | 'version' => 2, |
184 | | - 'email' => $model->email, |
185 | | - 'city' => $model->city |
| 192 | + 'content' => $newContent, |
| 193 | + ]); |
| 194 | + |
| 195 | + // Latest version should be 2. |
| 196 | + $this->assertDatabaseHas($model->getTable(), [ |
| 197 | + 'title' => $newTitle, |
| 198 | + 'latest_version' => 2, |
| 199 | + ]); |
| 200 | + |
| 201 | + // A 3rd version should not exist. |
| 202 | + $this->assertDatabaseMissing($model->getVersionTable(), [ |
| 203 | + ['ref_id', $model->id,], |
| 204 | + ['version', '>=', 3,], |
186 | 205 | ]); |
187 | 206 | } |
188 | 207 | } |
0 commit comments