scanner_test.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. package services
  2. import (
  3. "context"
  4. "testing"
  5. "github.com/felamaslen/go-music-player/pkg/db"
  6. "github.com/felamaslen/go-music-player/pkg/read"
  7. setup "github.com/felamaslen/go-music-player/pkg/testing"
  8. "github.com/stretchr/testify/assert"
  9. )
  10. func TestIntegrationScanAndInsert(t *testing.T) {
  11. setup.PrepareDatabaseForTesting()
  12. ScanAndInsert(read.TestDirectory)
  13. conn := db.GetConnection()
  14. rows, err := conn.Query(
  15. context.Background(),
  16. `
  17. select
  18. title as "Title"
  19. ,artist as "Artist"
  20. ,album as "Album"
  21. ,coalesce(duration, 0) as "Duration"
  22. ,duration is not null as "DurationOk"
  23. ,base_path as "BasePath"
  24. ,relative_path as "RelativePath"
  25. from songs
  26. `,
  27. )
  28. assert.Nil(t, err)
  29. var song read.Song
  30. rows.Next()
  31. rows.Scan(&song.Title, &song.Artist, &song.Album, &song.Duration, &song.DurationOk, &song.BasePath, &song.RelativePath)
  32. assert.Equal(t, read.Song{
  33. Title: read.TestSong.Title,
  34. Artist: read.TestSong.Artist,
  35. Album: read.TestSong.Album,
  36. Duration: read.TestSong.Duration,
  37. DurationOk: true,
  38. BasePath: read.TestSong.BasePath,
  39. RelativePath: read.TestSong.RelativePath,
  40. }, song)
  41. }