Ejemplo n.º 1
0
 def test_non_existent_attribute(self):
     d = self.books[0].copy()
     d['non_existent_field'] = 'some data'
     with ORMSessionMockup():
         self.assertRaisesRegex(
             ValueError,
             r"model Book doesn't have attribute non_existent_field",
             ModelObjectCreate(Book), d)
         self.assertRaisesRegex(
             ValueError, r"model Book doesn't have attribute another",
             ModelObjectCreate(Book, fields=['name', 'another']), d)
Ejemplo n.º 2
0
 def test_default_fields(self):
     session = ORMSessionMockup()
     with session:
         a = ModelObjectCreate(Book)
         for book in self.books:
             a(book)
     self.assertEqual(self.books, session.commited)
Ejemplo n.º 3
0
 def test_for_each_to_model(self):
     session = ORMSessionMockup()
     a = Root().for_each(ModelObjectCreate(Book, unique=['name',
                                                         'author'])).root
     with session:
         # check for uniqueness also
         a(self.books + self.books)
     self.assertEqual(self.books, session.commited)
Ejemplo n.º 4
0
 def test_duplicates(self):
     session = ORMSessionMockup()
     with session:
         a = ModelObjectCreate(Book)
         for book in self.books + self.books:
             a(book)
     # twice duplicated books in commited list
     self.assertEqual(self.books + self.books, session.commited)
Ejemplo n.º 5
0
    def test_non_existent_field(self):
        class BookEx(Book):
            def __init__(self, year=None, **kwargs):
                super(BookEx, self).__init__(**kwargs)
                self.year = year

        with ORMSessionMockup():
            self.assertRaisesRegex(KeyError, r"data doesn't have key 'year'",
                                   ModelObjectCreate(BookEx, fields=['year']),
                                   self.books[0])
Ejemplo n.º 6
0
 def test_fields(self):
     session = ORMSessionMockup()
     with session:
         a = ModelObjectCreate(Book, fields=['name'])
         for book in self.books:
             a(book)
     # only name field is set
     for obj in session.commited:
         self.assertTrue(obj.name is not None)
         self.assertTrue(obj.author is None)
Ejemplo n.º 7
0
 def test_unique(self):
     session = ORMSessionMockup()
     with session:
         a = ModelObjectCreate(Book, unique=['name', 'author'])
         for book in self.books:
             a(book)
         for book in self.books:
             a(book)
     # only unique books in commited list
     self.assertEqual(self.books, session.commited)
Ejemplo n.º 8
0
    def test_fields_map(self):

        # parse data to another model
        class MyFavoriteBook:
            def __init__(self, favorite_name=None):
                self.favorite_name = favorite_name

        session = ORMSessionMockup()
        with session:
            a = ModelObjectCreate(MyFavoriteBook,
                                  fields=['favorite_name'],
                                  fields_map={'favorite_name': 'name'})
            for book in self.books:
                a(book)
        # check than name is correctly set
        for obj, book_dict in zip(session.commited, self.books):
            self.assertEqual(obj.favorite_name, book_dict['name'])
Ejemplo n.º 9
0
 def test_without_session(self):
     a = ModelObjectCreate(Book)
     self.assertRaisesRegex(
         RuntimeError, r"expected session object in threading.local()", a,
         self.data)
Ejemplo n.º 10
0
        """
        super(RenameFields, self).__init__()
        self.fields_map = fields_map

    def do(self, data):
        for old, new in self.fields_map.items():
            if old in data:
                data[new] = data.pop(old)
        return data


_transform = FieldsTransform({
    'published_parsed':
    lambda struct_time: datetime(*struct_time[:6]),
    'author':
    ModelObjectCreate(orm_model=User, fields=['name'], unique=['name']),
    'tags':
    Lambda(lambda ll: [el['term'] for el in ll]).for_each(
        ModelObjectCreate(orm_model=Tag, fields=['name'],
                          unique=['name'])).root
})

_store = ModelObjectCreate(
    orm_model=Post,
    fields=['title', 'guid', 'link', 'date', 'user', 'tags'],
    fields_map={
        'guid': 'id',
        'date': 'published_parsed',
        'user': '******'
    },
    unique=['guid'])