示例#1
0
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"
示例#2
0
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"
示例#3
0
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
示例#4
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
示例#5
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
示例#6
0
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()