mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 10:51:36 -04:00
96 lines
3.7 KiB
Python
96 lines
3.7 KiB
Python
import json
|
|
from http import HTTPStatus
|
|
|
|
from modules.inventory import Item
|
|
from modules.inventory.inventory import save_item
|
|
|
|
|
|
def test_delete_items(test_session, init_test_inventory, test_client):
|
|
"""
|
|
Multiple Items can be deleted in a single request.
|
|
"""
|
|
item = dict(
|
|
brand='Ocean',
|
|
name='Salt',
|
|
count='8.0',
|
|
unit='lbs',
|
|
item_size='25.0',
|
|
category='cooking ingredients',
|
|
subcategory='salt',
|
|
)
|
|
save_item(init_test_inventory.id, item)
|
|
save_item(init_test_inventory.id, item)
|
|
items = test_session.query(Item).filter(Item.brand != None).all()
|
|
|
|
request, response = test_client.delete(f'/api/inventory/item/{items[0].id},{items[1].id}')
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.status_code
|
|
# Refresh all items. Verify they were deleted.
|
|
[test_session.refresh(i) for i in items]
|
|
assert all([i.deleted_at for i in items])
|
|
|
|
|
|
def test_delete_item(test_session, init_test_inventory, test_client):
|
|
"""
|
|
An item can be deleted by itself.
|
|
"""
|
|
item = dict(
|
|
brand='Ocean',
|
|
name='Salt',
|
|
count='8.0',
|
|
unit='lbs',
|
|
item_size='25.0',
|
|
category='cooking ingredients',
|
|
subcategory='salt',
|
|
)
|
|
save_item(init_test_inventory.id, item)
|
|
item = test_session.query(Item).filter(Item.brand != None).one()
|
|
assert not item.deleted_at
|
|
|
|
request, response = test_client.delete(f'/api/inventory/item/{item.id}')
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.status_code
|
|
test_session.refresh(item)
|
|
assert item.deleted_at
|
|
|
|
|
|
def test_item_api(test_session, init_test_inventory, test_client):
|
|
"""An Item can be added to an Inventory."""
|
|
inventory_id = init_test_inventory.id
|
|
item = {'brand': 'Salty', 'name': 'Salt', 'item_size': '1', 'unit': 'lbs', 'count': '5',
|
|
'category': 'cooking ingredients', 'subcategory': 'salt', 'expiration_date': None}
|
|
request, response = test_client.post(f'/api/inventory/{inventory_id}/item', content=json.dumps(item))
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.status_code
|
|
|
|
# Get the Item we just created.
|
|
request, response = test_client.get(f'/api/inventory/{inventory_id}/item')
|
|
assert response.status_code == HTTPStatus.OK
|
|
# assert item == response.json['items'][0]
|
|
item = response.json['items'][0]
|
|
|
|
expiration_dates = (12345.12345, None)
|
|
for expiration_date in expiration_dates:
|
|
item['expiration_date'] = expiration_date
|
|
request, response = test_client.put(f'/api/inventory/item/{item["id"]}', content=json.dumps(item))
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.json
|
|
|
|
|
|
def test_inventory_api(test_session, test_client):
|
|
"""An Inventory can be created."""
|
|
inventory = dict(name='foo')
|
|
request, response = test_client.post('/api/inventory', content=json.dumps(inventory))
|
|
assert response.status_code == HTTPStatus.CREATED, response.status_code
|
|
|
|
request, response = test_client.get('/api/inventory')
|
|
assert response.status_code == HTTPStatus.OK
|
|
inventory = response.json['inventories'][0]
|
|
inventory_id = inventory['id']
|
|
|
|
inventory = dict(name='new name')
|
|
request, response = test_client.put(f'/api/inventory/{inventory_id}', content=json.dumps(inventory))
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.status_code
|
|
|
|
request, response = test_client.delete(f'/api/inventory/{inventory_id}')
|
|
assert response.status_code == HTTPStatus.NO_CONTENT, response.status_code
|
|
|
|
request, response = test_client.get('/api/inventory')
|
|
assert response.status_code == HTTPStatus.OK
|
|
assert len(response.json['inventories']) == 0
|