Пример #1
0
 def test_deletes(self):
     root = _makeOneRoot(self.request)
     coll = root['example_collection']
     instance1 = _makeOneObject(self.request, title='Instance #1')
     instance2 = _makeOneObject(self.request, title='Instance #2')
     instance3 = _makeOneObject(self.request, title='Instance #3')
     coll.add_child(instance1)
     coll.add_child(instance2)
     coll.add_child(instance3)
     name1 = instance1.__name__
     name2 = instance2.__name__
     name3 = instance3.__name__
     id1 = instance1._id
     id2 = instance2._id
     id3 = instance3._id
     from audrey import sortutil
     c_and_t = coll.get_child_names_and_total(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(c_and_t['total'], 3)
     self.assertEqual(c_and_t['items'], [name1, name2, name3])
     self.assertEqual(coll.delete_child_by_name(name1), 1)
     c_and_t = coll.get_child_names_and_total(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(c_and_t['total'], 2)
     self.assertEqual(c_and_t['items'], [name2, name3])
     self.assertEqual(coll.delete_child_by_name(name1), 0)
     self.assertEqual(coll.delete_child_by_id(id3), 1)
     c_and_t = coll.get_child_names_and_total(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(c_and_t['total'], 1)
     self.assertEqual(c_and_t['items'], [name2])
     self.assertEqual(coll.delete_child_by_id(id3), 0)
Пример #2
0
 def test_child_getters(self):
     root = _makeOneRoot(self.request)
     coll = root['example_collection']
     c_and_t = coll.get_children_and_total()
     self.assertEqual(c_and_t['total'], 0)
     self.assertEqual(c_and_t['items'], [])
     from bson.objectid import ObjectId
     self.assertEqual(coll.get_child_by_id(ObjectId()), None)
     instance = _makeOneObject(self.request)
     instance2 = _makeOneObject(self.request, title='Another')
     instance3 = _makeOneObject(self.request, title='One More')
     self.assertNotEqual(instance.title, instance2.title)
     coll.add_child(instance)
     c_and_t = coll.get_children_and_total()
     self.assertEqual(c_and_t['total'], 1)
     self.assertEqual([x._id for x in c_and_t['items']], [instance._id])
     self.assertNotEqual(coll.get_child_by_id(instance._id), None)
     coll.add_child(instance2)
     self.assertNotEqual(instance._id, instance2._id)
     from audrey import sortutil
     c_and_t = coll.get_children_and_total(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(c_and_t['total'], 2)
     self.assertEqual([x._id for x in c_and_t['items']], [instance._id, instance2._id])
     self.assertNotEqual(coll.get_child_by_id(instance2._id), None)
     self.assertEqual(coll[instance.__name__].title, instance.title)
     self.assertEqual(coll[instance2.__name__].title, instance2.title)
     with self.assertRaises(KeyError):
         coll['foo']
     self.assertFalse(coll.has_child_with_name('bar'))
     self.assertTrue(coll.has_child_with_name(instance.__name__))
     result = coll.get_children(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual([x._id for x in result], [instance._id, instance2._id])
     n_and_t = coll.get_child_names_and_total(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(n_and_t['total'], 2)
     self.assertEqual(n_and_t['items'], [instance.__name__, instance2.__name__])
     coll.add_child(instance3)
     names = coll.get_child_names(sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(names, [instance.__name__, instance2.__name__, instance3.__name__])
     names = coll.get_child_names(skip=1, sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(names, [instance2.__name__, instance3.__name__])
     names = coll.get_child_names(limit=2, sort=sortutil.sort_string_to_mongo('_created'))
     self.assertEqual(names, [instance.__name__, instance2.__name__])
     names = []
     for child in coll.get_children_lazily(sort=sortutil.sort_string_to_mongo('-_created')):
         names.append(child.__name__)
     self.assertEqual(names, [instance3.__name__, instance2.__name__, instance.__name__])
Пример #3
0
    def test_naming_crud(self):
        root = _makeOneRoot(self.request)
        coll = root['example_naming_collection']
        from audrey import sortutil
        name = 'name1'
        instance = _makeOneNamedObject(self.request, name)
        result = root.basic_fulltext_search()
        self.assertEqual(result['total'], 0)
        coll.add_child(instance)
        self.assertTrue(coll.has_child_with_name(name))
        root.refresh_elastic()
        result = root.basic_fulltext_search()
        self.assertEqual(result['total'], 1)
        self.assertEqual(result['items'][0]._id, instance._id)

        # Create another object and try to add with the same name
        name2= 'name2' 
        instance2 = _makeOneNamedObject(self.request, name, title='Another Object')
        from audrey.exceptions import Veto
        with self.assertRaises(Veto) as cm:
            coll.add_child(instance2)
        self.assertEqual(cm.exception.args[0], '''The name "%s" is already in use.''' % name)

        self.assertEqual(coll.get_child_by_name(name2), None)

        # Now try to add again with a unique name
        instance2.__name__ = name2
        coll.add_child(instance2)
        c_and_t = coll.get_child_names_and_total(sort=sortutil.sort_string_to_mongo('_created'))
        self.assertEqual(c_and_t['total'], 2)
        self.assertEqual(c_and_t['items'], [name, name2])
        self.assertNotEqual(coll.get_child_by_name(name2), None)

        coll.delete_child_by_name(name)
        self.assertFalse(coll.has_child_with_name(name))
        result = root.basic_fulltext_search()
        self.assertEqual(result['total'], 1)
Пример #4
0
 def test_sortutil(self):
     from audrey import sortutil
     self.assertTrue(sortutil.sort_string_to_mongo('foo,-bar,+baz'), [('foo', 1), ('bar', -1), ('baz', 1)])
     self.assertTrue(sortutil.sort_string_to_elastic('foo,-bar,+baz'), 'foo,bar:desc,baz'), 
     self.assertTrue(sortutil.SortSpec('foo,-bar,+baz').to_string(pluses=True), '+foo,-bar,+baz')
     self.assertTrue(str(sortutil.SortSpec('foo,-bar,+baz')), 'foo,-bar,baz')