def test_component_mod(app): """ Tests the modification of component instance data """ # Modify user = _get_user() equip = _get_equipment() component = _get_component() with app.app_context(): db.session.add(user) db.session.add(equip) db.session.add(component) db.session.commit() component.name = "Ekakeula" component.brand = "Rock Shox" component.model = "Pike RTC3" component.date_added = datetime(2019, 11, 21, 11, 20, 30) component.date_retired = datetime(2020, 1, 1, 11, 20, 30) db.session.commit() component = Component.query.filter_by(category="Fork").first() assert component.name == "Ekakeula" assert component.brand == "Rock Shox" assert component.model == "Pike RTC3" assert str(component.date_added) == "2019-11-21 11:20:30" assert str(component.date_retired) == "2020-01-01 11:20:30"
def test_component_query(app): """ Tests the querying of a component instance """ # Query user = _get_user() equip = _get_equipment() component = _get_component() with app.app_context(): db.session.add(user) db.session.add(equip) db.session.add(component) db.session.commit() component1 = Component.query.filter_by(brand="Fox").first() assert component1.brand == "Fox"
def test_component_ondelete_equipment(app): """ Tests that components are deleted when parent equipment is deleted. """ user = _get_user() equipment = _get_equipment() component = _get_component() component.owner = user component.installedTo = equipment with app.app_context(): db.session.add(user) db.session.add(component) db.session.commit() db.session.delete(equipment) db.session.commit() assert Component.query.count() == 0
def test_component_del(app): """ Tests the deletion of a component instance """ # Delete user = _get_user() equip = _get_equipment() component = _get_component() with app.app_context(): db.session.add(user) db.session.add(equip) db.session.add(component) db.session.commit() component = Component.query.get(1) db.session.delete(component) db.session.commit() assert Component.query.count() == 0
def test_create_instances(app): """ Tests that we can create one instance of each model and save them to the database using valid values for all columns. After creation, test that everything can be found from database, and that all relationships have been saved correctly. """ # Create everything user = _get_user() equipment = _get_equipment() component = _get_component() ride = _get_ride() # Connect relationships (just one side) equipment.ownedBy = user component.installedTo = equipment ride.riddenWith = equipment ride.riddenBy = user # Put to database with app.app_context(): db.session.add(user) db.session.add(equipment) db.session.add(component) db.session.add(ride) db.session.commit() # Check that everything exists assert User.query.count() == 1 assert Equipment.query.count() == 1 assert Component.query.count() == 1 assert Ride.query.count() == 1 db_user = User.query.first() db_equipment = Equipment.query.first() db_component = Component.query.first() db_ride = Ride.query.first() # Check all relationships (both sides) # One to one assert db_user == db_ride.riddenBy assert db_equipment == db_ride.riddenWith # Others assert db_equipment in db_user.hasEquip assert db_component in db_equipment.hasCompos
def test_component_columns(app): """ Tests component columns' restrictions. Category, brand, model and date_added must be mandatory. Date_added and date_retired must be type datetime and equipment_id accepts only numerical values. """ # Uniqueness of uri component_1 = _get_component() component_2 = _get_component(ret=True) with app.app_context(): db.session.add(component_1) db.session.add(component_2) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Uniqueness of category + date_retired component_1 = _get_component(id=1) component_2 = _get_component(id=2) with app.app_context(): db.session.add(component_1) db.session.add(component_2) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Not null name component = _get_component() component.name = None with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Not null category component = _get_component() component.category = None with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Not null brand component = _get_component() component.brand = None with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Not null model component = _get_component() component.model = None with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Not null date_added component = _get_component() component.date_added = None with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Type int equipment_id component = _get_component() component.equipment_id = str(component.equipment_id) + "kg" with app.app_context(): db.session.add(component) with pytest.raises(IntegrityError): db.session.commit() db.session.rollback() # Type datetime date_added component = _get_component() component.date_added = time.time() with app.app_context(): db.session.add(component) with pytest.raises(StatementError): db.session.commit() db.session.rollback() # date_retired greater than date_added component = _get_component() component.date_added = datetime.now() component.date_retired = datetime(2020, 1, 1, 0, 0, 0) with app.app_context(): db.session.add(component) with pytest.raises(StatementError): db.session.commit()