示例#1
0
 def test_unicode_io(self):
     """
     Tests that unicode is saved and retrieved properly
     """
     tm1 = TestVertexModel.create(test_val=9, name=u'test2')
     tm2 = TestVertexModel.get(tm1._id)
     tm1.delete()
示例#2
0
 def test_all_method_invalid_length(self):
     v1 = TestVertexModel.create()
     v2 = TestVertexModel.create()
     from mogwai.exceptions import MogwaiQueryError
     with self.assertRaises(MogwaiQueryError):
         TestVertexModel.all([v1.id, v2.id, 'invalid'])
     v1.delete()
     v2.delete()
示例#3
0
    def test_success_case(self):
        """ Tests that the update method works as expected """
        tm = TestVertexModel.create(test_val=8, name='123456789')
        tm2 = tm.update(test_val=9)

        tm3 = TestVertexModel.get(tm.id)
        self.assertEqual(tm2.test_val, 9)
        self.assertEqual(tm3.test_val, 9)
        tm.delete()
示例#4
0
 def test_model_deleting_works_properly(self):
     """
     Tests that an instance's delete method deletes the instance
     """
     tm = TestVertexModel.create(test_val=8, name='123456789')
     vid = tm.id
     tm.delete()
     with self.assertRaises(TestVertexModel.DoesNotExist):
         tm2 = TestVertexModel.get(vid)
    def test_value_managers_are_keeping_model_instances_isolated(self):
        """
        Tests that instance value managers are isolated from other instances
        """
        inst1 = TestVertexModel(test_val=5)
        inst2 = TestVertexModel(test_val=7)

        self.assertNotEquals(inst1.test_val, inst2.test_val)
        self.assertEquals(inst1.test_val, 5)
        self.assertEquals(inst2.test_val, 7)
示例#6
0
    def test_reload(self):
        """ Tests that and instance's reload method does an inplace update of the instance """
        tm0 = TestVertexModel.create(test_val=8, name='123456789')
        tm1 = TestVertexModel.get(tm0.id)
        tm1.test_val = 7
        tm1.save()

        tm0.reload()
        self.assertEqual(tm0.test_val, 7)
        tm0.delete()
示例#7
0
    def test_get_by_id(self):
        v1 = TestVertexModel.create()
        results = TestVertexModel.get(v1.id)
        self.assertIsInstance(results, TestVertexModel)
        self.assertEqual(results, v1)

        with self.assertRaises(TestEdgeModel.DoesNotExist):
            results = TestVertexModel.get(None)

        with self.assertRaises(TestEdgeModel.DoesNotExist):
            results = TestVertexModel.get('nonexistant')

        v2 = TestVertexModel2.create(test_val=0)
        with self.assertRaises(TestVertexModel.WrongElementType):
            results = TestVertexModel.get(v2.id)

        v2.delete()
        v1.delete()
示例#8
0
    def test_manual_properties(self):
        v = TestVertexModel.create(test_val=1, name='Test 7', some_property=32)

        print_("Got Results: {}".format(v))
        print_("Result dict: {}".format(v.as_dict()))
        print_("\tResult properties: {}".format(v._properties.keys()))
        print_("\tResult Manaul: {}".format(v._manual_values.items()))

        self.assertEqual(v['some_property'], 32)
        self.assertIn('some_property', v)  # This also tests __contains__
        self.assertIn('test_val', v)  # This also tests __contains__

        # test len(Element()), should return len(element._properties) + len(element._manual_values)
        self.assertEqual(len(v), 3)

        # test __iter__
        prop_keys = [key for key in v]
        self.assertEqual(len(prop_keys), 3)
        for prop_key in v:
            self.assertIn(prop_key, ['test_val', 'name', 'some_property'])

        # test keys()
        self.assertEqual(len(prop_keys), len(v.keys()))
        for prop_key in v.keys():
            self.assertIn(prop_key, prop_keys)

        # test values()
        prop_values = v.values()
        self.assertEqual(len(prop_values), 3)
        for prop_value in prop_values:
            self.assertIn(prop_value, [1, 'Test 7', 32])

        # test items()
        prop_items = v.items()
        self.assertEqual(len(prop_items), 3)
        for prop_key, prop_value in prop_items:
            self.assertIn(prop_key, ['test_val', 'name', 'some_property'])
            self.assertIn(prop_value, [1, 'Test 7', 32])

        # test change
        v['some_property'] = 42
        self.assertEqual(v['some_property'], 42)
        v.save()
        self.assertEqual(v['some_property'], 42)

        # test delete
        del v['some_property']
        # This should still exist, so the property can be removed from the database,
        # but should raise an AttributeError if attempted to access normally
        self.assertIn('some_property', v)
        self.assertIsNone(v._manual_values.get('some_property'))
        with self.assertRaises(AttributeError):
            value = v['some_property']
            print_("Got value: {}".format(value))

        v.delete()
