Author: astaric
Date: Thu Mar  6 11:12:21 2014
New Revision: 1574841

URL: http://svn.apache.org/r1574841
Log:
Refactor bhrelations tests.


Modified:
    bloodhound/trunk/bloodhound_relations/bhrelations/tests/api.py
    bloodhound/trunk/bloodhound_relations/bhrelations/tests/base.py
    bloodhound/trunk/bloodhound_relations/bhrelations/tests/notification.py
    bloodhound/trunk/bloodhound_relations/bhrelations/tests/search.py
    bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py

Modified: bloodhound/trunk/bloodhound_relations/bhrelations/tests/api.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/api.py?rev=1574841&r1=1574840&r2=1574841&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_relations/bhrelations/tests/api.py (original)
+++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/api.py Thu Mar  6 
11:12:21 2014
@@ -18,10 +18,13 @@
 #  under the License.
 from datetime import datetime
 import unittest
+
 from bhrelations.api import TicketRelationsSpecifics
 from bhrelations.tests.mocks import TestRelationChangingListener
 from bhrelations.validation import ValidationError
-from bhrelations.tests.base import BaseRelationsTestCase
+from bhrelations.tests.base import BaseRelationsTestCase, PARENT, CHILD, \
+    DEPENDS_ON, DEPENDENCY_OF, BLOCKS, BLOCKED_BY, REFERS_TO, DUPLICATE_OF, \
+    MULTIPRODUCT_REL
 from multiproduct.env import ProductEnvironment
 from trac.ticket.model import Ticket
 from trac.core import TracError
@@ -32,146 +35,124 @@ class ApiTestCase(BaseRelationsTestCase)
     def test_can_add_two_ways_relations(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        dependent = self._insert_and_load_ticket("A2")
+        ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, dependent, "dependent")
-        #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual("dependent", relations[0]["type"])
-        self.assertEqual(unicode(dependent.id), relations[0]["destination"].id)
+        self.add_relation(ticket, DEPENDENCY_OF, ticket2)
+        #assert
+        relations = self.get_relations(ticket)
+        self.assertEqual(DEPENDENCY_OF, relations[0]["type"])
+        self.assertEqual(unicode(ticket2.id), relations[0]["destination"].id)
 
-        relations = relations_system.get_relations(dependent)
-        self.assertEqual("dependson", relations[0]["type"])
+        relations = self.get_relations(ticket2)
+        self.assertEqual(DEPENDS_ON, relations[0]["type"])
         self.assertEqual(unicode(ticket.id), relations[0]["destination"].id)
 
     def test_can_add_single_way_relations(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        referred = self._insert_and_load_ticket("A2")
+        ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket, referred, "refersto")
+        self.add_relation(ticket, REFERS_TO, ticket2)
         #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual("refersto", relations[0]["type"])
-        self.assertEqual(unicode(referred.id), relations[0]["destination"].id)
+        relations = self.get_relations(ticket)
+        self.assertEqual(1, len(relations))
+        self.assertEqual(REFERS_TO, relations[0]["type"])
+        self.assertEqual(unicode(ticket2.id), relations[0]["destination"].id)
 
-        relations = relations_system.get_relations(referred)
-        self.assertEqual(0, len(relations))
+        self.assertEqual(0, len(self.get_relations(ticket2)))
 
     def test_can_add_multiple_relations(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        dependent1 = self._insert_and_load_ticket("A2")
-        dependent2 = self._insert_and_load_ticket("A3")
+        ticket2 = self._insert_and_load_ticket("A2")
+        ticket3 = self._insert_and_load_ticket("A3")
         #act
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, dependent1, "dependent")
-        relations_system.add(
-            ticket, dependent2, "dependent")
+        self.add_relation(ticket, DEPENDS_ON, ticket2)
+        self.add_relation(ticket, DEPENDS_ON, ticket3)
         #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual(2, len(relations))
+        self.assertEqual(2, len(self.get_relations(ticket)))
+        self.assertEqual(1, len(self.get_relations(ticket2)))
+        self.assertEqual(1, len(self.get_relations(ticket3)))
 
     def test_will_not_create_more_than_one_identical_relations(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        dependent1 = self._insert_and_load_ticket("A2")
+        ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, dependent1, "dependent")
+        self.add_relation(ticket, DEPENDS_ON, ticket2)
         self.assertRaisesRegexp(
             TracError,
             "already exists",
-            relations_system.add,
-            ticket, dependent1, "dependent")
+            self.add_relation,
+            ticket, DEPENDS_ON, ticket2
+        )
 
     def test_will_not_create_more_than_one_identical_relations_db_level(self):
         sql = """INSERT INTO bloodhound_relations (source, destination, type)
                     VALUES (%s, %s, %s)"""
         with self.env.db_transaction as db:
