Add ORM models for the simulation data
- add new ORM models `ReplaySimulation` and `ReplayedOrder`
to store the data generated by the routing simulations
- add migrations script to create the corresponding database tables
+ create "replay_simulations" and "replayed_orders" tables
+ add missing check constraints to "orders" table
+ add unique constraint to "orders" table to enable compound key
+ drop unnecessary check constraints from the "orders" table
- add tests for the new ORM models
+ add `simulation`, `replayed_order`, `make_replay_order()`, and
`pre_order` fixtures
+ add `ReplayedOrderFactor` faker class
- fix some typos
This commit is contained in:
parent
41f75f507d
commit
e4e543bd40
19 changed files with 1677 additions and 10 deletions
|
|
@ -103,3 +103,41 @@ def make_order(make_address, make_courier, make_customer, make_restaurant):
|
|||
)
|
||||
|
||||
return func
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def make_replay_order(make_order, simulation):
|
||||
"""Replaces `ReplayedOrderFactory.build()`: Create a `ReplayedOrder`."""
|
||||
# Reset the identifiers before every test.
|
||||
factories.ReplayedOrderFactory.reset_sequence(1)
|
||||
|
||||
def func(scheduled=False, order=None, **kwargs):
|
||||
"""Create a new `ReplayedOrder` object.
|
||||
|
||||
Each `ReplayOrder` is made by a new `Customer` with a unique `Address`.
|
||||
|
||||
Args:
|
||||
scheduled: if an `Order` is a pre-order
|
||||
order: the `Order` that is replayed
|
||||
kwargs: keyword arguments forwarded to the `ReplayedOrderFactory`
|
||||
|
||||
Returns:
|
||||
order
|
||||
|
||||
Raises:
|
||||
RuntimeError: if `scheduled=True` is passed in
|
||||
together with an ad-hoc `order`
|
||||
"""
|
||||
if scheduled:
|
||||
if order and order.ad_hoc is False:
|
||||
raise RuntimeError('`order` must be scheduled')
|
||||
elif order is None:
|
||||
order = make_order(scheduled=True)
|
||||
elif order is None:
|
||||
order = make_order()
|
||||
|
||||
return factories.ReplayedOrderFactory.build(
|
||||
simulation=simulation, actual=order, courier=order.courier, **kwargs,
|
||||
)
|
||||
|
||||
return func
|
||||
|
|
|
|||
Loading…
Reference in a new issue