-
Notifications
You must be signed in to change notification settings - Fork 106
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add tests for populate_x_metadata (#1408)
* Add tests for populate_x_metadata * Lint DP tests
- Loading branch information
Showing
4 changed files
with
424 additions
and
0 deletions.
There are no files selected for viewing
119 changes: 119 additions & 0 deletions
119
discovery-provider/tests/test_populate_playlist_metadata.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
import logging | ||
from src.queries import response_name_constants | ||
from src.models import RepostType, SaveType | ||
from src.queries.query_helpers import populate_playlist_metadata | ||
from src.utils.db_session import get_db | ||
from tests.utils import populate_mock_db | ||
logger = logging.getLogger(__name__) | ||
|
||
def test_populate_playlist_metadata(app): | ||
"""Tests that populate_playlist_metadata works after aggregate_user refresh""" | ||
with app.app_context(): | ||
db = get_db() | ||
|
||
test_entities = { | ||
'playlists': [ | ||
{"playlist_id": 1, "playlist_owner_id": 1}, | ||
{"playlist_id": 2, "playlist_owner_id": 1}, | ||
{"playlist_id": 3, "playlist_owner_id": 2}, | ||
{"playlist_id": 4, "playlist_owner_id": 3} | ||
], | ||
'users': [ | ||
{'user_id': 1, 'handle': 'user1'}, | ||
{'user_id': 2, 'handle': 'user2'}, | ||
{'user_id': 3, 'handle': 'user3'}, | ||
{'user_id': 4, 'handle': 'user4'} | ||
], | ||
'reposts': [ | ||
{"repost_item_id": 1, "repost_type": 'playlist', "user_id": 2}, | ||
{"repost_item_id": 1, "repost_type": 'playlist', "user_id": 3}, | ||
{"repost_item_id": 2, "repost_type": 'playlist', "user_id": 1} | ||
], | ||
'saves': [ | ||
{"save_item_id": 1, "save_type": 'playlist', "user_id": 2}, | ||
{"save_item_id": 1, "save_type": 'playlist', "user_id": 3}, | ||
{"save_item_id": 3, "save_type": 'playlist', "user_id": 2}, | ||
{"save_item_id": 3, "save_type": 'playlist', "user_id": 1} | ||
], | ||
'follows': [ | ||
{"follower_user_id": 1, "followee_user_id": 2}, | ||
{"follower_user_id": 1, "followee_user_id": 3} | ||
] | ||
} | ||
|
||
populate_mock_db(db, test_entities) | ||
|
||
with db.scoped_session() as session: | ||
session.execute("REFRESH MATERIALIZED VIEW aggregate_playlist") | ||
playlist_ids = [1, 2, 3, 4] | ||
playlists = [ | ||
{"playlist_id": 1, "playlist_contents": {"track_ids": []}}, | ||
{"playlist_id": 2, "playlist_contents": {"track_ids": []}}, | ||
{"playlist_id": 3, "playlist_contents": {"track_ids": []}}, | ||
{"playlist_id": 4, "playlist_contents": {"track_ids": []}} | ||
] | ||
|
||
playlists = populate_playlist_metadata( | ||
session, | ||
playlist_ids, | ||
playlists, | ||
[RepostType.playlist, RepostType.album], | ||
[SaveType.playlist, SaveType.album], | ||
None | ||
) | ||
assert len(playlists) == 4 | ||
assert playlists[0]['playlist_id'] == 1 | ||
assert playlists[0][response_name_constants.repost_count] == 2 | ||
assert playlists[0][response_name_constants.save_count] == 2 | ||
assert playlists[0][response_name_constants.total_play_count] == 0 | ||
|
||
assert playlists[1]['playlist_id'] == 2 | ||
assert playlists[1][response_name_constants.repost_count] == 1 | ||
assert playlists[1][response_name_constants.save_count] == 0 | ||
assert playlists[1][response_name_constants.total_play_count] == 0 | ||
|
||
assert playlists[2]['playlist_id'] == 3 | ||
assert playlists[2][response_name_constants.repost_count] == 0 | ||
assert playlists[2][response_name_constants.save_count] == 2 | ||
assert playlists[2][response_name_constants.total_play_count] == 0 | ||
|
||
curr_playlist_ids = [1, 2, 3] | ||
curr_playlists = [ | ||
{"playlist_id": 1, "playlist_contents": {"track_ids": []}}, | ||
{"playlist_id": 2, "playlist_contents": {"track_ids": []}}, | ||
{"playlist_id": 3, "playlist_contents": {"track_ids": []}} | ||
] | ||
|
||
playlists = populate_playlist_metadata( | ||
session, | ||
curr_playlist_ids, | ||
curr_playlists, | ||
[RepostType.playlist, RepostType.album], | ||
[SaveType.playlist, SaveType.album], | ||
1 | ||
) | ||
assert len(playlists) == 3 | ||
|
||
assert playlists[0]['playlist_id'] == 1 | ||
repost_user_ids = [repost['user_id'] for repost in playlists[0][response_name_constants.followee_reposts]] | ||
repost_user_ids.sort() | ||
assert repost_user_ids == [2, 3] | ||
save_user_ids = [save['user_id'] for save in playlists[0][response_name_constants.followee_saves]] | ||
save_user_ids.sort() | ||
assert save_user_ids == [2, 3] | ||
assert playlists[0][response_name_constants.has_current_user_reposted] == False | ||
assert playlists[0][response_name_constants.has_current_user_saved] == False | ||
|
||
assert playlists[1]['playlist_id'] == 2 | ||
assert playlists[1][response_name_constants.followee_reposts] == [] | ||
assert playlists[1][response_name_constants.followee_saves] == [] | ||
assert playlists[1][response_name_constants.has_current_user_reposted] == True | ||
assert playlists[1][response_name_constants.has_current_user_saved] == False | ||
|
||
assert playlists[2]['playlist_id'] == 3 | ||
assert playlists[2][response_name_constants.followee_reposts] == [] | ||
save_user_ids = [save['user_id'] for save in playlists[2][response_name_constants.followee_saves]] | ||
save_user_ids.sort() | ||
assert save_user_ids == [2] | ||
assert playlists[2][response_name_constants.has_current_user_reposted] == False | ||
assert playlists[2][response_name_constants.has_current_user_saved] == True |
110 changes: 110 additions & 0 deletions
110
discovery-provider/tests/test_populate_track_metadata.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
import logging | ||
from src.queries import response_name_constants | ||
from src.queries.query_helpers import populate_track_metadata | ||
from src.utils.db_session import get_db | ||
from tests.utils import populate_mock_db | ||
logger = logging.getLogger(__name__) | ||
|
||
def test_populate_track_metadata(app): | ||
"""Tests that populate_track_metadata works after aggregate_user refresh""" | ||
with app.app_context(): | ||
db = get_db() | ||
|
||
test_entities = { | ||
'tracks': [ | ||
{"track_id": 1, "owner_id": 1}, | ||
{"track_id": 2, "owner_id": 1}, | ||
{"track_id": 3, "owner_id": 2}, | ||
{"track_id": 4, "owner_id": 2}, | ||
{"track_id": 5, "owner_id": 2}, | ||
{"track_id": 6, "owner_id": 2}, | ||
{"track_id": 7, "owner_id": 3}, | ||
{"track_id": 8, "owner_id": 3}, | ||
{"track_id": 9, "owner_id": 3}, | ||
{"track_id": 10, "is_unlisted": True, "owner_id": 3} | ||
], | ||
'users': [ | ||
{'user_id': 1, 'handle': 'user1'}, | ||
{'user_id': 2, 'handle': 'user2'}, | ||
{'user_id': 3, 'handle': 'user3'}, | ||
{'user_id': 4, 'handle': 'user4'} | ||
], | ||
'reposts': [ | ||
{"repost_item_id": 1, "repost_type": 'track', "user_id": 2}, | ||
{"repost_item_id": 1, "repost_type": 'track', "user_id": 3}, | ||
{"repost_item_id": 2, "repost_type": 'track', "user_id": 1} | ||
], | ||
'saves': [ | ||
{"save_item_id": 1, "save_type": 'track', "user_id": 2}, | ||
{"save_item_id": 1, "save_type": 'track', "user_id": 3}, | ||
{"save_item_id": 3, "save_type": 'track', "user_id": 2}, | ||
{"save_item_id": 3, "save_type": 'track', "user_id": 1} | ||
], | ||
'follows': [ | ||
{"follower_user_id": 1, "followee_user_id": 2}, | ||
{"follower_user_id": 1, "followee_user_id": 3} | ||
] | ||
} | ||
|
||
populate_mock_db(db, test_entities) | ||
|
||
with db.scoped_session() as session: | ||
session.execute("REFRESH MATERIALIZED VIEW aggregate_track") | ||
track_ids = [1, 2, 3] | ||
tracks = [ | ||
{"track_id": 1}, | ||
{"track_id": 2}, | ||
{"track_id": 3}, | ||
] | ||
|
||
tracks = populate_track_metadata(session, track_ids, tracks, None) | ||
assert len(tracks) == 3 | ||
|
||
assert tracks[0]['track_id'] == 1 | ||
assert tracks[0][response_name_constants.repost_count] == 2 | ||
assert tracks[0][response_name_constants.save_count] == 2 | ||
assert tracks[0][response_name_constants.play_count] == 0 | ||
|
||
assert tracks[1]['track_id'] == 2 | ||
assert tracks[1][response_name_constants.repost_count] == 1 | ||
assert tracks[1][response_name_constants.save_count] == 0 | ||
assert tracks[1][response_name_constants.play_count] == 0 | ||
|
||
assert tracks[2]['track_id'] == 3 | ||
assert tracks[2][response_name_constants.repost_count] == 0 | ||
assert tracks[2][response_name_constants.save_count] == 2 | ||
assert tracks[2][response_name_constants.play_count] == 0 | ||
|
||
curr_track_ids = [1, 2, 3] | ||
curr_tracks = [ | ||
{"track_id": 1}, | ||
{"track_id": 2}, | ||
{"track_id": 3} | ||
] | ||
|
||
tracks = populate_track_metadata(session, curr_track_ids, curr_tracks, 1) | ||
assert len(tracks) == 3 | ||
|
||
assert tracks[0]['track_id'] == 1 | ||
repost_user_ids = [repost['user_id'] for repost in tracks[0][response_name_constants.followee_reposts]] | ||
repost_user_ids.sort() | ||
assert repost_user_ids == [2, 3] | ||
save_user_ids = [save['user_id'] for save in tracks[0][response_name_constants.followee_saves]] | ||
save_user_ids.sort() | ||
assert save_user_ids == [2, 3] | ||
assert tracks[0][response_name_constants.has_current_user_reposted] == False | ||
assert tracks[0][response_name_constants.has_current_user_saved] == False | ||
|
||
assert tracks[1]['track_id'] == 2 | ||
assert tracks[1][response_name_constants.followee_reposts] == [] | ||
assert tracks[1][response_name_constants.followee_saves] == [] | ||
assert tracks[1][response_name_constants.has_current_user_reposted] == True | ||
assert tracks[1][response_name_constants.has_current_user_saved] == False | ||
|
||
assert tracks[2]['track_id'] == 3 | ||
assert tracks[2][response_name_constants.followee_reposts] == [] | ||
save_user_ids = [save['user_id'] for save in tracks[2][response_name_constants.followee_saves]] | ||
save_user_ids.sort() | ||
assert save_user_ids == [2] | ||
assert tracks[2][response_name_constants.has_current_user_reposted] == False | ||
assert tracks[2][response_name_constants.has_current_user_saved] == True |
148 changes: 148 additions & 0 deletions
148
discovery-provider/tests/test_populate_user_metadata.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
import logging | ||
from src.queries import response_name_constants | ||
from src.queries.query_helpers import populate_user_metadata | ||
from src.utils.db_session import get_db | ||
from tests.utils import populate_mock_db | ||
logger = logging.getLogger(__name__) | ||
|
||
def test_populate_user_metadata(app): | ||
"""Tests that populate_user_metadata works after aggregate_user refresh""" | ||
with app.app_context(): | ||
db = get_db() | ||
|
||
test_entities = { | ||
'tracks': [ | ||
{"track_id": 1, "owner_id": 1}, | ||
{"track_id": 2, "owner_id": 1}, | ||
{"track_id": 3, "owner_id": 2}, | ||
{"track_id": 4, "owner_id": 2}, | ||
{"track_id": 5, "owner_id": 2}, | ||
{"track_id": 6, "owner_id": 2}, | ||
{"track_id": 7, "owner_id": 3}, | ||
{"track_id": 8, "owner_id": 3}, | ||
{"track_id": 8, "owner_id": 3}, | ||
{"track_id": 9, "is_unlisted": True, "owner_id": 3} | ||
], | ||
'playlists': [ | ||
{"playlist_id": 1, "playlist_owner_id": 1}, | ||
{"playlist_id": 2, "playlist_owner_id": 1}, | ||
{"playlist_id": 3, "is_album": True, "playlist_owner_id": 1}, | ||
{"playlist_id": 4, "playlist_owner_id": 2}, | ||
{"playlist_id": 5, "is_delete": True, "playlist_owner_id": 2}, | ||
{"playlist_id": 6, "is_album": True, "playlist_owner_id": 3}, | ||
{"playlist_id": 6, "is_private": True, "playlist_owner_id": 3}, | ||
], | ||
'users': [ | ||
{'user_id': 1, 'handle': 'user1'}, | ||
{'user_id': 2, 'handle': 'user2'}, | ||
{'user_id': 3, 'handle': 'user3'}, | ||
{'user_id': 4, 'handle': 'user4'} | ||
], | ||
'follows': [ | ||
{"follower_user_id": 1, "followee_user_id": 2}, | ||
{"follower_user_id": 1, "followee_user_id": 3}, | ||
{"follower_user_id": 2, "followee_user_id": 3} | ||
], | ||
'reposts': [ | ||
{"repost_item_id": 1, "repost_type": 'track', "user_id": 2}, | ||
{"repost_item_id": 1, "repost_type": 'playlist', "user_id": 2}, | ||
{"repost_item_id": 1, "repost_type": 'track', "user_id": 3}, | ||
{"repost_item_id": 1, "repost_type": 'playlist', "user_id": 3}, | ||
{"repost_item_id": 4, "repost_type": 'track', "user_id": 1}, | ||
{"repost_item_id": 5, "repost_type": 'track', "user_id": 1}, | ||
{"repost_item_id": 6, "repost_type": 'track', "user_id": 1} | ||
], | ||
'saves': [ | ||
{"save_item_id": 1, "save_type": 'track', "user_id": 2}, | ||
{"save_item_id": 1, "save_type": 'playlist', "user_id": 2}, | ||
{"save_item_id": 1, "save_type": 'track', "user_id": 3}, | ||
{"save_item_id": 1, "save_type": 'playlist', "user_id": 3}, | ||
{"save_item_id": 4, "save_type": 'track', "user_id": 1}, | ||
{"save_item_id": 5, "save_type": 'track', "user_id": 1}, | ||
{"save_item_id": 6, "save_type": 'track', "user_id": 1} | ||
] | ||
} | ||
|
||
populate_mock_db(db, test_entities) | ||
|
||
with db.scoped_session() as session: | ||
session.execute("REFRESH MATERIALIZED VIEW aggregate_user") | ||
user_ids = [1, 2, 3, 4, 5] | ||
users = [ | ||
{"user_id": 1, "is_verified": False}, | ||
{"user_id": 2, "is_verified": False}, | ||
{"user_id": 3, "is_verified": False}, | ||
{"user_id": 4, "is_verified": False}, | ||
{"user_id": 5, "is_verified": False} | ||
] | ||
|
||
users = populate_user_metadata(session, user_ids, users, None) | ||
assert len(users) == 5 | ||
|
||
assert users[0]['user_id'] == 1 | ||
assert users[0][response_name_constants.track_count] == 2 | ||
assert users[0][response_name_constants.playlist_count] == 2 | ||
assert users[0][response_name_constants.album_count] == 1 | ||
assert users[0][response_name_constants.follower_count] == 0 | ||
assert users[0][response_name_constants.followee_count] == 2 | ||
assert users[0][response_name_constants.repost_count] == 3 | ||
|
||
assert users[1]['user_id'] == 2 | ||
assert users[1][response_name_constants.track_count] == 4 | ||
assert users[1][response_name_constants.playlist_count] == 1 | ||
assert users[1][response_name_constants.album_count] == 0 | ||
assert users[1][response_name_constants.follower_count] == 1 | ||
assert users[1][response_name_constants.followee_count] == 1 | ||
assert users[1][response_name_constants.repost_count] == 2 | ||
|
||
assert users[2]['user_id'] == 3 | ||
assert users[2][response_name_constants.track_count] == 3 | ||
assert users[2][response_name_constants.playlist_count] == 0 | ||
assert users[2][response_name_constants.album_count] == 1 | ||
assert users[2][response_name_constants.follower_count] == 2 | ||
assert users[2][response_name_constants.followee_count] == 0 | ||
assert users[2][response_name_constants.repost_count] == 2 | ||
|
||
assert users[3]['user_id'] == 4 | ||
assert users[3][response_name_constants.track_count] == 0 | ||
assert users[3][response_name_constants.playlist_count] == 0 | ||
assert users[3][response_name_constants.album_count] == 0 | ||
assert users[3][response_name_constants.follower_count] == 0 | ||
assert users[3][response_name_constants.followee_count] == 0 | ||
assert users[3][response_name_constants.repost_count] == 0 | ||
|
||
assert users[4]['user_id'] == 5 | ||
assert users[4][response_name_constants.track_count] == 0 | ||
assert users[4][response_name_constants.playlist_count] == 0 | ||
assert users[4][response_name_constants.album_count] == 0 | ||
assert users[4][response_name_constants.follower_count] == 0 | ||
assert users[4][response_name_constants.followee_count] == 0 | ||
assert users[4][response_name_constants.repost_count] == 0 | ||
|
||
curr_user_ids = [1, 2, 3] | ||
curr_users = [ | ||
{"user_id": 1, "is_verified": False}, | ||
{"user_id": 2, "is_verified": False}, | ||
{"user_id": 3, "is_verified": False} | ||
] | ||
|
||
users = populate_user_metadata(session, curr_user_ids, curr_users, 1) | ||
assert len(users) == 3 | ||
|
||
assert users[0]['user_id'] == 1 | ||
assert users[0][response_name_constants.does_current_user_follow] == False | ||
assert users[0][response_name_constants.current_user_followee_follow_count] == 0 | ||
assert users[0][response_name_constants.balance] == '0' | ||
assert users[0][response_name_constants.associated_wallets_balance] == '0' | ||
|
||
assert users[1]['user_id'] == 2 | ||
assert users[1][response_name_constants.does_current_user_follow] == True | ||
assert users[1][response_name_constants.current_user_followee_follow_count] == 0 | ||
assert users[1][response_name_constants.balance] == '0' | ||
assert users[1][response_name_constants.associated_wallets_balance] == '0' | ||
|
||
assert users[2]['user_id'] == 3 | ||
assert users[2][response_name_constants.does_current_user_follow] == True | ||
assert users[2][response_name_constants.current_user_followee_follow_count] == 1 | ||
assert users[2][response_name_constants.balance] == '0' | ||
assert users[2][response_name_constants.associated_wallets_balance] == '0' |
Oops, something went wrong.