-            db(sql, ["1", "2", "dependson"])
+            db(sql, ["1", "2", DEPENDS_ON])
             self.assertRaises(
                 self.env.db_exc.IntegrityError,
                 db,
                 sql,
-                ["1", "2", "dependson"])
+                ["1", "2", DEPENDS_ON]
+            )
 
     def test_can_add_one_way_relations(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        referred_ticket = self._insert_and_load_ticket("A2")
+        ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, referred_ticket, "refersto")
-        #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual("refersto", relations[0]["type"])
-        self.assertEqual(unicode(referred_ticket.id),
+        self.add_relation(ticket, REFERS_TO, ticket2)
+        #assert
+        relations = self.get_relations(ticket)
+        self.assertEqual(REFERS_TO, relations[0]["type"])
+        self.assertEqual(unicode(ticket2.id),
                          relations[0]["destination"].id)
 
-        relations = relations_system.get_relations(referred_ticket)
-        self.assertEqual(0, len(relations))
+        self.assertEqual(0, len(self.get_relations(ticket2)))
 
     def test_can_delete_two_ways_relation(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        dependent_ticket = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, dependent_ticket, "dependson")
-        relations = relations_system.get_relations(ticket)
+        ticket2 = self._insert_and_load_ticket("A2")
+        self.add_relation(ticket, DEPENDS_ON, ticket2)
+
+        relations = self.get_relations(ticket)
         self.assertEqual(1, len(relations))
+        self.assertEqual(1, len(self.get_relations(ticket2)))
+
         #act
-        relation_to_delete = relations[0]
-        relations_system.delete(relation_to_delete["relation_id"])
+        self.delete_relation(relations[0])
         #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual(0, len(relations))
+        self.assertEqual(0, len(self.get_relations(ticket)))
+        self.assertEqual(0, len(self.get_relations(ticket2)))
 
     def test_can_delete_single_way_relation(self):
         #arrange
         ticket = self._insert_and_load_ticket("A1")
-        referred = self._insert_and_load_ticket("A2")
+        ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket, referred, "refersto")
-
-        ticket = self._insert_and_load_ticket("A1")
-        dependent_ticket = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
-        relations_system.add(
-            ticket, dependent_ticket, "dependson")
-        relations = relations_system.get_relations(ticket)
+        self.add_relation(ticket, REFERS_TO, ticket2)
 
+        relations = self.get_relations(ticket)
         self.assertEqual(1, len(relations))
-        reverted_relations = relations_system.get_relations(dependent_ticket)
-        self.assertEqual(1, len(reverted_relations))
+        self.assertEqual(0, len(self.get_relations(ticket2)))
         #act
-        # self._debug_select()
-        relation_to_delete = relations[0]
-        relations_system.delete(relation_to_delete["relation_id"])
-        #assert
-        relations = relations_system.get_relations(ticket)
-        self.assertEqual(0, len(relations))
-        reverted_relations = relations_system.get_relations(dependent_ticket)
-        self.assertEqual(0, len(reverted_relations))
+        self.delete_relation(relations[0])
+        #assert
+        self.assertEqual(0, len(self.get_relations(ticket)))
 
     def test_can_not_add_cycled_immediate_relations(self):
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
 
         try:
-            relations_system.add(ticket2, ticket1, "dependson")
+            self.add_relation(ticket2, DEPENDS_ON, ticket1)
             self.fail("Should throw an exception")
         except ValidationError as ex:
             self.assertSequenceEqual(
@@ -183,23 +164,22 @@ class ApiTestCase(BaseRelationsTestCase)
         ticket2 = self._insert_and_load_ticket("A2")
         ticket3 = self._insert_and_load_ticket("A3")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependson")
-        relations_system.add(ticket1, ticket3, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
+        self.add_relation(ticket1, DEPENDS_ON, ticket3)
+
+        self.assertEqual(2, len(self.get_relations(ticket1)))
 
     def test_can_not_add_cycled_in_different_direction(self):
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         self.assertRaises(
             ValidationError,
-            relations_system.add,
-            ticket1,
-            ticket2,
-            "dependent")
+            self.add_relation,
+            ticket1, DEPENDENCY_OF, ticket2
+        )
 
     def test_can_not_add_cycled_relations(self):
         #arrange
@@ -207,69 +187,52 @@ class ApiTestCase(BaseRelationsTestCase)
         ticket2 = self._insert_and_load_ticket("A2")
         ticket3 = self._insert_and_load_ticket("A3")
         #act
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependson")
-        relations_system.add(ticket2, ticket3, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
+        self.add_relation(ticket2, DEPENDS_ON, ticket3)
         self.assertRaises(
             ValidationError,
-            relations_system.add,
-            ticket3,
-            ticket1,
-            "dependson")
+            self.add_relation,
+            ticket3, DEPENDS_ON, ticket1
+        )
 
-    def test_can_not_add_more_than_one_parents(self):
+    def test_can_not_add_more_than_one_parent(self):
         #arrange
         child = self._insert_and_load_ticket("A1")
         parent1 = self._insert_and_load_ticket("A2")
         parent2 = self._insert_and_load_ticket("A3")
         #act
-        relations_system = self.relations_system
-        relations_system.add(parent1, child, 'parent')
+        self.add_relation(parent1, PARENT, child)
         self.assertRaises(
             ValidationError,
-            relations_system.add,
-            parent2,
-            child,
-            'parent')
+            self.add_relation,
+            parent2, PARENT, child
+        )
 
