33
44import pytest
55
6+ from beets .autotag import AlbumMatch
7+ from beets .autotag .distance import Distance
68from beets .autotag .hooks import AlbumInfo , TrackInfo
79from beets .library import Item
810from beets .test .helper import PluginMixin
1416)
1517
1618
17- class TestPseudoAlbumInfo :
18- @pytest .fixture
19- def official_release (self ) -> AlbumInfo :
20- return AlbumInfo (
21- tracks = [TrackInfo (title = "百花繚乱" )],
22- album_id = "official" ,
23- album = "百花繚乱" ,
24- )
19+ @pytest .fixture (scope = "module" )
20+ def official_release_info () -> AlbumInfo :
21+ return AlbumInfo (
22+ tracks = [TrackInfo (title = "百花繚乱" )],
23+ album_id = "official" ,
24+ album = "百花繚乱" ,
25+ )
2526
26- @pytest .fixture
27- def pseudo_release (self ) -> AlbumInfo :
28- return AlbumInfo (
29- tracks = [TrackInfo (title = "In Bloom" )],
30- album_id = "pseudo" ,
31- album = "In Bloom" ,
32- )
3327
28+ @pytest .fixture (scope = "module" )
29+ def pseudo_release_info () -> AlbumInfo :
30+ return AlbumInfo (
31+ tracks = [TrackInfo (title = "In Bloom" )],
32+ album_id = "pseudo" ,
33+ album = "In Bloom" ,
34+ )
35+
36+
37+ class TestPseudoAlbumInfo :
3438 def test_album_id_always_from_pseudo (
35- self , official_release : AlbumInfo , pseudo_release : AlbumInfo
39+ self , official_release_info : AlbumInfo , pseudo_release_info : AlbumInfo
3640 ):
37- info = PseudoAlbumInfo (pseudo_release , official_release )
41+ info = PseudoAlbumInfo (pseudo_release_info , official_release_info )
3842 info .use_official_as_ref ()
3943 assert info .album_id == "pseudo"
4044
4145 def test_get_attr_from_pseudo (
42- self , official_release : AlbumInfo , pseudo_release : AlbumInfo
46+ self , official_release_info : AlbumInfo , pseudo_release_info : AlbumInfo
4347 ):
44- info = PseudoAlbumInfo (pseudo_release , official_release )
48+ info = PseudoAlbumInfo (pseudo_release_info , official_release_info )
4549 assert info .album == "In Bloom"
4650
4751 def test_get_attr_from_official (
48- self , official_release : AlbumInfo , pseudo_release : AlbumInfo
52+ self , official_release_info : AlbumInfo , pseudo_release_info : AlbumInfo
4953 ):
50- info = PseudoAlbumInfo (pseudo_release , official_release )
54+ info = PseudoAlbumInfo (pseudo_release_info , official_release_info )
5155 info .use_official_as_ref ()
5256 assert info .album == info .get_official_release ().album
5357
5458 def test_determine_best_ref (
55- self , official_release : AlbumInfo , pseudo_release : AlbumInfo
59+ self , official_release_info : AlbumInfo , pseudo_release_info : AlbumInfo
5660 ):
5761 info = PseudoAlbumInfo (
58- pseudo_release , official_release , data_source = "test"
62+ pseudo_release_info , official_release_info , data_source = "test"
5963 )
6064 item = Item ()
6165 item ["title" ] = "百花繚乱"
@@ -126,7 +130,7 @@ def test_album_info_for_pseudo_release(
126130 ):
127131 album_info = mbpseudo_plugin .album_info (pseudo_release ["release" ])
128132 assert not isinstance (album_info , PseudoAlbumInfo )
129- assert album_info .data_source == "MusicBrainz "
133+ assert album_info .data_source == "MusicBrainzPseudoRelease "
130134 assert album_info .albumstatus == _STATUS_PSEUDO
131135
132136 @pytest .mark .parametrize (
@@ -147,7 +151,7 @@ def test_interception_skip_when_rel_values_dont_match(
147151
148152 album_info = mbpseudo_plugin .album_info (official_release ["release" ])
149153 assert not isinstance (album_info , PseudoAlbumInfo )
150- assert album_info .data_source == "MusicBrainz "
154+ assert album_info .data_source == "MusicBrainzPseudoRelease "
151155
152156 def test_interception_skip_when_script_doesnt_match (
153157 self ,
@@ -160,7 +164,7 @@ def test_interception_skip_when_script_doesnt_match(
160164
161165 album_info = mbpseudo_plugin .album_info (official_release ["release" ])
162166 assert not isinstance (album_info , PseudoAlbumInfo )
163- assert album_info .data_source == "MusicBrainz "
167+ assert album_info .data_source == "MusicBrainzPseudoRelease "
164168
165169 def test_interception (
166170 self ,
@@ -173,4 +177,49 @@ def test_interception(
173177 )
174178 album_info = mbpseudo_plugin .album_info (official_release ["release" ])
175179 assert isinstance (album_info , PseudoAlbumInfo )
176- assert album_info .data_source == "MusicBrainz"
180+ assert album_info .data_source == "MusicBrainzPseudoRelease"
181+
182+ def test_final_adjustment_skip (
183+ self ,
184+ mbpseudo_plugin : MusicBrainzPseudoReleasePlugin ,
185+ ):
186+ match = AlbumMatch (
187+ distance = Distance (),
188+ info = AlbumInfo (tracks = [], data_source = "mb" ),
189+ mapping = {},
190+ extra_items = [],
191+ extra_tracks = [],
192+ )
193+
194+ mbpseudo_plugin ._adjust_final_album_match (match )
195+ assert match .info .data_source == "mb"
196+
197+ def test_final_adjustment (
198+ self ,
199+ mbpseudo_plugin : MusicBrainzPseudoReleasePlugin ,
200+ official_release_info : AlbumInfo ,
201+ pseudo_release_info : AlbumInfo ,
202+ ):
203+ pseudo_album_info = PseudoAlbumInfo (
204+ pseudo_release = pseudo_release_info ,
205+ official_release = official_release_info ,
206+ data_source = mbpseudo_plugin .data_source ,
207+ )
208+ pseudo_album_info .use_official_as_ref ()
209+
210+ item = Item ()
211+ item ["title" ] = "百花繚乱"
212+
213+ match = AlbumMatch (
214+ distance = Distance (),
215+ info = pseudo_album_info ,
216+ mapping = {item : pseudo_album_info .tracks [0 ]},
217+ extra_items = [],
218+ extra_tracks = [],
219+ )
220+
221+ mbpseudo_plugin ._adjust_final_album_match (match )
222+
223+ assert match .info .data_source == "MusicBrainz"
224+ assert match .info .album_id == "pseudo"
225+ assert match .info .album == "In Bloom"
0 commit comments