示例#9
0
    def test_model_save_and_load(self):
        """
        Tests that models can be saved and retrieved
        """
        tm0 = TestVertexModel.create(test_val=8, name='123456789')
        tm1 = TestVertexModel.create(test_val=9, name='456789')
        tms = TestVertexModel.all([tm0.id, tm1.id])

        self.assertEqual(len(tms), 2)

        for pname in tm0._properties.keys():
            self.assertEquals(getattr(tm0, pname), getattr(tms[0], pname))

        tms = TestVertexModel.all([tm1.id, tm0.id])
        self.assertEqual(tms[0].id, tm1.id)
        self.assertEqual(tms[1].id, tm0.id)

        tm0.delete()
        tm1.delete()
示例#10
0
    def test_multiple_edge_traversal_with_type_filtering(self):
        """ Tests that using multiple edges for traversals works """
        v = TestVertexModel.create(test_val=1, name='Test1')

        v1 = TestVertexModel.create()
        e1 = TestEdgeModel.create(v, v1)

        v2 = TestVertexModel.create()
        e2 = OtherTestEdge.create(v, v2)

        v3 = TestVertexModel.create()
        e3 = YetAnotherTestEdge.create(v, v3)

        v4 = OtherTestModel.create()
        e4 = TestEdgeModel.create(v, v4)

        v5 = OtherTestModel.create()
        e5 = OtherTestEdge.create(v, v5)

        v6 = OtherTestModel.create()
        e6 = YetAnotherTestEdge.create(v, v6)

        self.assertEqual(len(v.outV()), 6)

        self.assertEqual(len(v.outV(TestEdgeModel, OtherTestEdge)), 4)
        self.assertEqual(len(v.outV(TestEdgeModel, OtherTestEdge, types=[TestVertexModel])), 2)

        e1.delete()
        e2.delete()
        e3.delete()
        e4.delete()
        e5.delete()
        e6.delete()
        v.delete()
        v1.delete()
        v2.delete()
        v3.delete()
        v4.delete()
        v5.delete()
        v6.delete()
示例#11
0
    def test_delete_methods(self):
        v1 = TestVertexModel.create()
        v2 = TestVertexModel.create()

        # delete_outE
        e1 = TestEdgeModel.create(v1, v2)
        v1.delete_outE(TestEdgeModel)

        # delete_inE
        e1 = TestEdgeModel.create(v1, v2)
        v2.delete_inE(TestEdgeModel)

        # delete_inV
        e1 = TestEdgeModel.create(v1, v2)
        v1.delete_inV(TestEdgeModel)

        # delete_outV
        v2 = TestVertexModel.create()
        e1 = TestEdgeModel.create(v1, v2)
        v2.delete_outV(TestEdgeModel)

        v2.delete()
