Code Duplication    Length = 25-25 lines in 3 locations

tests/unit/test_main.py 3 locations

@@ 634-658 (lines=25) @@
631
        self.scheduler.get_maintenance.assert_called_once_with('1234')
632
        self.scheduler.update.assert_not_called()
633
634
    def test_extend_case_6(self):
635
        """Test maintenance already finished."""
636
        start1 = datetime.now(pytz.utc) - timedelta(hours=3)
637
        end1 = start1 + timedelta(hours=2)
638
        self.scheduler.get_maintenance.return_value = MW.construct(
639
            id = '1234',
640
            start = start1.replace(microsecond=0),
641
            end = end1.replace(microsecond=0),
642
            switches = [
643
                '00:00:00:00:00:00:12:23'
644
            ],
645
            status = 'finished',
646
        )
647
        url = f'{self.server_name_url}/1234/extend'
648
        payload = {
649
            'minutes': 240
650
        }
651
        response = self.api.patch(url, data=json.dumps(payload),
652
                                  content_type='application/json')
653
        self.assertEqual(response.status_code, 400)
654
        current_data = json.loads(response.data)
655
        self.assertEqual(current_data['description'],
656
                         'Maintenance window 1234 has already finished')
657
        self.scheduler.get_maintenance.assert_called_once_with('1234')
658
        self.scheduler.update.assert_not_called()
659
660
    def test_extend_case_7(self):
661
        """Test no maintenace found."""
@@ 608-632 (lines=25) @@
605
                         'Minutes of extension must be integer')
606
        self.scheduler.update.assert_not_called()
607
608
    def test_extend_case_5(self):
609
        """Test maintenance did not start."""
610
        start1 = datetime.now(pytz.utc) + timedelta(hours=3)
611
        end1 = start1 + timedelta(hours=4)
612
        self.scheduler.get_maintenance.return_value = MW.construct(
613
            id = '1234',
614
            start = start1.replace(microsecond=0),
615
            end = end1.replace(microsecond=0),
616
            switches = [
617
                '00:00:00:00:00:00:12:23'
618
            ],
619
            status = 'pending',
620
        )
621
        url = f'{self.server_name_url}/1234/extend'
622
        payload = {
623
            'minutes': 240
624
        }
625
        response = self.api.patch(url, data=json.dumps(payload),
626
                                  content_type='application/json')
627
        self.assertEqual(response.status_code, 400)
628
        current_data = json.loads(response.data)
629
        self.assertEqual(current_data['description'],
630
                         'Maintenance window 1234 has not yet started')
631
        self.scheduler.get_maintenance.assert_called_once_with('1234')
632
        self.scheduler.update.assert_not_called()
633
634
    def test_extend_case_6(self):
635
        """Test maintenance already finished."""
@@ 379-403 (lines=25) @@
376
            )
377
        )
378
379
    def test_update_mw_case_4(self):
380
        """Test successful update."""
381
        start1 = datetime.now(pytz.utc) + timedelta(days=1)
382
        end1 = start1 + timedelta(hours=6)
383
        self.scheduler.get_maintenance.return_value = MW.construct(
384
            id = '1234',
385
            start = start1.replace(microsecond=0),
386
            end = end1.replace(microsecond=0),
387
            switches = [
388
                '00:00:00:00:00:00:12:23'
389
            ],
390
        )
391
        start_new = datetime.now(pytz.utc) - timedelta(days=1, hours=3)
392
        payload = {
393
            "start": start_new.strftime(TIME_FMT),
394
        }
395
        url = f'{self.server_name_url}/1234'
396
        response = self.api.patch(url, data=json.dumps(payload),
397
                                  content_type='application/json')
398
        current_data = json.loads(response.data)
399
        self.assertEqual(response.status_code, 400)
400
        self.assertEqual(current_data['description'],
401
                         'Start in the past not allowed')
402
        self.scheduler.get_maintenance.assert_called_once_with('1234')
403
        self.scheduler.update.assert_not_called()
404
405
    def test_update_mw_case_5(self):
406
        """Test successful update."""