jeremystretch 3 лет назад
Родитель
Сommit
537383e071
1 измененных файлов с 328 добавлено и 78 удалено
  1. 328 78
      netbox/dcim/tests/test_cablepaths.py

+ 328 - 78
netbox/dcim/tests/test_cablepaths.py

@@ -370,7 +370,65 @@ class CablePathTestCase(TestCase):
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsNotSet(interface2)
         self.assertPathIsNotSet(interface2)
 
 
-    def test_202_multiple_paths_via_pass_through(self):
+    def test_202_single_path_via_pass_through_with_breakouts(self):
+        """
+        [IF1] --C1-- [FP1] [RP1] --C2-- [IF3]
+        [IF2]                           [IF4]
+        """
+        interface1 = Interface.objects.create(device=self.device, name='Interface 1')
+        interface2 = Interface.objects.create(device=self.device, name='Interface 2')
+        interface3 = Interface.objects.create(device=self.device, name='Interface 3')
+        interface4 = Interface.objects.create(device=self.device, name='Interface 4')
+        rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=1)
+        frontport1 = FrontPort.objects.create(
+            device=self.device, name='Front Port 1', rear_port=rearport1, rear_port_position=1
+        )
+
+        # Create cable 1
+        cable1 = Cable(
+            a_terminations=[interface1, interface2],
+            b_terminations=[frontport1]
+        )
+        cable1.save()
+        self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1, rearport1),
+            is_complete=False
+        )
+        self.assertEqual(CablePath.objects.count(), 1)
+
+        # Create cable 2
+        cable2 = Cable(
+            a_terminations=[rearport1],
+            b_terminations=[interface3, interface4]
+        )
+        cable2.save()
+        self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1, rearport1, cable2, [interface3, interface4]),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertPathExists(
+            ([interface3, interface4], cable2, rearport1, frontport1, cable1, [interface1, interface2]),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+
+        # Delete cable 2
+        cable2.delete()
+        path1 = self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1, rearport1),
+            is_complete=False
+        )
+        self.assertEqual(CablePath.objects.count(), 1)
+        interface1.refresh_from_db()
+        interface2.refresh_from_db()
+        self.assertPathIsSet(interface1, path1)
+        self.assertPathIsSet(interface2, path1)
+        self.assertPathIsNotSet(interface3)
+        self.assertPathIsNotSet(interface4)
+
+    def test_203_multiple_paths_via_pass_through(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [IF3]
         [IF2] --C2-- [FP1:2]                    [FP2:2] --C5-- [IF4]
         [IF2] --C2-- [FP1:2]                    [FP2:2] --C5-- [IF4]
@@ -479,7 +537,130 @@ class CablePathTestCase(TestCase):
         self.assertPathIsSet(interface3, path3)
         self.assertPathIsSet(interface3, path3)
         self.assertPathIsSet(interface4, path4)
         self.assertPathIsSet(interface4, path4)
 
 
-    def test_203_multiple_paths_via_nested_pass_throughs(self):
+    def test_204_multiple_paths_via_pass_through_with_breakouts(self):
+        """
+        [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [IF4]
+        [IF2]                                                  [IF5]
+        [IF3] --C2-- [FP1:2]                    [FP2:2] --C5-- [IF6]
+        [IF4]                                                  [IF7]
+        """
+        interface1 = Interface.objects.create(device=self.device, name='Interface 1')
+        interface2 = Interface.objects.create(device=self.device, name='Interface 2')
+        interface3 = Interface.objects.create(device=self.device, name='Interface 3')
+        interface4 = Interface.objects.create(device=self.device, name='Interface 4')
+        interface5 = Interface.objects.create(device=self.device, name='Interface 5')
+        interface6 = Interface.objects.create(device=self.device, name='Interface 6')
+        interface7 = Interface.objects.create(device=self.device, name='Interface 7')
+        interface8 = Interface.objects.create(device=self.device, name='Interface 8')
+        rearport1 = RearPort.objects.create(device=self.device, name='Rear Port 1', positions=4)
+        rearport2 = RearPort.objects.create(device=self.device, name='Rear Port 2', positions=4)
+        frontport1_1 = FrontPort.objects.create(
+            device=self.device, name='Front Port 1:1', rear_port=rearport1, rear_port_position=1
+        )
+        frontport1_2 = FrontPort.objects.create(
+            device=self.device, name='Front Port 1:2', rear_port=rearport1, rear_port_position=2
+        )
+        frontport2_1 = FrontPort.objects.create(
+            device=self.device, name='Front Port 2:1', rear_port=rearport2, rear_port_position=1
+        )
+        frontport2_2 = FrontPort.objects.create(
+            device=self.device, name='Front Port 2:2', rear_port=rearport2, rear_port_position=2
+        )
+
+        # Create cables 1-2
+        cable1 = Cable(
+            a_terminations=[interface1, interface2],
+            b_terminations=[frontport1_1]
+        )
+        cable1.save()
+        cable2 = Cable(
+            a_terminations=[interface3, interface4],
+            b_terminations=[frontport1_2]
+        )
+        cable2.save()
+        self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1_1, rearport1),
+            is_complete=False
+        )
+        self.assertPathExists(
+            ([interface3, interface4], cable2, frontport1_2, rearport1),
+            is_complete=False
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+
+        # Create cable 3
+        cable3 = Cable(
+            a_terminations=[rearport1],
+            b_terminations=[rearport2]
+        )
+        cable3.save()
+        self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1_1, rearport1, cable3, rearport2, frontport2_1),
+            is_complete=False
+        )
+        self.assertPathExists(
+            ([interface3, interface4], cable2, frontport1_2, rearport1, cable3, rearport2, frontport2_2),
+            is_complete=False
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+
+        # Create cables 4-5
+        cable4 = Cable(
+            a_terminations=[frontport2_1],
+            b_terminations=[interface5, interface6]
+        )
+        cable4.save()
+        cable5 = Cable(
+            a_terminations=[frontport2_2],
+            b_terminations=[interface7, interface8]
+        )
+        cable5.save()
+        path1 = self.assertPathExists(
+            ([interface1, interface2], cable1, frontport1_1, rearport1, cable3, rearport2, frontport2_1, cable4, [interface5, interface6]),
+            is_complete=True,
+            is_active=True
+        )
+        path2 = self.assertPathExists(
+            ([interface3, interface4], cable2, frontport1_2, rearport1, cable3, rearport2, frontport2_2, cable5, [interface7, interface8]),
+            is_complete=True,
+            is_active=True
+        )
+        path3 = self.assertPathExists(
+            ([interface5, interface6], cable4, frontport2_1, rearport2, cable3, rearport1, frontport1_1, cable1, [interface1, interface2]),
+            is_complete=True,
+            is_active=True
+        )
+        path4 = self.assertPathExists(
+            ([interface7, interface8], cable5, frontport2_2, rearport2, cable3, rearport1, frontport1_2, cable2, [interface3, interface4]),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 4)
+
+        # Delete cable 3
+        cable3.delete()
+
+        # Check for four partial paths; one from each interface
+        self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
+        self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
+        interface1.refresh_from_db()
+        interface2.refresh_from_db()
+        interface3.refresh_from_db()
+        interface4.refresh_from_db()
+        interface5.refresh_from_db()
+        interface6.refresh_from_db()
+        interface7.refresh_from_db()
+        interface8.refresh_from_db()
+        self.assertPathIsSet(interface1, path1)
+        self.assertPathIsSet(interface2, path1)
+        self.assertPathIsSet(interface3, path2)
+        self.assertPathIsSet(interface4, path2)
+        self.assertPathIsSet(interface5, path3)
+        self.assertPathIsSet(interface6, path3)
+        self.assertPathIsSet(interface7, path4)
+        self.assertPathIsSet(interface8, path4)
+
+    def test_205_multiple_paths_via_nested_pass_throughs(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [FP2] [RP2] --C4-- [RP3] [FP3] --C5-- [RP4] [FP4:1] --C6-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [FP2] [RP2] --C4-- [RP3] [FP3] --C5-- [RP4] [FP4:1] --C6-- [IF3]
         [IF2] --C2-- [FP1:2]                                                          [FP4:2] --C7-- [IF4]
         [IF2] --C2-- [FP1:2]                                                          [FP4:2] --C7-- [IF4]
@@ -594,7 +775,7 @@ class CablePathTestCase(TestCase):
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
 
 
-    def test_204_multiple_paths_via_multiple_pass_throughs(self):
+    def test_206_multiple_paths_via_multiple_pass_throughs(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [FP3:1] [RP3] --C6-- [RP4] [FP4:1] --C7-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [FP3:1] [RP3] --C6-- [RP4] [FP4:1] --C7-- [IF3]
         [IF2] --C2-- [FP1:2]                    [FP2:1] --C5-- [FP3:1]                    [FP4:2] --C8-- [IF4]
         [IF2] --C2-- [FP1:2]                    [FP2:1] --C5-- [FP3:1]                    [FP4:2] --C8-- [IF4]
@@ -721,7 +902,7 @@ class CablePathTestCase(TestCase):
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 2)
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 2)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 2)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 2)
 
 
-    def test_205_multiple_paths_via_patched_pass_throughs(self):
+    def test_207_multiple_paths_via_patched_pass_throughs(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [FP2] [RP2] --C4-- [RP3] [FP3:1] --C5-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [FP2] [RP2] --C4-- [RP3] [FP3:1] --C5-- [IF3]
         [IF2] --C2-- [FP1:2]                                       [FP3:2] --C6-- [IF4]
         [IF2] --C2-- [FP1:2]                                       [FP3:2] --C6-- [IF4]
@@ -824,7 +1005,7 @@ class CablePathTestCase(TestCase):
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
 
 
-    def test_206_unidirectional_split_paths(self):
+    def test_208_unidirectional_split_paths(self):
         """
         """
         [IF1] --C1-- [RP1] [FP1:1] --C2-- [IF2]
         [IF1] --C1-- [RP1] [FP1:1] --C2-- [IF2]
                            [FP1:2] --C3-- [IF3]
                            [FP1:2] --C3-- [IF3]
@@ -890,7 +1071,7 @@ class CablePathTestCase(TestCase):
         )
         )
         self.assertEqual(CablePath.objects.count(), 2)
         self.assertEqual(CablePath.objects.count(), 2)
 
 