示例#12
0
    def test_model_updating_works_properly(self):
        """
        Tests that subsequent saves after initial model creation work
        """
        tm = TestVertexModel.create(test_val=8, name='123456789')

        tm.test_val = 100
        tm.save()

        tm.test_val = 80
        tm.save()

        tm.test_val = 60
        tm.save()

        tm.test_val = 40
        tm.save()

        tm.test_val = 20
        tm.save()

        tm2 = TestVertexModel.get(tm.id)
        self.assertEquals(tm.test_val, tm2.test_val)
        tm.delete()
    def test_graph_property_attributes_handled_correctly(self):
        """
        Tests that graph property attributes are moved to a _properties dict and replaced with simple value attributes
        """

        #check class attributes
        self.assertHasAttr(TestVertexModel, '_properties')
        self.assertHasAttr(TestVertexModel, 'name')
        self.assertHasAttr(TestVertexModel, 'test_val')

        #check instance attributes
        inst = TestVertexModel()
        self.assertHasAttr(inst, 'name')
        self.assertHasAttr(inst, 'test_val')
        self.assertIsNone(inst.name)
        self.assertIsNone(inst.test_val)
示例#14
0
    def test_find_by_value_method(self):
        v1 = TestVertexModel.create(name='v1', test_val=-99)
        v2 = TestVertexModel.create(name='v2', test_val=-99)
        v3 = TestVertexModelDouble.create(name='v3', test_val=-100.0)

        self.assertEqual(len(TestVertexModel.find_by_value('name', 'v1')), 1)
        self.assertEqual(len(TestVertexModel.find_by_value('test_val', -99)), 2)
        self.assertEqual(len(TestVertexModel.find_by_value('name', 'bar')), 0)

        self.assertEqual(TestVertexModel.find_by_value('name', 'v1')[0], v1)

        self.assertEqual(len(TestVertexModelDouble.find_by_value('test_val', -100.0)), 1)
        v1.delete()
        v2.delete()
        v3.delete()
示例#15
0
 def setUpClass(cls):
     super(GraphRelationshipBaseTestCase, cls).setUpClass()
     cls.relationship_base_cls = Relationship
     cls.edge_model = TestEdgeModel
     cls.vertex_model = TestVertexModel
     cls.vertex_start = TestVertexModel.create(name='test relationship')
示例#16
0
 def setUpClass(cls):
     super(GraphRelationshipBaseTestCase, cls).setUpClass()
     cls.relationship_base_cls = Relationship
     cls.edge_model = TestEdgeModel
     cls.vertex_model = TestVertexModel
     cls.vertex_start = TestVertexModel.create(name='test relationship')
示例#17
0
 def setUp(self):
     super(TestEdgeIO, self).setUp()
     self.v1 = TestVertexModel.create(test_val=8, name='a')
     self.v2 = TestVertexModel.create(test_val=7, name='b')
示例#18
0
 def setUp(self):
     super(TestEdgeIO, self).setUp()
     self.v1 = TestVertexModel.create(test_val=8, name='a')
     self.v2 = TestVertexModel.create(test_val=7, name='b')
 def test_proper_table_naming(self):
     self.assertEqual(TestVertexModel.element_type, 'test_vertex_model')
     self.assertEqual(TestVertexModel.get_element_type(), 'test_vertex_model')
示例#20
0
 def test_unknown_names_raise_exception(self):
     """ Tests that passing in names for columns that don't exist raises an exception """
     tm = TestVertexModel.create(test_val=8, text='123456789')
     with self.assertRaises(TypeError):
         tm.update(jon='beard')
     tm.delete()
示例#21
0
 def test_all_method(self):
     with self.assertRaises(MogwaiQueryError):
         TestVertexModel.all(1)
示例#22
0
 def setUp(self):
     super(TestVertexTraversal, self).setUp()
     self.v1 = TestVertexModel.create(test_val=1, name='Test1')
     self.v2 = TestVertexModel.create(test_val=2, name='Test2')
     self.v3 = OtherTestModel.create(test_val=3, name='Test3')
     self.v4 = OtherTestModel.create(test_val=3, name='Test3')