import pytest from sample_validator import load_schema, validate_stream @pytest.mark.parametrize('report_url,schema_url,expected_result,expected_log', ( ( 'trends_top_hashtag/TikTok_Trends_TopHashtag_20201108.txt', 'trends_top_hashtag/2020-03-12.json', False, { 'errors_len': 9, 'warnings_len': 0, } ), ( 'trends_top_hashtag/TikTok_Trends_TopHashtag_20201108.txt', 'trends_top_hashtag/2020-10-25.json', True, { 'errors_len': 0, 'warnings_len': 0, } ), ( 'trends_top_hashtag/TikTok_Trends_TopHashtag_20201108_added_field.txt', 'trends_top_hashtag/2020-10-25.json', False, { 'errors_len': 9, 'warnings_len': 0, } ), )) def test_tiktokreporting( s3_upload_schema, s3_upload_report, report_url, schema_url, expected_result, expected_log, ): report_url = s3_upload_report(f'tiktokreporting/{report_url}') schema_url = s3_upload_schema(f'tiktokreporting/{schema_url}') result, log_info = validate_stream( load_schema(schema_url), report_url, 100, 0, ) assert result == expected_result assert len(log_info['errors']) == expected_log['errors_len'] assert len(log_info['warnings']) == expected_log['warnings_len']