Alexander Hess
1bfc7db916
- ensure a `Restaurant` only has one unique `Order.pickup_address` - rework `Grid.gridify()` so that only pickup addresses are assigned into `Pixel`s - include database migrations to ensure the data adhere to these tighter constraints
48 lines
1.7 KiB
Python
48 lines
1.7 KiB
Python
"""Integration test for the `urban_meal_delivery.console.gridify` module."""
|
|
|
|
import pytest
|
|
|
|
import urban_meal_delivery
|
|
from urban_meal_delivery import db
|
|
from urban_meal_delivery.console import gridify
|
|
|
|
|
|
@pytest.mark.db
|
|
def test_two_pixels_with_two_addresses( # noqa:WPS211
|
|
cli, db_session, monkeypatch, city, make_address, make_restaurant, make_order,
|
|
):
|
|
"""Two `Address` objects in distinct `Pixel` objects.
|
|
|
|
This is roughly the same test case as
|
|
`tests.db.test_grids.test_two_pixels_with_two_addresses`.
|
|
The difference is that the result is written to the database.
|
|
"""
|
|
# Create two `Address` objects in distinct `Pixel`s.
|
|
# One `Address` in the lower-left `Pixel`, ...
|
|
address1 = make_address(latitude=48.8357377, longitude=2.2517412)
|
|
# ... and another one in the upper-right one.
|
|
address2 = make_address(latitude=48.8898312, longitude=2.4357622)
|
|
|
|
# Locate a `Restaurant` at the two `Address` objects and
|
|
# place one `Order` for each of them so that the `Address`
|
|
# objects are used as `Order.pickup_address`s.
|
|
restaurant1 = make_restaurant(address=address1)
|
|
restaurant2 = make_restaurant(address=address2)
|
|
order1 = make_order(restaurant=restaurant1)
|
|
order2 = make_order(restaurant=restaurant2)
|
|
|
|
db_session.add(order1)
|
|
db_session.add(order2)
|
|
db_session.commit()
|
|
|
|
side_length = max(city.total_x // 2, city.total_y // 2) + 1
|
|
|
|
# Hack the configuration regarding the grids to be created.
|
|
monkeypatch.setattr(urban_meal_delivery.config, 'GRID_SIDE_LENGTHS', [side_length])
|
|
|
|
result = cli.invoke(gridify.gridify)
|
|
|
|
assert result.exit_code == 0
|
|
|
|
assert db_session.query(db.Grid).count() == 1
|
|
assert db_session.query(db.Pixel).count() == 2
|