def test_list_test_data_users_between_dates_missing_params( mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request_without_start = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, end_interaction_time="P0Y1M7DT0H0M0S") request_without_end = \ pseudocone_pb2.ListTestDataUsersBetweenDatesRequest(limit=1, users=users, start_interaction_time="2018-02-01T00:00:26.318497Z") request_without_start_or_end = \ pseudocone_pb2.ListTestDataUsersBetweenDatesRequest(limit=1, users=users) with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request_without_start) with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request_without_end) with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request_without_start_or_end)
def test_list_test_data_users_between_dates_date_format_error( mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2018-60-01T00:00:26.318497Z", end_interaction_time="2018-05-01T00:00:26.318497Z") with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2018-01-01T00:00:26.318497Z", end_interaction_time="2018-60-01T00:00:26.318497Z") with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request)
def test_list_test_data_users_between_dates_multi_interaction( mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2018-01-01T19:53:32.000Z", end_interaction_time="2018-05-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 1 assert response.items[0].user.id == "1" assert len(response.items[0].interactions) == 1 assert response.items[0].interactions[0].pid == "b09s3kq5" assert response.items[0].interactions[ 0].uri == "programmes:bbc.co.uk,2018/FIXME/b09s3kq5" assert response.items[0].interactions[ 0].activity_time == "2018-03-01T19:53:32.000Z" assert response.items[0].interactions[0].completion == "PT11M" assert response.items[0].interactions[0].activity_type == "PLAYS" assert response.items[0].interactions[0].action == "ended"
def convert_json_list_to_pseudocone_response(data): unique_users_ids = get_unique_vals_for_property(data, "anon_id") user_interaction_items = [] for user_id in unique_users_ids: user_data = get_data_matching_property(data, "anon_id", user_id) unique_item_ids = get_unique_vals_for_property(user_data, "resourceid") user_items = [] for item_id in unique_item_ids: try: user_item_interactions = get_data_matching_property( user_data, "resourceid", item_id) interaction = extract_latest_interaction( user_item_interactions) user_items.append( convert_db_object_to_interaction_item(interaction)) except Exception as e: logger.exception(e) user = pseudocone_pb2.UserParam(id=user_id, cookie=None) user_interaction_item = pseudocone_pb2.TestDataUser( user=user, interactions=user_items) user_interaction_items.append(user_interaction_item) return pseudocone_pb2.ListTestDataUsersResponse( items=user_interaction_items)
def test_list_test_data_users_between_dates_with_resource_type( mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, resource_type=[ResourceType.Value("CLIP")], start_interaction_time="2018-01-01T19:53:32.000Z", end_interaction_time="2018-05-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 1 assert response.items[0].user.id == "1" assert len(response.items[0].interactions) == 1 assert response.items[0].interactions[0].pid == "pid2" assert response.items[0].interactions[ 0].uri == "programmes:bbc.co.uk,2018/FIXME/pid2" assert response.items[0].interactions[ 0].activity_time == "2018-03-02T19:53:32.000Z" assert response.items[0].interactions[0].completion == "PT11M" assert response.items[0].interactions[0].activity_type == "PLAYS" assert response.items[0].interactions[0].action == "ended" request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, resource_type=[ResourceType.Value("EPISODE")], start_interaction_time="2018-01-01T00:00:26.318497Z", end_interaction_time="2018-05-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 1 assert response.items[0].user.id == "1" assert len(response.items[0].interactions) == 1 assert response.items[0].interactions[0].pid == "pid1" assert response.items[0].interactions[ 0].uri == "programmes:bbc.co.uk,2018/FIXME/pid1" assert response.items[0].interactions[ 0].activity_time == "2018-03-01T19:53:32.000Z" assert response.items[0].interactions[0].completion == "P0D" assert response.items[0].interactions[0].activity_type == "PLAYS" assert response.items[0].interactions[0].action == "started"
def test_list_test_data_users_timestamp_without_timezone( mock_db_data, pseudocone_server): users = [pseudocone_pb2.UserParam(id="1")] request = pseudocone_pb2.ListTestDataUsersRequest( limit=1, users=users, start_interaction_time="2018-02-01T00:00:26.318497", test_period_duration="P0Y1M7DT0H0M0S") response = pseudocone_server["stub"].ListTestDataUsers(request=request) assert len(response.items) == 1 and response.items[0].user.id == "1"
def test_list_interactions(mock_db_data, pseudocone_server): user = pseudocone_pb2.UserParam(id="1") request = pseudocone_pb2.ListInteractionsRequest( limit=1, user=user, resource_type=[pseudocone_pb2.ResourceType.Value("CLIP")], end_interaction_time="2018-03-02T00:00:00.318497Z", train_period_duration="P0Y0M1DT0H0M0S", dataset="dataset") response = pseudocone_server["stub"].ListInteractions(request=request) assert len(response.interactions) is 1
def test_list_test_data_users(mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersRequest( limit=1, users=users, start_interaction_time="2018-02-01T00:00:26.318497Z", test_period_duration="P0Y1M7DT0H0M0S") response = pseudocone_server["stub"].ListTestDataUsers(request=request) assert len(response.items) == 1 assert response.items[0].user.id == "1" assert len(response.items[0].interactions) == 1 assert response.items[0].interactions[0].pid == "b09s3kq5" assert response.items[0].interactions[ 0].uri == "programmes:bbc.co.uk,2018/FIXME/b09s3kq5" assert response.items[0].interactions[ 0].activity_time == "2018-03-01T18:53:32.000Z" assert response.items[0].interactions[0].completion == "PT11M" assert response.items[0].interactions[0].activity_type == "PLAYS" assert response.items[0].interactions[0].action == "ended"
def test_list_test_data_users_date_format_error(mock_db_data, pseudocone_server): users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersRequest( limit=1, users=users, start_interaction_time="2018-02-60T00:00:26.318497Z", test_period_duration="P0Y1M7DT0H0M0S") with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsers(request=request) request = pseudocone_pb2.ListTestDataUsersRequest( limit=1, users=users, start_interaction_time="2018-02-01T00:00:26.318497Z", test_period_duration="P0Y17DT0H0YM80S") with pytest.raises(Exception): pseudocone_server["stub"].ListTestDataUsers(request=request)
def test_list_test_data_users_between_dates(mock_db_data, pseudocone_server): # Should bring back test for data for a single user between the start and end date users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2018-03-01T17:53:32.000Z", end_interaction_time="2018-03-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 1 assert response.items[0].user.id == "1" assert len(response.items[0].interactions) == 1 assert response.items[0].interactions[0].pid == "b09s3kq5" assert response.items[0].interactions[ 0].uri == "programmes:bbc.co.uk,2018/FIXME/b09s3kq5" assert response.items[0].interactions[ 0].activity_time == "2018-03-01T18:53:32.000Z" assert response.items[0].interactions[0].completion == "PT11M" assert response.items[0].interactions[0].activity_type == "PLAYS" assert response.items[0].interactions[0].action == "ended" # Should return no items when activity time is before the start and end interaction time users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2017-03-01T17:53:32.000Z", end_interaction_time="2017-03-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 0 # Should return no items when activity time is after the start and end interaction time users = [ pseudocone_pb2.UserParam(id="1"), pseudocone_pb2.UserParam(id="2") ] request = pseudocone_pb2.ListTestDataUsersBetweenDatesRequest( limit=1, users=users, start_interaction_time="2019-03-01T17:53:32.000Z", end_interaction_time="2019-03-01T19:53:32.000Z") response = pseudocone_server["stub"].ListTestDataUsersBetweenDates( request=request) assert len(response.items) == 0
def test_list_interactions_missing_params(mock_db_data, pseudocone_server): user = pseudocone_pb2.UserParam(id="1") request_missing_user = pseudocone_pb2.ListInteractionsRequest( limit=1, end_interaction_time="2018-03-02T00:00:00.318497Z", train_period_duration="P0Y0M1DT0H0M0S") request_missing_end = pseudocone_pb2.ListInteractionsRequest( limit=1, user=user, train_period_duration="P0Y0M1DT0H0M0S") request_missing_duration = \ pseudocone_pb2.ListInteractionsRequest(limit=1, end_interaction_time="2018-03-02T00:00:00.318497Z") with pytest.raises(Exception): pseudocone_server["stub"].ListInteractions( request=request_missing_user) with pytest.raises(Exception): pseudocone_server["stub"].ListInteractions(request=request_missing_end) with pytest.raises(Exception): pseudocone_server["stub"].ListInteractions( request=request_missing_duration)