-    def test_207_rearport_without_frontport(self):
+    def test_209_rearport_without_frontport(self):
         """
         """
         [IF1] --C1-- [FP1] [RP1] --C2-- [RP2]
         [IF1] --C1-- [FP1] [RP1] --C2-- [RP2]
         """
         """
@@ -918,7 +1099,7 @@ class CablePathTestCase(TestCase):
         )
         )
         self.assertEqual(CablePath.objects.count(), 1)
         self.assertEqual(CablePath.objects.count(), 1)
 
 
-    def test_208_circuittermination(self):
+    def test_210_interface_to_circuittermination(self):
         """
         """
         [IF1] --C1-- [CT1]
         [IF1] --C1-- [CT1]
         """
         """
@@ -945,7 +1126,7 @@ class CablePathTestCase(TestCase):
         interface1.refresh_from_db()
         interface1.refresh_from_db()
         self.assertPathIsNotSet(interface1)
         self.assertPathIsNotSet(interface1)
 
 
-    def test_209_circuit_to_interface(self):
+    def test_211_interface_to_interface_via_circuit(self):
         """
         """
         [IF1] --C1-- [CT1] [CT2] --C2-- [IF2]
         [IF1] --C1-- [CT1] [CT2] --C2-- [IF2]
         """
         """
