| @@ 377-446 (lines=70) @@ | ||
| 374 | ] |
|
| 375 | ||
| 376 | ||
| 377 | class UpdateTemplateTestCase(ExcelMixin, TestCase): |
|
| 378 | """Simulate an excel update with the same dataset. Data already |
|
| 379 | present will be ignored.""" |
|
| 380 | ||
| 381 | # override used fixtures |
|
| 382 | fixtures = [ |
|
| 383 | 'crbanim/auth', |
|
| 384 | 'excel/dictspecie', |
|
| 385 | 'excel/uid', |
|
| 386 | 'excel/submission', |
|
| 387 | 'excel/speciesynonym' |
|
| 388 | ] |
|
| 389 | ||
| 390 | def setUp(self): |
|
| 391 | # calling my base class setup |
|
| 392 | super().setUp() |
|
| 393 | ||
| 394 | # track old submission |
|
| 395 | self.old_submission = Submission.objects.get(pk=1) |
|
| 396 | ||
| 397 | # generate a new submission from old submission object |
|
| 398 | submission = self.submission |
|
| 399 | submission.pk = None |
|
| 400 | submission.title = "Updated database" |
|
| 401 | submission.datasource_version = "Updated database" |
|
| 402 | submission.save() |
|
| 403 | ||
| 404 | # track the new submission |
|
| 405 | self.submission = submission |
|
| 406 | ||
| 407 | # remove items from database |
|
| 408 | sample = Sample.objects.get(pk=6) |
|
| 409 | animal = sample.animal |
|
| 410 | animal.delete() |
|
| 411 | ||
| 412 | def test_upload_template(self): |
|
| 413 | """Testing uploading and importing data from excel template to UID""" |
|
| 414 | ||
| 415 | # test data loaded |
|
| 416 | message = "Template import completed for submission" |
|
| 417 | self.upload_datasource(message) |
|
| 418 | ||
| 419 | # check animal and sample |
|
| 420 | queryset = Animal.objects.all() |
|
| 421 | self.assertEqual(len(queryset), 3, msg="check animal load") |
|
| 422 | ||
| 423 | queryset = Sample.objects.all() |
|
| 424 | self.assertEqual(len(queryset), 3, msg="check sample load") |
|
| 425 | ||
| 426 | # assert data are in the proper submission |
|
| 427 | self.assertEqual(self.old_submission.animal_set.count(), 2) |
|
| 428 | self.assertEqual(self.old_submission.sample_set.count(), 2) |
|
| 429 | ||
| 430 | self.assertEqual(self.submission.animal_set.count(), 1) |
|
| 431 | self.assertEqual(self.submission.sample_set.count(), 1) |
|
| 432 | ||
| 433 | # check async message called |
|
| 434 | notification_message = ( |
|
| 435 | 'Template import completed for submission: 2') |
|
| 436 | validation_message = { |
|
| 437 | 'animals': 1, 'samples': 1, |
|
| 438 | 'animal_unkn': 1, 'sample_unkn': 1, |
|
| 439 | 'animal_issues': 0, 'sample_issues': 0} |
|
| 440 | ||
| 441 | # check async message called using WebSocketMixin.check_message |
|
| 442 | self.check_message( |
|
| 443 | 'Loaded', |
|
| 444 | notification_message, |
|
| 445 | validation_message, |
|
| 446 | pk=self.submission.id) |
|
| 447 | ||
| @@ 369-434 (lines=66) @@ | ||
| 366 | ] |
|
| 367 | ||
| 368 | ||
| 369 | class UpdateCRBAnimTestCase(CRBAnimMixin, BaseTestCase, TestCase): |
|
| 370 | """Simulate a crbanim update with the same dataset. Data already |
|
| 371 | present will be ignored. I won't remove anithing from old submission, |
|
| 372 | so I expect to not add any items into database""" |
|
| 373 | ||
| 374 | # override used fixtures |
|
| 375 | fixtures = [ |
|
| 376 | 'crbanim/auth', |
|
| 377 | 'crbanim/dictspecie', |
|
| 378 | 'crbanim/uid', |
|
| 379 | 'crbanim/submission', |
|
| 380 | 'language/speciesynonym' |
|
| 381 | ] |
|
| 382 | ||
| 383 | def setUp(self): |
|
| 384 | # calling my base class setup |
|
| 385 | super().setUp() |
|
| 386 | ||
| 387 | # track old submission |
|
| 388 | self.old_submission = Submission.objects.get(pk=1) |
|
| 389 | ||
| 390 | # generate a new submission from old submission object |
|
| 391 | submission = self.submission |
|
| 392 | submission.pk = None |
|
| 393 | submission.title = "Updated database" |
|
| 394 | submission.datasource_version = "Updated database" |
|
| 395 | submission.save() |
|
| 396 | ||
| 397 | # track the new submission |
|
| 398 | self.submission = submission |
|
| 399 | ||
| 400 | def test_upload_crbanim(self): |
|
| 401 | """Testing uploading and importing data from crbanim to UID""" |
|
| 402 | ||
| 403 | # test data loaded |
|
| 404 | message = "CRBAnim import completed for submission" |
|
| 405 | self.upload_datasource(message) |
|
| 406 | ||
| 407 | # check animal and samples |
|
| 408 | queryset = Animal.objects.all() |
|
| 409 | self.assertEqual(len(queryset), 1, msg="check animal load") |
|
| 410 | ||
| 411 | queryset = Sample.objects.all() |
|
| 412 | self.assertEqual(len(queryset), 2, msg="check sample load") |
|
| 413 | ||
| 414 | # assert data are in the proper submission |
|
| 415 | self.assertEqual(self.old_submission.animal_set.count(), 1) |
|
| 416 | self.assertEqual(self.old_submission.sample_set.count(), 2) |
|
| 417 | ||
| 418 | self.assertEqual(self.submission.animal_set.count(), 0) |
|
| 419 | self.assertEqual(self.submission.sample_set.count(), 0) |
|
| 420 | ||
| 421 | # check async message called |
|
| 422 | notification_message = ( |
|
| 423 | 'CRBAnim import completed for submission: 2') |
|
| 424 | validation_message = { |
|
| 425 | 'animals': 0, 'samples': 0, |
|
| 426 | 'animal_unkn': 0, 'sample_unkn': 0, |
|
| 427 | 'animal_issues': 0, 'sample_issues': 0} |
|
| 428 | ||
| 429 | # check async message called using WebSocketMixin.check_message |
|
| 430 | self.check_message( |
|
| 431 | 'Loaded', |
|
| 432 | notification_message, |
|
| 433 | validation_message, |
|
| 434 | pk=self.submission.id) |
|
| 435 | ||
| 436 | ||
| 437 | class SanitizeAccessionTest(TestCase): |
|