Introduction
I am trying to seed data in the table for a test. For this, I am using factory boy package.
I have set up a factory class that handles seeding.
class OrderItemFactory(factory.alchemy.SQLAlchemyModelFactory):
id = factory.Sequence(lambda n: n)
orders = factory.SubFactory(
'testsuite.database.factories.OrderFactory.OrderFactory')
items = factory.SubFactory(
'testsuite.database.factories.ItemFactory.ItemFactory')
class Meta:
model = OrderItem
sqlalchemy_session_persistence = 'commit'
Issue
In the test I run the following code to create an order.
# create order
order = OrderFactory.create()
item = session.query(Item).\
filter(Item.id == 1).\
first()
orderItem = OrderItemFactory.create(
orders=order,
items=item
)
However, if I am to manually create a row everything works fine.
orderItem = OrderItem(
order_id=order.id,
item_id=item.id
)
session.add(orderItem)
session.commit()