import datetime import unittest.mock import db_schema.factories.apps import pytest from apps_etl_manager.entities.config import UnitOfWorkConfig from apps_etl_manager.entities.entities import EtlArgs, EtlDependency from apps_etl_manager.unit_of_works.uow import EtlUnitOfWork @pytest.mark.integration def test_base_uow_get_sf_name(session): uow = db_schema.factories.apps.UnitOfWorkFactory() uow.unit_of_work_code = 'amazonmusicunlimited-20200101-streams_trackfamily_date_playlist_day' expected_sf_name = 'amazonmusicunlimited-20200101-streams_trackfamily_date_' \ 'playl_1_20200812T01.02.03' uow_config = UnitOfWorkConfig( unit_of_work='amazonmusicunlimited-{yyyymmdd}-streams_trackfamily_date_playlist_day', schedule='*/10 * * * *', data_source=['slz'], args=EtlArgs( dsp='amazonmusicunlimited', unit_type='daily', report_type='streams_trackfamily_date_playlist_day', valid_from='2020-01-01', dbx_job_id=1, days_offset=1, dbx_job_max_lifetime=1800, ), dependencies=[EtlDependency( type='slz_uow', name='amazon-{yyyymmdd}-sme-tracks-v1', )] ) unit = EtlUnitOfWork( unittest.mock.Mock(), session, unittest.mock.Mock(), uow, uow_config, 3, datetime.datetime(2020, 8, 12, 1, 2, 3), 'test' ) sf_name = unit.get_sf_name() assert sf_name == expected_sf_name assert len(sf_name) == 80