import json from bulkperformancerights.logic import validate user_type = 'vendor' user_id = 1 def test_validate_line(db_fixture): good_line_dict = {'filename': 'Perf_Rights_Test.xlsx', 'Track Artist': 'Rick and the Rickettes', 'Master Rights': 'Yes', 'Nationality of 1st Producer': 'Andorra', 'row': 1, 'Country of Recording': 'Guernsey', 'Orchard Track Unique ID': 1, 'Track Type': None, 'Songwriter(s)': 'That guy'} user_owned_tracks = [1] country_list = ['Guernsey', 'Andorra'] validate_result = validate.validate_line(user_owned_tracks, country_list, user_type, user_id, good_line_dict) assert validate_result.get('invalid_columns') == {} good_line_dict['Songwriter(s)'] = 2 user_owned_tracks = [1] country_list = ['Guernsey', 'Andorra'] validate_result = validate.validate_line( user_owned_tracks, country_list, user_type, user_id, good_line_dict) assert validate_result.get('invalid_columns') == {} def test_validate_line_invalid(db_fixture): bad_line_dict = {'filename': 'Perf_Rights_Test.xlsx', 'Songwriter(s)': None, 'Master Rights': 'Yep', 'Nationality of 1st Producer': 'Andora', 'row': 1, 'Country of Recording': 'Guernsey', 'Orchard Track Unique ID': 1} user_owned_tracks = [1] country_list = ['Guernsey', 'Andorra'] validate_result = validate.validate_line(user_owned_tracks, country_list, user_type, user_id, bad_line_dict) expected_dict = {'Nationality of 1st Producer': 'Andora', 'Master Rights': 'Yep'} assert validate_result.get('invalid_columns') == expected_dict bad_line_dict = {'filename': 'Perf_Rights_Test.xlsx', 'Songwriter(s)': None, 'Master Rights': 'Yep', 'Nationality of 1st Producer': 'Andora', 'row': 1, 'Country of Recording': 'Guernsey', 'Orchard Track Unique ID': None} validate_result = validate.validate_line(user_owned_tracks, country_list, user_type, user_id, bad_line_dict) expected_dict = {'Orchard Track Unique ID': None} assert validate_result.get('invalid_columns') == expected_dict # test when orchard track unique id is not owned by client bad_line_dict['Orchard Track Unique ID'] = 1 user_owned_tracks = [2] country_list = ['Guernsey', 'Andora'] validate_result = validate.validate_line(user_owned_tracks, country_list, user_type, user_id, bad_line_dict) expected_dict = {'Orchard Track Unique ID': 1} assert validate_result.get('invalid_columns') == expected_dict def test_validate_lines_invalid(): bad_json = { 'filename': 'Perf_Rights_Test.xlsx', 'Track Artist': 'Rick and the Rickettes', 'Master Rights': 'Yes', 'Nationality of 1st Producer': 'Andorra', 'row': 1, 'Country of Recording': 'Guernsey', 'Orchard Track Unique ID': 3, 'Track Type': None, 'Songwriter(s)': 'That guy'} bad_json_string = json.dumps(bad_json) bad_lines = [bad_json_string.encode('utf-8')] valid_rows, invalid_rows = validate.validate_lines( bad_lines, user_type, user_id) assert invalid_rows assert not valid_rows invalid_json = json.loads(invalid_rows[0]) assert invalid_json['Status'] == 'Invalid track - Does not exist'