Code Duplication    Length = 18-21 lines in 3 locations

tests/unit/test_main.py 3 locations

@@ 475-495 (lines=21) @@
472
        self.scheduler.get_maintenance.assert_called_once_with("1234")
473
        self.scheduler.remove.assert_called_once_with("1234")
474
475
    async def test_remove_mw_case_3(self):
476
        """Test remove existent id."""
477
        start1 = datetime.now(pytz.utc) - timedelta(days=1)
478
        end1 = start1 + timedelta(hours=6)
479
        self.scheduler.get_maintenance.return_value = MW.model_construct(
480
            id="1234",
481
            start=start1.replace(microsecond=0),
482
            end=end1.replace(microsecond=0),
483
            switches=["00:00:00:00:00:00:12:23"],
484
            status="running",
485
        )
486
        url = f"{self.base_endpoint}/1234"
487
        response = await self.api.delete(url)
488
        current_data = response.json()
489
        assert response.status_code == 400
490
        assert (
491
            current_data["description"]
492
            == "Deleting a running maintenance is not allowed"
493
        )
494
        self.scheduler.get_maintenance.assert_called_once_with("1234")
495
        self.scheduler.remove.assert_not_called()
496
497
    async def test_update_mw_case_1(self):
498
        """Test update non-existent id."""
@@ 455-473 (lines=19) @@
452
        self.scheduler.get_maintenance.assert_called_once_with("2345")
453
        self.scheduler.remove.assert_not_called()
454
455
    async def test_remove_mw_case_2(self):
456
        """Test remove existent id."""
457
        start1 = datetime.now(pytz.utc) + timedelta(hours=1)
458
        end1 = start1 + timedelta(hours=6)
459
        self.scheduler.get_maintenance.return_value = MW.model_construct(
460
            id="1234",
461
            start=start1.replace(microsecond=0),
462
            end=end1.replace(microsecond=0),
463
            switches=["00:00:00:00:00:00:12:23"],
464
        )
465
        url = f"{self.base_endpoint}/1234"
466
        response = await self.api.delete(url)
467
        current_data = response.json()
468
        assert response.status_code == 200
469
        assert current_data == {
470
            "response": "Maintenance with id 1234 " "successfully removed"
471
        }
472
        self.scheduler.get_maintenance.assert_called_once_with("1234")
473
        self.scheduler.remove.assert_called_once_with("1234")
474
475
    async def test_remove_mw_case_3(self):
476
        """Test remove existent id."""
@@ 666-683 (lines=18) @@
663
        assert response.status_code == 404
664
        assert current_data["description"] == "Maintenance with id 2345 not found"
665
666
    async def test_end_mw_case_2(self):
667
        """Test method that finishes the maintenance now."""
668
        start1 = datetime.now(pytz.utc) - timedelta(hours=1)
669
        end1 = start1 + timedelta(hours=6)
670
        self.scheduler.get_maintenance.return_value = MW.model_construct(
671
            id="1234",
672
            start=start1.replace(microsecond=0),
673
            end=end1.replace(microsecond=0),
674
            switches=["00:00:00:00:00:00:12:23"],
675
            status="running",
676
        )
677
        url = f"{self.base_endpoint}/1234/end"
678
        response = await self.api.patch(url)
679
        current_data = response.json()
680
        self.scheduler.get.asssert_called_once_with("1234")
681
        self.scheduler.end_maintenance_early.assert_called_once_with("1234")
682
        assert response.status_code == 200
683
        assert current_data == {"response": "Maintenance window 1234 finished"}
684
685
    async def test_end_mw_case_3(self):
686
        """Test method that finishes the maintenance now."""