| @@ 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): |
|
| @@ 457-526 (lines=70) @@ | ||
| 454 | ] |
|
| 455 | ||
| 456 | ||
| 457 | class UpdateTemplateTestCase(ExcelMixin, TestCase): |
|
| 458 | """Simulate an excel update with the same dataset. Data already |
|
| 459 | present will be ignored.""" |
|
| 460 | ||
| 461 | # override used fixtures |
|
| 462 | fixtures = [ |
|
| 463 | 'crbanim/auth', |
|
| 464 | 'excel/dictspecie', |
|
| 465 | 'excel/uid', |
|
| 466 | 'excel/submission', |
|
| 467 | 'excel/speciesynonym' |
|
| 468 | ] |
|
| 469 | ||
| 470 | def setUp(self): |
|
| 471 | # calling my base class setup |
|
| 472 | super().setUp() |
|
| 473 | ||
| 474 | # track old submission |
|
| 475 | self.old_submission = Submission.objects.get(pk=1) |
|
| 476 | ||
| 477 | # generate a new submission from old submission object |
|
| 478 | submission = self.submission |
|
| 479 | submission.pk = None |
|
| 480 | submission.title = "Updated database" |
|
| 481 | submission.datasource_version = "Updated database" |
|
| 482 | submission.save() |
|
| 483 | ||
| 484 | # track the new submission |
|
| 485 | self.submission = submission |
|
| 486 | ||
| 487 | # remove items from database |
|
| 488 | sample = Sample.objects.get(pk=6) |
|
| 489 | animal = sample.animal |
|
| 490 | animal.delete() |
|
| 491 | ||
| 492 | def test_upload_template(self): |
|
| 493 | """Testing uploading and importing data from excel template to UID""" |
|
| 494 | ||
| 495 | # test data loaded |
|
| 496 | message = "Template import completed for submission" |
|
| 497 | self.upload_datasource(message) |
|
| 498 | ||
| 499 | # check animal and sample |
|
| 500 | queryset = Animal.objects.all() |
|
| 501 | self.assertEqual(len(queryset), 3, msg="check animal load") |
|
| 502 | ||
| 503 | queryset = Sample.objects.all() |
|
| 504 | self.assertEqual(len(queryset), 3, msg="check sample load") |
|
| 505 | ||
| 506 | # assert data are in the proper submission |
|
| 507 | self.assertEqual(self.old_submission.animal_set.count(), 2) |
|
| 508 | self.assertEqual(self.old_submission.sample_set.count(), 2) |
|
| 509 | ||
| 510 | self.assertEqual(self.submission.animal_set.count(), 1) |
|
| 511 | self.assertEqual(self.submission.sample_set.count(), 1) |
|
| 512 | ||
| 513 | # check async message called |
|
| 514 | notification_message = ( |
|
| 515 | 'Template import completed for submission: 2') |
|
| 516 | validation_message = { |
|
| 517 | 'animals': 1, 'samples': 1, |
|
| 518 | 'animal_unkn': 1, 'sample_unkn': 1, |
|
| 519 | 'animal_issues': 0, 'sample_issues': 0} |
|
| 520 | ||
| 521 | # check async message called using WebSocketMixin.check_message |
|
| 522 | self.check_message( |
|
| 523 | 'Loaded', |
|
| 524 | notification_message, |
|
| 525 | validation_message, |
|
| 526 | pk=self.submission.id) |
|
| 527 | ||