Add MonitorAlbum component tests: 21 cases covering all flow diagrams (bufconn + testcontainers + hand-rolled mocks)
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
package component
|
||||
|
||||
import (
|
||||
metadataPb "homelab.lan/music-agregator/gen/metadata/v1"
|
||||
"homelab.lan/music-agregator/internal/indexer"
|
||||
)
|
||||
|
||||
func newMetadataAlbum(id, title, artistID, artistName string) *metadataPb.Album {
|
||||
return &metadataPb.Album{
|
||||
Id: id,
|
||||
Title: title,
|
||||
AlbumType: "album",
|
||||
ReleaseDate: "2024-01-15",
|
||||
TotalTracks: 10,
|
||||
TotalDiscs: 1,
|
||||
CoverUrl: "https://example.com/cover.jpg",
|
||||
Artists: []*metadataPb.ArtistCredit{
|
||||
{
|
||||
Artist: &metadataPb.Artist{
|
||||
Id: artistID,
|
||||
Name: artistName,
|
||||
},
|
||||
Role: "primary",
|
||||
Position: 1,
|
||||
},
|
||||
},
|
||||
Label: &metadataPb.Label{
|
||||
Id: "label-1",
|
||||
Name: "Test Label",
|
||||
},
|
||||
Genres: []*metadataPb.Genre{
|
||||
{Id: "genre-1", Name: "Rock"},
|
||||
{Id: "genre-2", Name: "Alternative"},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func newMetadataTrack(id, title string, trackNum int32) *metadataPb.Track {
|
||||
return &metadataPb.Track{
|
||||
Id: id,
|
||||
Title: title,
|
||||
DurationMs: 240000,
|
||||
Isrc: "US-XYZ-24-00001",
|
||||
Explicit: false,
|
||||
DiscNumber: 1,
|
||||
TrackNumber: trackNum,
|
||||
Artists: []*metadataPb.ArtistCredit{
|
||||
{
|
||||
Artist: &metadataPb.Artist{
|
||||
Id: "artist-1",
|
||||
Name: "Test Artist",
|
||||
},
|
||||
Role: "primary",
|
||||
Position: 1,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
func newSearchResponse(items ...*indexer.SearchItemResult) *indexer.SearchResponse {
|
||||
return &indexer.SearchResponse{
|
||||
Items: items,
|
||||
}
|
||||
}
|
||||
|
||||
func newSearchItem(title string, seeders int, downloadLink string) *indexer.SearchItemResult {
|
||||
return &indexer.SearchItemResult{
|
||||
Title: title,
|
||||
DownloadLink: downloadLink,
|
||||
Size: 500 * 1024 * 1024,
|
||||
Tracker: "test-tracker",
|
||||
Seeders: seeders,
|
||||
Peers: seeders / 2,
|
||||
}
|
||||
}
|
||||
|
||||
func newTorrentData() []byte {
|
||||
return []byte("d8:announce35:http://tracker.example.com/announce4:infod6:lengthi1024e4:name9:test.flac12:piece lengthi16384e6:pieces20:01234567890123456789ee")
|
||||
}
|
||||
|
||||
func newTorrentDataMP3() []byte {
|
||||
return []byte("d8:announce35:http://tracker.example.com/announce4:infod6:lengthi1024e4:name8:test.mp312:piece lengthi16384e6:pieces20:01234567890123456789ee")
|
||||
}
|
||||
Reference in New Issue
Block a user