Code Duplication    Length = 25-25 lines in 3 locations

tests/unit/test_main.py 3 locations

@@ 393-417 (lines=25) @@
390
            )
391
        )
392
393
    def test_update_mw_case_4(self):
394
        """Test successful update."""
395
        start1 = datetime.now(pytz.utc) + timedelta(days=1)
396
        end1 = start1 + timedelta(hours=6)
397
        self.scheduler.get_maintenance.return_value = MW.construct(
398
            id = '1234',
399
            start = start1.replace(microsecond=0),
400
            end = end1.replace(microsecond=0),
401
            switches = [
402
                '00:00:00:00:00:00:12:23'
403
            ],
404
        )
405
        start_new = datetime.now(pytz.utc) - timedelta(days=1, hours=3)
406
        payload = {
407
            "start": start_new.strftime(TIME_FMT),
408
        }
409
        url = f'{self.server_name_url}/1234'
410
        response = self.api.patch(url, data=json.dumps(payload),
411
                                  content_type='application/json')
412
        current_data = json.loads(response.data)
413
        self.assertEqual(response.status_code, 400)
414
        self.assertEqual(current_data['description'],
415
                         'Start in the past not allowed')
416
        self.scheduler.get_maintenance.assert_called_once_with('1234')
417
        self.scheduler.update.assert_not_called()
418
419
    def test_update_mw_case_5(self):
420
        """Test successful update."""
@@ 673-697 (lines=25) @@
670
        self.scheduler.get_maintenance.assert_called_once_with('1234')
671
        self.scheduler.update.assert_not_called()
672
673
    def test_extend_case_6(self):
674
        """Test maintenance already finished."""
675
        start1 = datetime.now(pytz.utc) - timedelta(hours=3)
676
        end1 = start1 + timedelta(hours=2)
677
        self.scheduler.get_maintenance.return_value = MW.construct(
678
            id = '1234',
679
            start = start1.replace(microsecond=0),
680
            end = end1.replace(microsecond=0),
681
            switches = [
682
                '00:00:00:00:00:00:12:23'
683
            ],
684
            status = 'finished',
685
        )
686
        url = f'{self.server_name_url}/1234/extend'
687
        payload = {
688
            'minutes': 240
689
        }
690
        response = self.api.patch(url, data=json.dumps(payload),
691
                                  content_type='application/json')
692
        self.assertEqual(response.status_code, 400)
693
        current_data = json.loads(response.data)
694
        self.assertEqual(current_data['description'],
695
                         'Maintenance window 1234 has already finished')
696
        self.scheduler.get_maintenance.assert_called_once_with('1234')
697
        self.scheduler.update.assert_not_called()
698
699
    def test_extend_case_7(self):
700
        """Test no maintenace found."""
@@ 647-671 (lines=25) @@
644
                         'Minutes of extension must be integer')
645
        self.scheduler.update.assert_not_called()
646
647
    def test_extend_case_5(self):
648
        """Test maintenance did not start."""
649
        start1 = datetime.now(pytz.utc) + timedelta(hours=3)
650
        end1 = start1 + timedelta(hours=4)
651
        self.scheduler.get_maintenance.return_value = MW.construct(
652
            id = '1234',
653
            start = start1.replace(microsecond=0),
654
            end = end1.replace(microsecond=0),
655
            switches = [
656
                '00:00:00:00:00:00:12:23'
657
            ],
658
            status = 'pending',
659
        )
660
        url = f'{self.server_name_url}/1234/extend'
661
        payload = {
662
            'minutes': 240
663
        }
664
        response = self.api.patch(url, data=json.dumps(payload),
665
                                  content_type='application/json')
666
        self.assertEqual(response.status_code, 400)
667
        current_data = json.loads(response.data)
668
        self.assertEqual(current_data['description'],
669
                         'Maintenance window 1234 has not yet started')
670
        self.scheduler.get_maintenance.assert_called_once_with('1234')
671
        self.scheduler.update.assert_not_called()
672
673
    def test_extend_case_6(self):
674
        """Test maintenance already finished."""