-    def test_can_not_add_more_than_one_parents_via_children(self):
-        #arrange
-        child = self._insert_and_load_ticket("A1")
-        parent1 = self._insert_and_load_ticket("A2")
-        parent2 = self._insert_and_load_ticket("A3")
-        #act
-        relations_system = self.relations_system
-        relations_system.add(child, parent1, "children")
         self.assertRaises(
             ValidationError,
-            relations_system.add,
-            child,
-            parent2,
-            "children")
+            self.add_relation,
+            child, CHILD, parent2
+        )
 
     def test_can_add_more_than_one_child(self):
         parent = self._insert_and_load_ticket("A1")
         child1 = self._insert_and_load_ticket("A2")
         child2 = self._insert_and_load_ticket("A3")
 
-        relations_system = self.relations_system
-        relations_system.add(parent, child1, 'parent')
-        relations_system.add(parent, child2, 'parent')
-
+        self.add_relation(parent, PARENT, child1)
+        self.add_relation(parent, PARENT, child2)
+        self.assertEqual(2, len(self.get_relations(parent)))
 
     def test_ticket_can_be_resolved(self):
         #arrange
-        child = self._insert_and_load_ticket("A1")
-        parent1 = self._insert_and_load_ticket("A2")
-        parent2 = self._insert_and_load_ticket("A3")
+        parent = self._insert_and_load_ticket("A1")
+        child = self._insert_and_load_ticket("A2")
         #act
-        relations_system = self.relations_system
-        relations_system.add(child, parent1, "children")
+        self.add_relation(parent, PARENT, child)
 
         self.req.args['action'] = 'resolve'
         warnings = \
             TicketRelationsSpecifics(self.env).validate_ticket(self.req, child)
-
         self.assertEqual(0, len(list(warnings)))
 
     def test_can_save_and_load_relation_time(self):
@@ -278,8 +241,8 @@ class ApiTestCase(BaseRelationsTestCase)
         ticket2 = self._insert_and_load_ticket("A2")
         #act
         time = datetime.now(utc)
-        self.relations_system.add(ticket1, ticket2, "dependent", when=time)
-        relations = self.relations_system.get_relations(ticket1)
+        self.add_relation(ticket1, DEPENDS_ON, ticket2, when=time)
+        relations = self.get_relations(ticket1)
         #assert
         self.assertEqual(time, relations[0]["when"])
 
