Code Duplication    Length = 51-56 lines in 2 locations

django-data/image/validation/tests/test_tasks.py 2 locations

@@ 382-437 (lines=56) @@
379
            'Ready',
380
            'Submission validated with success')
381
382
    @patch("validation.tasks.MetaDataValidation.read_in_ruleset")
383
    @patch("validation.helpers.validation.check_ruleset",
384
           return_value=[])
385
    @patch("validation.tasks.MetaDataValidation.check_usi_structure")
386
    @patch("validation.tasks.MetaDataValidation.validate")
387
    def test_validate_submission_wrong_json(
388
            self, my_validate, my_check, my_ruleset, my_read):
389
390
        # assign a fake response for check_usi_structure
391
        usi_result = [
392
            ('Wrong JSON structure: no title field for record with '
393
             'alias as animal_1'),
394
            ('Wrong JSON structure: the values for attribute Person '
395
             'role needs to be in an array for record animal_1')
396
        ]
397
        my_check.return_value = usi_result
398
399
        # setting a return value for check_with_ruleset
400
        rule_result = Mock()
401
        rule_result.get_overall_status.return_value = "Pass"
402
        my_validate.return_value = rule_result
403
404
        # call task
405
        res = self.my_task.run(submission_id=self.submission_id)
406
407
        # assert a success with validation taks
408
        self.assertEqual(res, "success")
409
410
        # check submission status and message
411
        self.submission.refresh_from_db()
412
413
        # check submission.state changed
414
        self.assertEqual(self.submission.status, NEED_REVISION)
415
        self.assertIn(
416
            "Wrong JSON structure",
417
            self.submission.message)
418
419
        # check Names (they require revisions)
420
        for name in self.name_qs:
421
            self.assertEqual(name.status, NEED_REVISION)
422
423
            # test for model message (usi_results)
424
            self.assertEqual(
425
                name.validationresult.messages, usi_result)
426
            self.assertEqual(
427
                    name.validationresult.status, "Wrong JSON structure")
428
429
        # if JSON is not valid, I don't check for ruleset
430
        self.assertTrue(my_check.called)
431
        self.assertTrue(my_ruleset.called)
432
        self.assertFalse(my_validate.called)
433
        self.assertTrue(my_read.called)
434
435
        self.check_async_called(
436
            'Need Revision',
437
            'Validation got errors: Wrong JSON structure')
438
439
    @patch("validation.tasks.MetaDataValidation.read_in_ruleset")
440
    @patch("validation.helpers.validation.check_ruleset",
@@ 330-380 (lines=51) @@
327
            'Error',
328
            'Error in IMAGE-metadata ruleset. Please inform InjectTool team')
329
330
    @patch("validation.tasks.MetaDataValidation.read_in_ruleset")
331
    @patch("validation.helpers.validation.check_ruleset",
332
           return_value=[])
333
    @patch("validation.tasks.MetaDataValidation.check_usi_structure")
334
    @patch("validation.tasks.MetaDataValidation.validate")
335
    def test_validate_submission(
336
            self, my_validate, my_check, my_ruleset, my_read):
337
338
        # setting check_usi_structure result
339
        my_check.return_value = []
340
341
        # setting a return value for check_with_ruleset
342
        validation_result = Mock()
343
        validation_result.get_overall_status.return_value = "Pass"
344
        validation_result.get_messages.return_value = ["A message"]
345
        my_validate.return_value = validation_result
346
347
        # NOTE that I'm calling the function directly, without delay
348
        # (AsyncResult). I've patched the time consuming task
349
        res = self.my_task.run(submission_id=self.submission_id)
350
351
        # assert a success with validation taks
352
        self.assertEqual(res, "success")
353
354
        # check submission status and message
355
        self.submission.refresh_from_db()
356
357
        # check submission.state changed
358
        self.assertEqual(self.submission.status, READY)
359
        self.assertEqual(
360
            self.submission.message,
361
            "Submission validated with success")
362
363
        # check Names (they are all ok)
364
        for name in self.name_qs:
365
            self.assertEqual(name.status, READY)
366
367
            # test for model message (usi_results)
368
            self.assertEqual(
369
                name.validationresult.messages, ["A message"])
370
            self.assertEqual(name.validationresult.status, "Pass")
371
372
        # assert validation functions called
373
        self.assertTrue(my_check.called)
374
        self.assertTrue(my_ruleset.called)
375
        self.assertTrue(my_validate.called)
376
        self.assertTrue(my_read.called)
377
378
        self.check_async_called(
379
            'Ready',
380
            'Submission validated with success')
381
382
    @patch("validation.tasks.MetaDataValidation.read_in_ruleset")
383
    @patch("validation.helpers.validation.check_ruleset",