import unittest.mock import pytest from db_schema.factories.apps import ContentStatusFactory, UnitOfWorkFactory from db_schema.factories.slz import LicensorFactory from apps_etl_databricks.objects.batch import ( ContentStatusBatch, DBXContentStatusBatch, LicensorBatch, ) @pytest.mark.integration def test_licensor_and_context(session): unit_of_work = UnitOfWorkFactory(unit_of_work_code='spotify-reports') licensor = LicensorFactory(licensor_name='sme') content_status_us = ContentStatusFactory( unit_of_work=unit_of_work, context='US', licensor=licensor ) content_status_uk = ContentStatusFactory( unit_of_work=unit_of_work, context='UK', licensor=licensor ) batch = ContentStatusBatch( session, [ content_status_uk.content_status_id, content_status_us.content_status_id, ], 14 ) assert batch.licensors_and_contexts() == [('sme', 'UK'), ('sme', 'US')] @pytest.mark.integration def test_apple_licensor_and_context(session): unit_of_work = UnitOfWorkFactory(unit_of_work_code='apple-20200114-theorchard-amStreams-v1_2') licensor = LicensorFactory(licensor_name='theorchard') content_status_1 = ContentStatusFactory( unit_of_work=unit_of_work, context='2382::80032614', licensor=licensor ) content_status_2 = ContentStatusFactory( unit_of_work=unit_of_work, context='1526::80028967', licensor=licensor ) batch = ContentStatusBatch( session, [ content_status_1.content_status_id, content_status_2.content_status_id, ], 14 ) assert batch.licensors_and_contexts() == [('theorchard', '80028967'), ('theorchard', '80032614')] @pytest.mark.integration def test_db_service_update_latest_run_id(session): licensor = LicensorFactory() unit_of_work = UnitOfWorkFactory(unit_of_work_code='spotify-reports') content_status = ContentStatusFactory(unit_of_work=unit_of_work, licensor=licensor) batch = ContentStatusBatch( session, [ content_status.content_status_id, ], unit_of_work.unit_of_work_id ) updated = batch.update_latest_run_id(5) assert updated == 1 def test_dbx_batch(): batch = unittest.mock.Mock() batch.licensors_and_contexts.return_value = (('sme', 'UK'), ('sme', 'US'), ('smejp', 'MX')) batch_dbx = DBXContentStatusBatch(batch) result = batch_dbx.licensors_and_contexts() assert result == ['sme:[UK,US]', 'smejp:[MX]'] @pytest.mark.integration def test_licensor_batch(session): sme = LicensorFactory(licensor_name='sme') batch = LicensorBatch(session, [sme.licensor_id]) assert batch.get_names() == ['sme']