Code Duplication    Length = 25-25 lines in 3 locations

tests/unit/test_main.py 3 locations

@@ 648-672 (lines=25) @@
645
        self.scheduler.get_maintenance.assert_called_once_with('1234')
646
        self.scheduler.update.assert_not_called()
647
648
    def test_extend_case_6(self):
649
        """Test maintenance already finished."""
650
        start1 = datetime.now(pytz.utc) - timedelta(hours=3)
651
        end1 = start1 + timedelta(hours=2)
652
        self.scheduler.get_maintenance.return_value = MW.construct(
653
            id = '1234',
654
            start = start1.replace(microsecond=0),
655
            end = end1.replace(microsecond=0),
656
            switches = [
657
                '00:00:00:00:00:00:12:23'
658
            ],
659
            status = 'finished',
660
        )
661
        url = f'{self.server_name_url}/1234/extend'
662
        payload = {
663
            'minutes': 240
664
        }
665
        response = self.api.patch(url, data=json.dumps(payload),
666
                                  content_type='application/json')
667
        self.assertEqual(response.status_code, 400)
668
        current_data = json.loads(response.data)
669
        self.assertEqual(current_data['description'],
670
                         'Maintenance window 1234 has already finished')
671
        self.scheduler.get_maintenance.assert_called_once_with('1234')
672
        self.scheduler.update.assert_not_called()
673
674
    def test_extend_case_7(self):
675
        """Test no maintenace found."""
@@ 622-646 (lines=25) @@
619
                         'Minutes of extension must be integer')
620
        self.scheduler.update.assert_not_called()
621
622
    def test_extend_case_5(self):
623
        """Test maintenance did not start."""
624
        start1 = datetime.now(pytz.utc) + timedelta(hours=3)
625
        end1 = start1 + timedelta(hours=4)
626
        self.scheduler.get_maintenance.return_value = MW.construct(
627
            id = '1234',
628
            start = start1.replace(microsecond=0),
629
            end = end1.replace(microsecond=0),
630
            switches = [
631
                '00:00:00:00:00:00:12:23'
632
            ],
633
            status = 'pending',
634
        )
635
        url = f'{self.server_name_url}/1234/extend'
636
        payload = {
637
            'minutes': 240
638
        }
639
        response = self.api.patch(url, data=json.dumps(payload),
640
                                  content_type='application/json')
641
        self.assertEqual(response.status_code, 400)
642
        current_data = json.loads(response.data)
643
        self.assertEqual(current_data['description'],
644
                         'Maintenance window 1234 has not yet started')
645
        self.scheduler.get_maintenance.assert_called_once_with('1234')
646
        self.scheduler.update.assert_not_called()
647
648
    def test_extend_case_6(self):
649
        """Test maintenance already finished."""
@@ 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."""