|
|
|
|
@ -189,85 +189,3 @@ func TestMergeArtists(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
truncateTestData(t)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func TestMergeTracks_EnsureParentOfReleaseIsKept(t *testing.T) {
|
|
|
|
|
truncateTestData(t)
|
|
|
|
|
|
|
|
|
|
// Prepare test data with only album assigned to artist 1,
|
|
|
|
|
// and two tracks, both under album one, but under two different artists
|
|
|
|
|
|
|
|
|
|
// Insert artists
|
|
|
|
|
err := store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO artists (musicbrainz_id, image, image_source)
|
|
|
|
|
VALUES ('00000000-0000-0000-0000-000000000001', '10000000-0000-0000-0000-000000000000', 'source.com'),
|
|
|
|
|
('00000000-0000-0000-0000-000000000002', NULL, NULL)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO artist_aliases (artist_id, alias, source, is_primary)
|
|
|
|
|
VALUES (1, 'Artist One', 'Testing', true),
|
|
|
|
|
(2, 'Artist Two', 'Testing', true)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
// Insert albums
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO releases (musicbrainz_id, image, image_source)
|
|
|
|
|
VALUES ('11111111-1111-1111-1111-111111111111', '20000000-0000-0000-0000-000000000000', 'source.com')`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO release_aliases (release_id, alias, source, is_primary)
|
|
|
|
|
VALUES (1, 'Album One', 'Testing', true)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
// Insert tracks
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO tracks (musicbrainz_id, release_id)
|
|
|
|
|
VALUES ('33333333-3333-3333-3333-333333333333', 1),
|
|
|
|
|
('44444444-4444-4444-4444-444444444444', 1)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO track_aliases (track_id, alias, source, is_primary)
|
|
|
|
|
VALUES (1, 'Track One', 'Testing', true),
|
|
|
|
|
(2, 'Track Two', 'Testing', true)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
// Associate artists with albums and tracks
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO artist_releases (artist_id, release_id)
|
|
|
|
|
VALUES (1, 1)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO artist_tracks (artist_id, track_id)
|
|
|
|
|
VALUES (1, 1), (2, 2)`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
// Insert listens
|
|
|
|
|
err = store.Exec(context.Background(),
|
|
|
|
|
`INSERT INTO listens (user_id, track_id, listened_at)
|
|
|
|
|
VALUES (1, 1, NOW() - INTERVAL '1 day'),
|
|
|
|
|
(1, 2, NOW() - INTERVAL '2 days')`)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
ctx := context.Background()
|
|
|
|
|
err = store.MergeTracks(ctx, 1, 2)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
|
|
exists, err := store.RowExists(ctx, `
|
|
|
|
|
SELECT EXISTS (
|
|
|
|
|
SELECT 1 FROM artists
|
|
|
|
|
WHERE id = $1
|
|
|
|
|
)`, 1)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.True(t, exists, "expected artist associated with release to still exist")
|
|
|
|
|
|
|
|
|
|
exists, err = store.RowExists(ctx, `
|
|
|
|
|
SELECT EXISTS (
|
|
|
|
|
SELECT 1 FROM releases
|
|
|
|
|
WHERE id = $1
|
|
|
|
|
)`, 1)
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
assert.True(t, exists, "expected release to still exist")
|
|
|
|
|
}
|
|
|
|
|
|