From 961530cb512cbd8b5cf817bfe5e7b580e8e163d9 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Sun, 6 Apr 2025 19:54:00 +0100 Subject: [PATCH] Add tests for BarcodeScan.Result --- .../barcode_scan/result_test.exs | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 test/music_library/barcode_scan/result_test.exs diff --git a/test/music_library/barcode_scan/result_test.exs b/test/music_library/barcode_scan/result_test.exs new file mode 100644 index 00000000..50f57a2d --- /dev/null +++ b/test/music_library/barcode_scan/result_test.exs @@ -0,0 +1,80 @@ +defmodule MusicLibrary.BarcodeScan.ResultTest do + use ExUnit.Case, async: true + + alias MusicLibrary.BarcodeScan.Result + alias MusicBrainz.{ReleaseGroupSearchResult, ReleaseSearchResult} + + @release_group %ReleaseGroupSearchResult{ + id: "123", + type: :album, + title: "Test Release Group", + artists: ["Test Artist"], + release: "2021-01-01" + } + + @release %ReleaseSearchResult{ + id: "123", + title: "Test Release", + release_group: @release_group, + artists: ["Test Artist"], + date: "2021-01-01", + barcode: "1234567890", + media: [ + %{ + format: "CD", + track_count: 10, + disc_count: 1 + } + ] + } + + describe "new/2" do + test "creates a new result with status :new" do + number = "123456789" + result = Result.new(number, @release) + + assert result.status == :new + assert result.number == number + assert result.release == @release + assert result.record_id == nil + end + end + + describe "wishlisted/3" do + test "creates a result with status :wishlisted" do + number = "123456789" + record_id = "record-123" + result = Result.wishlisted(number, record_id, @release) + + assert result.status == :wishlisted + assert result.number == number + assert result.record_id == record_id + assert result.release == @release + end + end + + describe "collected/3" do + test "creates a result with status :collected" do + number = "123456789" + record_id = "record-123" + result = Result.collected(number, record_id, @release) + + assert result.status == :collected + assert result.number == number + assert result.record_id == record_id + assert result.release == @release + end + end + + describe "not_found/1" do + test "creates a result with status :not_found" do + number = "123456789" + result = Result.not_found(number) + + assert result.status == :not_found + assert result.number == number + assert result.release == nil + assert result.record_id == nil + end + end +end