@@ -1007,7 +1188,76 @@ class CablePathTestCase(TestCase):
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsNotSet(interface2)
         self.assertPathIsNotSet(interface2)
 
 
-    def test_210_circuit_to_site(self):
+    def test_212_interface_to_interface_via_circuit_with_breakouts(self):
+        """
+        [IF1] --C1-- [CT1] [CT2] --C2-- [IF3]
+        [IF2]                           [IF4]
+        """
+        interface1 = Interface.objects.create(device=self.device, name='Interface 1')
+        interface2 = Interface.objects.create(device=self.device, name='Interface 2')
+        interface3 = Interface.objects.create(device=self.device, name='Interface 3')
+        interface4 = Interface.objects.create(device=self.device, name='Interface 4')
+        circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='A')
+
+        # Create cable 1
+        cable1 = Cable(
+            a_terminations=[interface1, interface2],
+            b_terminations=[circuittermination1]
+        )
+        cable1.save()
+
+        # Check for partial path from interface1
+        self.assertPathExists(
+            ([interface1, interface2], cable1, circuittermination1),
+            is_complete=False
+        )
+
+        # Create CT2
+        circuittermination2 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='Z')
+
+        # Check for partial path to site
+        self.assertPathExists(
+            ([interface1, interface2], cable1, circuittermination1, circuittermination2, self.site),
+            is_active=True
+        )
+
+        # Create cable 2
+        cable2 = Cable(
+            a_terminations=[circuittermination2],
+            b_terminations=[interface3, interface4]
+        )
+        cable2.save()
+
+        # Check for complete path in each direction
+        self.assertPathExists(
+            ([interface1, interface2], cable1, circuittermination1, circuittermination2, cable2, [interface3, interface4]),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertPathExists(
+            ([interface3, interface4], cable2, circuittermination2, circuittermination1, cable1, [interface1, interface2]),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+
+        # Delete cable 2
+        cable2.delete()
+        path1 = self.assertPathExists(
+            ([interface1, interface2], cable1, circuittermination1, circuittermination2, self.site),
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 1)
+        interface1.refresh_from_db()
+        interface2.refresh_from_db()
+        interface3.refresh_from_db()
+        interface4.refresh_from_db()
+        self.assertPathIsSet(interface1, path1)
+        self.assertPathIsSet(interface2, path1)
+        self.assertPathIsNotSet(interface3)
+        self.assertPathIsNotSet(interface4)
+
+    def test_213_interface_to_site_via_circuit(self):
         """
         """
         [IF1] --C1-- [CT1] [CT2] --> [Site2]
         [IF1] --C1-- [CT1] [CT2] --> [Site2]
         """
         """
@@ -1034,7 +1284,7 @@ class CablePathTestCase(TestCase):
         interface1.refresh_from_db()
         interface1.refresh_from_db()
         self.assertPathIsNotSet(interface1)
         self.assertPathIsNotSet(interface1)
 
 
-    def test_211_circuit_to_providernetwork(self):
+    def test_214_interface_to_providernetwork_via_circuit(self):
         """
         """
         [IF1] --C1-- [CT1] [CT2] --> [PN1]
         [IF1] --C1-- [CT1] [CT2] --> [PN1]
         """
         """
@@ -1061,7 +1311,7 @@ class CablePathTestCase(TestCase):
         interface1.refresh_from_db()
         interface1.refresh_from_db()
         self.assertPathIsNotSet(interface1)
         self.assertPathIsNotSet(interface1)
 
 
-    def test_212_multiple_paths_via_circuit(self):
+    def test_215_multiple_paths_via_circuit(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [CT1] [CT2] --C4-- [RP2] [FP2:1] --C5-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [CT1] [CT2] --C4-- [RP2] [FP2:1] --C5-- [IF3]
         [IF2] --C2-- [FP1:2]                                       [FP2:2] --C6-- [IF4]
         [IF2] --C2-- [FP1:2]                                       [FP2:2] --C6-- [IF4]
@@ -1160,7 +1410,71 @@ class CablePathTestCase(TestCase):
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
         self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
 
 
-    def test_250_interface_to_interface_via_rear_ports(self):
+    def test_216_interface_to_interface_via_multiple_circuits(self):
+        """
+        [IF1] --C1-- [CT1] [CT2] --C2-- [CT3] [CT4] --C3-- [IF2]
+        """
+        interface1 = Interface.objects.create(device=self.device, name='Interface 1')
+        interface2 = Interface.objects.create(device=self.device, name='Interface 2')
+        circuit2 = Circuit.objects.create(provider=self.circuit.provider, type=self.circuit.type, cid='Circuit 2')
+        circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='A')
+        circuittermination2 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='Z')
+        circuittermination3 = CircuitTermination.objects.create(circuit=circuit2, site=self.site, term_side='A')
+        circuittermination4 = CircuitTermination.objects.create(circuit=circuit2, site=self.site, term_side='Z')
+
+        # Create cables
+        cable1 = Cable(
+            a_terminations=[interface1],
+            b_terminations=[circuittermination1]
+        )
+        cable1.save()
+        cable2 = Cable(
+            a_terminations=[circuittermination2],
+            b_terminations=[circuittermination3]
+        )
+        cable2.save()
+        cable3 = Cable(
+            a_terminations=[circuittermination4],
+            b_terminations=[interface2]
+        )
+        cable3.save()
+
+        # Check for paths
+        self.assertPathExists(
+            (
+                interface1, cable1, circuittermination1, circuittermination2, cable2, circuittermination3,
+                circuittermination4, cable3, interface2,
+            ),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertPathExists(
+            (
+                interface2, cable3, circuittermination4, circuittermination3, cable2, circuittermination2,
+                circuittermination1, cable1, interface1,
+            ),
+            is_complete=True,
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+
+        # Delete cable 2
+        cable2.delete()
+        path1 = self.assertPathExists(
+            (interface1, cable1, circuittermination1, circuittermination2, self.site),
+            is_active=True
+        )
+        path2 = self.assertPathExists(
+            (interface2, cable3, circuittermination4, circuittermination3, self.site),
+            is_active=True
+        )
+        self.assertEqual(CablePath.objects.count(), 2)
+        interface1.refresh_from_db()
+        interface2.refresh_from_db()
+        self.assertPathIsSet(interface1, path1)
+        self.assertPathIsSet(interface2, path2)
+
+    def test_217_interface_to_interface_via_rear_ports(self):
         """
         """
         [IF1] --C1-- [FP1] [RP1] --C2-- [RP3] [FP3] --C3-- [IF2]
         [IF1] --C1-- [FP1] [RP1] --C2-- [RP3] [FP3] --C3-- [IF2]
                      [FP2] [RP2]        [RP4] [FP4]
                      [FP2] [RP2]        [RP4] [FP4]
@@ -1238,7 +1552,7 @@ class CablePathTestCase(TestCase):
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsSet(interface1, path1)
         self.assertPathIsSet(interface2, path2)
         self.assertPathIsSet(interface2, path2)
 
 
-    def test_251_interfaces_to_interfaces_via_multiposition_rear_ports(self):
+    def test_218_interfaces_to_interfaces_via_multiposition_rear_ports(self):
         """
         """
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [IF3]
         [IF1] --C1-- [FP1:1] [RP1] --C3-- [RP2] [FP2:1] --C4-- [IF3]
                      [FP1:2]                    [FP2:2]
                      [FP1:2]                    [FP2:2]
@@ -1361,73 +1675,9 @@ class CablePathTestCase(TestCase):
         self.assertPathIsSet(interface3, path3)
         self.assertPathIsSet(interface3, path3)
         self.assertPathIsSet(interface4, path4)
         self.assertPathIsSet(interface4, path4)
 
 
-    def test_213_multiple_circuits_to_interface(self):
-        """
-        [IF1] --C1-- [CT1] [CT2] --C2-- [CT3] [CT4] --C3-- [IF2]
-        """
-        interface1 = Interface.objects.create(device=self.device, name='Interface 1')
-        interface2 = Interface.objects.create(device=self.device, name='Interface 2')
-        circuit2 = Circuit.objects.create(provider=self.circuit.provider, type=self.circuit.type, cid='Circuit 2')
-        circuittermination1 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='A')
-        circuittermination2 = CircuitTermination.objects.create(circuit=self.circuit, site=self.site, term_side='Z')
-        circuittermination3 = CircuitTermination.objects.create(circuit=circuit2, site=self.site, term_side='A')
-        circuittermination4 = CircuitTermination.objects.create(circuit=circuit2, site=self.site, term_side='Z')
-
-        # Create cables
-        cable1 = Cable(
-            a_terminations=[interface1],
-            b_terminations=[circuittermination1]
-        )
-        cable1.save()
-        cable2 = Cable(
-            a_terminations=[circuittermination2],
-            b_terminations=[circuittermination3]
-        )
-        cable2.save()
-        cable3 = Cable(
-            a_terminations=[circuittermination4],
-            b_terminations=[interface2]
-        )
-        cable3.save()
-
-        # Check for paths
-        self.assertPathExists(
-            (
-                interface1, cable1, circuittermination1, circuittermination2, cable2, circuittermination3,
-                circuittermination4, cable3, interface2,
-            ),
-            is_complete=True,
-            is_active=True
-        )
-        self.assertPathExists(
-            (
-                interface2, cable3, circuittermination4, circuittermination3, cable2, circuittermination2,
-                circuittermination1, cable1, interface1,
-            ),
-            is_complete=True,
-            is_active=True
-        )
-        self.assertEqual(CablePath.objects.count(), 2)
-
-        # Delete cable 2
-        cable2.delete()
-        path1 = self.assertPathExists(
-            (interface1, cable1, circuittermination1, circuittermination2, self.site),
-            is_active=True
-        )
-        path2 = self.assertPathExists(
-            (interface2, cable3, circuittermination4, circuittermination3, self.site),
-            is_active=True
-        )
-        self.assertEqual(CablePath.objects.count(), 2)
-        interface1.refresh_from_db()
-        interface2.refresh_from_db()
-        self.assertPathIsSet(interface1, path1)
-        self.assertPathIsSet(interface2, path2)
-
     def test_301_create_path_via_existing_cable(self):
     def test_301_create_path_via_existing_cable(self):
         """
         """
-        [IF1] --C1-- [FP1] [RP2] --C2-- [RP2] [FP2] --C3-- [IF2]
+        [IF1] --C1-- [FP1] [RP1] --C2-- [RP2] [FP2] --C3-- [IF2]
         """
         """
         interface1 = Interface.objects.create(device=self.device, name='Interface 1')
         interface1 = Interface.objects.create(device=self.device, name='Interface 1')
         interface2 = Interface.objects.create(device=self.device, name='Interface 2')
         interface2 = Interface.objects.create(device=self.device, name='Interface 2')