"""Tests for Instant Grats related models.""" from datetime import datetime import pytest from backend.connectors import mysql from backend.models import instant_grats as instant_grat_model from tests.testutils import db @db.test_schema_no_seed def test_instant_grat_to_dict(instant_grat_factory): """Test Instant Grat to_dict() method.""" release_date = datetime(year=2018, day=20, month=5) fake_created_at = datetime(year=2017, day=20, month=5) expected_result = dict( tuid=1, store_id=1, created_by='oa:25824', created_at=fake_created_at, date=release_date, active='Y') with mysql.db_session() as session: instant_grat = instant_grat_factory( tuid=1, user_id=25824, user_type='oa', date_created=fake_created_at, date=release_date) session.merge(instant_grat) session.commit() created_grat = session.query( instant_grat_model.InstantGrat).filter_by( tuid=1, store_id=1).first() result = created_grat.to_dict() assert result == expected_result @pytest.mark.parametrize( 'user_id, user_type, expected_result', [(25824, 'oa', 'oa:25824'), (None, 'oa', ''), (25824, None, ''), (None, None, '')]) def test_instant_grat_created_by_property( user_id, user_type, expected_result, instant_grat_factory): """Test instant grat created_by property returns correct value.""" grat = instant_grat_factory( tuid=1, user_id=user_id, user_type=user_type) assert grat.created_by == expected_result