@@ -287,7 +250,7 @@ class ApiTestCase(BaseRelationsTestCase)
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        self.relations_system.add(ticket1, ticket2, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         #act
         self.req.args["action"] = 'resolve'
         warnings = TicketRelationsSpecifics(self.env).validate_ticket(
@@ -299,7 +262,7 @@ class ApiTestCase(BaseRelationsTestCase)
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2", status="closed")
-        self.relations_system.add(ticket1, ticket2, "dependson")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         #act
         self.req.args["action"] = 'resolve'
         warnings = TicketRelationsSpecifics(self.env).validate_ticket(
@@ -311,13 +274,13 @@ class ApiTestCase(BaseRelationsTestCase)
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependent")
-        self.assertEqual(1, len(relations_system.get_relations(ticket2)))
+
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
+        self.assertEqual(1, len(self.get_relations(ticket2)))
         #act
         ticket1.delete()
         #assert
-        self.assertEqual(0, len(relations_system.get_relations(ticket2)))
+        self.assertEqual(0, len(self.get_relations(ticket2)))
 
     def test_that_no_error_when_deleting_ticket_without_relations(self):
         #arrange
@@ -326,19 +289,17 @@ class ApiTestCase(BaseRelationsTestCase)
         ticket1.delete()
 
     def test_can_add_multi_product_relations(self):
-        #arrange
-        ticket1 = self._insert_and_load_ticket("A1")
 
+        ticket1 = self._insert_and_load_ticket("A1")
         product2 = "tp2"
         self._load_product_from_data(self.global_env, product2)
         p2_env = ProductEnvironment(self.global_env, product2)
         ticket2 = self._insert_and_load_ticket_with_env(p2_env, "A2")
-        relations_system = self.relations_system
-        #act
-        relations_system.add(ticket1, ticket2, "mprel")
-        #assert
-        self.assertEqual(1, len(relations_system.get_relations(ticket1)))
-        self.assertEqual(1, len(relations_system.get_relations(ticket2)))
+
+        self.add_relation(ticket1, MULTIPRODUCT_REL, ticket2)
+
+        self.assertEqual(1, len(self.get_relations(ticket1)))
+        self.assertEqual(1, len(self.get_relations(ticket2)))
 
     def _debug_select(self):
         """
@@ -354,38 +315,34 @@ class ApiTestCase(BaseRelationsTestCase)
     def test_parent_relation_is_incompatible_with_two_way_relations(self):
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        self.relations_system.add(ticket1, ticket2, "dependent")
+        self.add_relation(ticket2, DEPENDS_ON, ticket1)
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1,
-            ticket2,
-            "parent")
+            self.add_relation,
+            ticket1, PARENT, ticket2
+        )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1,
-            ticket2,
-            "children")
+            self.add_relation,
+            ticket1, CHILD, ticket2
+        )
 
     def test_parent_relation_is_incompatible_with_one_way_relations(self):
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        self.relations_system.add(ticket1, ticket2, "refersto")
+        self.add_relation(ticket1, REFERS_TO, ticket2)
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1,
-            ticket2,
-            "parent")
+            self.add_relation,
+            ticket1, PARENT, ticket2
+        )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1,
-            ticket2,
-            "children")
+            self.add_relation,
+            ticket1, CHILD, ticket2
+        )
 
     def test_parent_must_be_in_same_product(self):
         ticket1 = self._insert_and_load_ticket("A1")
@@ -396,75 +353,82 @@ class ApiTestCase(BaseRelationsTestCase)
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1, ticket2, "parent"
+            self.add_relation,
+            ticket1, PARENT, ticket2
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            ticket1, ticket2, "children"
+            self.add_relation,
+            ticket1, CHILD, ticket2
         )
 
     def test_cannot_create_other_relations_between_descendants(self):
         t1, t2, t3, t4, t5 = map(self._insert_and_load_ticket, "12345")
-        self.relations_system.add(t2, t4, "parent")  #    t1 -> t2
-        self.relations_system.add(t2, t3, "parent")  #         /  \
-        self.relations_system.add(t1, t2, "parent")  #       t3    t4
+        self.add_relation(t1, PARENT, t2)  #    t1 -> t2
+        self.add_relation(t2, PARENT, t3)  #         /  \
+        self.add_relation(t2, PARENT, t4)  #       t3    t4
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t2, t1, "dependent"
+            self.add_relation,
+            t2, DEPENDS_ON, t1
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t1, t2, "dependent"
+            self.add_relation,
+            t1, DEPENDS_ON, t2
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t4, t1, "dependent"
+            self.add_relation,
+            t4, DEPENDS_ON, t1
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t1, t3, "dependent"
+            self.add_relation,
+            t1, DEPENDS_ON, t3
         )
         try:
-            self.relations_system.add(t5, t1,"dependent")
-            self.relations_system.add(t4, t3, "dependent")
+            self.add_relation(t1, DEPENDS_ON, t5)
+            self.add_relation(t3, DEPENDS_ON, t4)
         except ValidationError:
             self.fail("Could not add valid relation.")
 
     def test_cannot_add_parent_if_this_would_cause_invalid_relations(self):
         t1, t2, t3, t4, t5 = map(self._insert_and_load_ticket, "12345")
-        self.relations_system.add(t2, t4, "parent")  #    t1 -> t2
-        self.relations_system.add(t2, t3, "parent")  #         /  \
-        self.relations_system.add(t1, t2, "parent")  #       t3    t4    t5
-        self.relations_system.add(t5, t2, "dependent")
+        self.add_relation(t1, PARENT, t2)  #    t1 -> t2
+        self.add_relation(t2, PARENT, t3)  #         /  \
+        self.add_relation(t2, PARENT, t4)  #       t3    t4    t5
+        self.add_relation(t2, DEPENDS_ON, t5)
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t2, t5, "parent"
+            self.add_relation,
+            t2, PARENT, t5
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t3, t5, "parent"
+            self.add_relation,
+            t3, PARENT, t5
         )
         self.assertRaises(
             ValidationError,
-            self.relations_system.add, t5, t1, "parent"
+            self.add_relation,
+            t5, PARENT, t1,
         )
         try:
-            self.relations_system.add(t1, t5, "parent")
+            self.add_relation(t1, PARENT, t5)
         except ValidationError:
             self.fail("Could not add valid relation.")
 
     def test_cannot_close_ticket_with_open_children(self):
-        t1 = self._insert_and_load_ticket("1")                  #     t1
-        t2 = self._insert_and_load_ticket("2", status='closed') #   /  | \
-        t3 = self._insert_and_load_ticket("3")                  #  t2 t3 t4
+        t1 = self._insert_and_load_ticket("1")  #     t1
+        t2 = self._insert_and_load_ticket("2", status='closed')  #   /  | \
+        t3 = self._insert_and_load_ticket("3")  #  t2 t3 t4
         t4 = self._insert_and_load_ticket("4")
-        self.relations_system.add(t1, t2, "parent")
-        self.relations_system.add(t1, t3, "parent")
-        self.relations_system.add(t1, t4, "parent")
+        self.add_relation(t1, PARENT, t2)
+        self.add_relation(t1, PARENT, t3)
+        self.add_relation(t1, PARENT, t4)
 
         # A warning is be returned for each open ticket
         self.req.args["action"] = 'resolve'
@@ -479,36 +443,46 @@ class ApiTestCase(BaseRelationsTestCase)
 
         self.assertRaises(
             ValidationError,
-            self.relations_system.add,
-            t1,
-            t2,
-            "duplicateof",
+            self.add_relation,
+            t1, DUPLICATE_OF, t2
         )
-        self.relations_system.add(t2, t1, "duplicateof")
+        self.add_relation(t2, DUPLICATE_OF, t1)
 
     def test_detects_blocker_cycles(self):
         t1, t2, t3, t4, t5 = map(self._insert_and_load_ticket, "12345")
-        self.relations_system.add(t1, t2, "blocks")
-        self.relations_system.add(t3, t2, "dependson")
-        self.relations_system.add(t4, t3, "blockedby")
-        self.relations_system.add(t4, t5, "dependent")
-
-        self.assertRaises(ValidationError,
-                          self.relations_system.add, t2, t1, "blocks")
-        self.assertRaises(ValidationError,
-                          self.relations_system.add, t3, t1, "dependent")
-        self.assertRaises(ValidationError,
-                          self.relations_system.add, t1, t2, "blockedby")
-        self.assertRaises(ValidationError,
-                          self.relations_system.add, t1, t5, "dependson")
-
-        self.relations_system.add(t1, t2, "dependent")
-        self.relations_system.add(t2, t3, "blocks")
-        self.relations_system.add(t4, t3, "dependson")
-        self.relations_system.add(t5, t4, "blockedby")
+        self.add_relation(t1, BLOCKS, t2)
+        self.add_relation(t3, DEPENDS_ON, t2)
+        self.add_relation(t4, BLOCKED_BY, t3)
+        self.add_relation(t4, DEPENDENCY_OF, t5)
 
-        self.relations_system.add(t1, t2, "refersto")
-        self.relations_system.add(t2, t1, "refersto")
+        self.assertRaises(
+            ValidationError,
+            self.add_relation,
+            t2, BLOCKS, t1
+        )
+        self.assertRaises(
+            ValidationError,
+            self.add_relation,
+            t3, DEPENDENCY_OF, t1
+        )
+        self.assertRaises(
+            ValidationError,
+            self.add_relation,
+            t1, BLOCKED_BY, t2
+        )
+        self.assertRaises(
+            ValidationError,
+            self.add_relation,
+            t1, DEPENDS_ON, t5
+        )
+
+        self.add_relation(t1, DEPENDENCY_OF, t2)
+        self.add_relation(t2, BLOCKS, t3)
+        self.add_relation(t4, DEPENDS_ON, t3)
+        self.add_relation(t5, BLOCKED_BY, t4)
+
+        self.add_relation(t1, REFERS_TO, t2)
+        self.add_relation(t2, REFERS_TO, t1)
 
     def test_can_find_ticket_by_id_from_same_env(self):
         """ Can find ticket given #id"""
@@ -552,30 +526,27 @@ class RelationChangingListenerTestCase(B
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
         test_changing_listener = self.env[TestRelationChangingListener]
         #act
-        relations_system.add(ticket1, ticket2, "dependent")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         #assert
         self.assertEqual("adding_relation", test_changing_listener.action)
         relation = test_changing_listener.relation
-        self.assertEqual("dependent", relation.type)
+        self.assertEqual(DEPENDS_ON, relation.type)
 
     def test_can_sent_deleting_event(self):
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
         test_changing_listener = self.env[TestRelationChangingListener]
-        relations_system.add(ticket1, ticket2, "dependent")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         #act
-        relations = relations_system.get_relations(ticket1)
-        relation_to_delete = relations[0]
-        relations_system.delete(relation_to_delete["relation_id"])
+        relations = self.get_relations(ticket1)
+        self.delete_relation(relations[0])
         #assert
         self.assertEqual("deleting_relation", test_changing_listener.action)
         relation = test_changing_listener.relation
-        self.assertEqual("dependent", relation.type)
+        self.assertEqual(DEPENDS_ON, relation.type)
 
 
 class TicketChangeRecordUpdaterTestCase(BaseRelationsTestCase):
@@ -583,9 +554,8 @@ class TicketChangeRecordUpdaterTestCase(
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
         #act
-        relations_system.add(ticket1, ticket2, "dependent")
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
         #assert
         change_log1 = Ticket(self.env, ticket1.id).get_changelog()
         self.assertEquals(1, len(change_log1))
@@ -597,12 +567,11 @@ class TicketChangeRecordUpdaterTestCase(
         #arrange
         ticket1 = self._insert_and_load_ticket("A1")
         ticket2 = self._insert_and_load_ticket("A2")
-        relations_system = self.relations_system
-        relations_system.add(ticket1, ticket2, "dependent")
-        relations = relations_system.get_relations(ticket1)
+
+        self.add_relation(ticket1, DEPENDS_ON, ticket2)
+        relations = self.get_relations(ticket1)
         #act
-        relation_to_delete = relations[0]
-        relations_system.delete(relation_to_delete["relation_id"])
+        self.delete_relation(relations[0])
         #assert
         change_log1 = Ticket(self.env, ticket1.id).get_changelog()
         self.assertEquals(2, len(change_log1))

Modified: bloodhound/trunk/bloodhound_relations/bhrelations/tests/base.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/base.py?rev=1574841&r1=1574840&r2=1574841&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_relations/bhrelations/tests/base.py (original)
+++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/base.py Thu Mar  6 
11:12:21 2014
@@ -33,6 +33,19 @@ except ImportError:
     locale_en = None
 
 
+PARENT = "parent"
+CHILD = "child"
+REFERS_TO = "refersto"
+DEPENDS_ON = "dependson"
+DEPENDENCY_OF = "dependent"
+DUPLICATE_OF = "duplicateof"
+DUPLICATED_BY = "duplicatedby"
+BLOCKED_BY = "blockedby"
+BLOCKS = "blocks"
+MULTIPRODUCT_REL = "mprel"
+MULTIPRODUCT_BACKREL = "mpbackrel"
+
+
 class BaseRelationsTestCase(MultiproductTestCase):
     def setUp(self, enabled=()):
         env = EnvironmentStub(
@@ -46,24 +59,28 @@ class BaseRelationsTestCase(Multiproduct
         env.config.set('bhrelations', 'duplicate_relation',
                        'duplicateof')
         config_name = RELATIONS_CONFIG_NAME
-        env.config.set(config_name, 'dependency', 'dependson,dependent')
+        env.config.set(config_name, 'dependency',
+                       ','.join([DEPENDS_ON, DEPENDENCY_OF]))
         env.config.set(config_name, 'dependency.validators',
                        'NoCycles,SingleProduct')
         env.config.set(config_name, 'dependson.blocks', 'true')
-        env.config.set(config_name, 'parent_children', 'parent,children')
+        env.config.set(config_name, 'parent_children',
+                       ','.join([PARENT, CHILD]))
         env.config.set(config_name, 'parent_children.validators',
                        'OneToMany,SingleProduct,NoCycles')
         env.config.set(config_name, 'children.label', 'Overridden')
         env.config.set(config_name, 'parent.copy_fields',
                        'summary, foo')
         env.config.set(config_name, 'parent.exclusive', 'true')
-        env.config.set(config_name, 'multiproduct_relation', 'mprel,mpbackrel')
-        env.config.set(config_name, 'oneway', 'refersto')
-        env.config.set(config_name, 'duplicate', 'duplicateof,duplicatedby')
+        env.config.set(config_name, 'multiproduct_relation',
+                       ','.join([MULTIPRODUCT_REL, MULTIPRODUCT_BACKREL]))
+        env.config.set(config_name, 'oneway', REFERS_TO)
+        env.config.set(config_name, 'duplicate',
+                       ','.join([DUPLICATE_OF, DUPLICATED_BY]))
         env.config.set(config_name, 'duplicate.validators', 'ReferencesOlder')
         env.config.set(config_name, 'duplicateof.label', 'is a duplicate of')
         env.config.set(config_name, 'duplicatedby.label', 'duplicates')
-        env.config.set(config_name, 'blocker', 'blockedby,blocks')
+        env.config.set(config_name, 'blocker', ','.join([BLOCKED_BY, BLOCKS]))
         env.config.set(config_name, 'blockedby.blocks', 'true')
 
         self.global_env = env
@@ -105,3 +122,12 @@ class BaseRelationsTestCase(Multiproduct
 
     def _insert_and_load_ticket_with_env(self, env, summary, **kw):
         return Ticket(env, self._insert_ticket(env, summary, **kw))
+
+    def add_relation(self, source, reltype, destination, *args, **kwargs):
+        return self.relations_system.add(source, destination, reltype, *args, 
**kwargs)
+
+    def get_relations(self, ticket):
+        return self.relations_system.get_relations(ticket)
+
+    def delete_relation(self, relation):
+        self.relations_system.delete(relation["relation_id"])

Modified: 
bloodhound/trunk/bloodhound_relations/bhrelations/tests/notification.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/notification.py?rev=1574841&r1=1574840&r2=1574841&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_relations/bhrelations/tests/notification.py 
(original)
+++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/notification.py Thu 
Mar  6 11:12:21 2014
@@ -20,7 +20,7 @@ import unittest
 from trac.tests.notification import SMTPServerStore, SMTPThreadedServer
 from trac.ticket.tests.notification import (
     SMTP_TEST_PORT, smtp_address, parse_smtp_message)
-from bhrelations.tests.base import BaseRelationsTestCase
+from bhrelations.tests.base import BaseRelationsTestCase, DEPENDENCY_OF
 from bhrelations.notification import RelationNotifyEmail
 
 
@@ -65,8 +65,7 @@ class NotificationTestCase(BaseRelations
             owner='bob.u...@example.net',
             cc='bob.u...@example.com, bob....@example.org, '
                'bob....@example.net')
-        relation = self.relations_system.add(
-            ticket, ticket2, "dependent")
+        relation = self.add_relation(ticket, DEPENDENCY_OF, ticket2)
 
         self.notifier.notify(relation)
 
@@ -93,7 +92,7 @@ class NotificationTestCase(BaseRelations
         ticket = self._insert_and_load_ticket('Foo', reporter='anonymous')
         ticket2 = self._insert_and_load_ticket('Bar', reporter='anonymous')
 
-        relation = self.relations_system.add(ticket, ticket2, "dependent")
+        relation = self.add_relation(ticket, DEPENDENCY_OF, ticket2)
         self.notifier.notify(relation)
 
         sender = self.smtpd.get_sender()
@@ -108,7 +107,7 @@ class NotificationTestCase(BaseRelations
         ticket = self._insert_and_load_ticket('Foo', reporter='anonymous')
         ticket2 = self._insert_and_load_ticket('Bar', reporter='anonymous')
 
-        relation = self.relations_system.add(ticket, ticket2, "dependent")
+        relation = self.add_relation(ticket, DEPENDENCY_OF, ticket2)
         self.notifier.notify(relation)
 
         relations = self.env.db_direct_query(

Modified: bloodhound/trunk/bloodhound_relations/bhrelations/tests/search.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/search.py?rev=1574841&r1=1574840&r2=1574841&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_relations/bhrelations/tests/search.py (original)
+++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/search.py Thu Mar  
6 11:12:21 2014
@@ -26,7 +26,7 @@ from bhsearch.api import BloodhoundSearc
 import bhsearch.query_parser, bhsearch.search_resources.ticket_search, \
     bhsearch.whoosh_backend
 import bhrelations.search
-from bhrelations.tests.base import BaseRelationsTestCase
+from bhrelations.tests.base import BaseRelationsTestCase, DEPENDENCY_OF
 
 
 class SearchIntegrationTestCase(BaseRelationsTestCase):
@@ -44,30 +44,30 @@ class SearchIntegrationTestCase(BaseRela
         t1 = self._insert_and_load_ticket("Foo")
         t2 = self._insert_and_load_ticket("Bar")
 
-        self.relations_system.add(t1, t2, 'dependent')
+        self.add_relation(t1, DEPENDENCY_OF, t2)
 
-        result = self.search_api.query('dependent:#2')
+        result = self.search_api.query('%s:#2' % DEPENDENCY_OF)
         self.assertEqual(result.hits, 1)
 
     def test_relations_are_indexed_on_deletion(self):
         t1 = self._insert_and_load_ticket("Foo")
         t2 = self._insert_and_load_ticket("Bar")
 
-        self.relations_system.add(t1, t2, 'dependent')
-        relations = self.relations_system.get_relations(t1)
+        self.add_relation(t1, DEPENDENCY_OF, t2)
+        relations = self.get_relations(t1)
         self.relations_system.delete(relations[0]["relation_id"])
 
-        result = self.search_api.query('dependent:#2')
+        result = self.search_api.query('%s:#2' % DEPENDENCY_OF)
         self.assertEqual(result.hits, 0)
 
     def test_different_types_of_queries(self):
         t1 = self._insert_and_load_ticket("Foo")
         t2 = self._insert_and_load_ticket("Bar")
 
-        self.relations_system.add(t1, t2, 'dependent')
+        self.add_relation(t1, DEPENDENCY_OF, t2)
 
-        self.assertEqual(self.search_api.query('dependent:#2').hits, 1)
-        self.assertEqual(self.search_api.query('dependent:#tp1-2').hits, 1)
+        self.assertEqual(self.search_api.query('%s:#2' % DEPENDENCY_OF).hits, 
1)
+        self.assertEqual(self.search_api.query('%s:#tp1-2' % 
DEPENDENCY_OF).hits, 1)
 
 
 def suite():

Modified: bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py
URL: 
http://svn.apache.org/viewvc/bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py?rev=1574841&r1=1574840&r2=1574841&view=diff
==============================================================================
--- bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py (original)
+++ bloodhound/trunk/bloodhound_relations/bhrelations/tests/web_ui.py Thu Mar  
6 11:12:21 2014
@@ -19,7 +19,8 @@
 import unittest
 from bhrelations.api import ResourceIdSerializer
 from bhrelations.web_ui import RelationManagementModule
-from bhrelations.tests.base import BaseRelationsTestCase
+from bhrelations.tests.base import BaseRelationsTestCase,\
+    DEPENDS_ON, DUPLICATE_OF
 
 from multiproduct.ticket.web_ui import TicketModule
 from trac.ticket import Ticket
@@ -79,7 +80,7 @@ class RelationManagementModuleTestCase(B
         t2 = self._insert_ticket(self.env, "Bar")
         self.req.args['add'] = True
         self.req.args['dest_tid'] = str(t2)
-        self.req.args['reltype'] = 'dependson'
+        self.req.args['reltype'] = DEPENDS_ON
 
         data = self.process_request()
 
@@ -89,7 +90,7 @@ class RelationManagementModuleTestCase(B
         t2 = self._insert_ticket(self.env, "Bar")
         self.req.args['add'] = True
         self.req.args['dest_tid'] = str(t2)
-        self.req.args['reltype'] = 'dependson'
+        self.req.args['reltype'] = DEPENDS_ON
         rlm = RelationManagementModule(self.env)
         rlm.notify_relation_changed = self._failing_notification
 
@@ -123,16 +124,16 @@ class ResolveTicketIntegrationTestCase(B
         self.assertRaises(RequestDone,
                           self.resolve_as_duplicate,
                           t2, self.get_id(t1))
-        relations = self.relations_system.get_relations(t2)
+        relations = self.get_relations(t2)
         self.assertEqual(len(relations), 1)
         relation = relations[0]
         self.assertEqual(relation['destination_id'], self.get_id(t1))
-        self.assertEqual(relation['type'], 'duplicateof')
+        self.assertEqual(relation['type'], DUPLICATE_OF)
 
     def test_prefills_duplicate_id_if_relation_exists(self):
         t1 = self._insert_and_load_ticket("Foo")
         t2 = self._insert_and_load_ticket("Bar")
-        self.relations_system.add(t2, t1, 'duplicateof')
+        self.add_relation(t2, DUPLICATE_OF, t1)
         self.req.path_info = '/ticket/%d' % t2.id
 
         data = self.process_request()
@@ -144,7 +145,7 @@ class ResolveTicketIntegrationTestCase(B
     def test_can_set_duplicate_resolution_even_if_relation_exists(self):
         t1 = self._insert_and_load_ticket("Foo")
         t2 = self._insert_and_load_ticket("Bar")
-        self.relations_system.add(t2, t1, 'duplicateof')
+        self.add_relation(t2, DUPLICATE_OF, t1)
 
         self.assertRaises(RequestDone,
                           self.resolve_as_duplicate,


Reply via email to