@@ -66,6 +66,21 @@ def sp_artist_mock():
66
66
return sp_artist
67
67
68
68
69
+ @pytest .fixture
70
+ def sp_unloaded_artist_mock ():
71
+ sp_artist = mock .Mock (spec = spotify .Artist )
72
+ sp_artist .is_loaded = False
73
+ sp_artist .name = None
74
+
75
+ sp_link = mock .Mock (spec = spotify .Link )
76
+ sp_link .uri = 'spotify:artist:abba'
77
+ sp_link .type = spotify .LinkType .ARTIST
78
+ sp_link .as_artist .return_value = sp_artist
79
+ sp_artist .link = sp_link
80
+
81
+ return sp_artist
82
+
83
+
69
84
@pytest .fixture
70
85
def sp_artist_browser_mock (sp_artist_mock , sp_album_mock ):
71
86
sp_artist_browser = mock .Mock (spec = spotify .ArtistBrowser )
@@ -94,6 +109,25 @@ def sp_album_mock(sp_artist_mock):
94
109
return sp_album
95
110
96
111
112
+ @pytest .fixture
113
+ def sp_unloaded_album_mock (sp_unloaded_artist_mock ):
114
+ sp_album = mock .Mock (spec = spotify .Album )
115
+ sp_album .is_loaded = True
116
+ sp_album .is_loaded = False
117
+ sp_album .name = None
118
+ # Optimally, we should test with both None and sp_unloaded_artist_mock
119
+ sp_album .artist = sp_unloaded_artist_mock
120
+ sp_album .year = None
121
+
122
+ sp_link = mock .Mock (spec = spotify .Link )
123
+ sp_link .uri = 'spotify:album:def'
124
+ sp_link .type = spotify .LinkType .ALBUM
125
+ sp_link .as_album .return_value = sp_album
126
+ sp_album .link = sp_link
127
+
128
+ return sp_album
129
+
130
+
97
131
@pytest .fixture
98
132
def sp_album_browser_mock (sp_album_mock , sp_track_mock ):
99
133
sp_album_browser = mock .Mock (spec = spotify .AlbumBrowser )
@@ -128,6 +162,30 @@ def sp_track_mock(sp_artist_mock, sp_album_mock):
128
162
return sp_track
129
163
130
164
165
+ @pytest .fixture
166
+ def sp_unloaded_track_mock (sp_unloaded_artist_mock , sp_unloaded_album_mock ):
167
+ sp_track = mock .Mock (spec = spotify .Track )
168
+ sp_track .is_loaded = False
169
+ sp_track .error = spotify .ErrorType .OK
170
+ sp_track .availability = None
171
+ sp_track .name = None
172
+ # Optimally, we should test with both None and [sp_unloaded_artist_mock]
173
+ sp_track .artists = [sp_unloaded_artist_mock ]
174
+ # Optimally, we should test with both None and sp_unloaded_album_mock
175
+ sp_track .album = sp_unloaded_album_mock
176
+ sp_track .duration = None
177
+ sp_track .disc = None
178
+ sp_track .index = None
179
+
180
+ sp_link = mock .Mock (spec = spotify .Link )
181
+ sp_link .uri = 'spotify:track:abc'
182
+ sp_link .type = spotify .LinkType .TRACK
183
+ sp_link .as_track .return_value = sp_track
184
+ sp_track .link = sp_link
185
+
186
+ return sp_track
187
+
188
+
131
189
@pytest .fixture
132
190
def sp_starred_mock (sp_user_mock , sp_artist_mock , sp_album_mock ):
133
191
sp_track1 = sp_track_mock (sp_artist_mock , sp_album_mock )
@@ -170,6 +228,24 @@ def sp_playlist_mock(sp_user_mock, sp_track_mock):
170
228
return sp_playlist
171
229
172
230
231
+ @pytest .fixture
232
+ def sp_unloaded_playlist_mock (sp_unloaded_track_mock ):
233
+ sp_playlist = mock .Mock (spec = spotify .Playlist )
234
+ sp_playlist .is_loaded = False
235
+ sp_playlist .owner = None
236
+ sp_playlist .name = None
237
+ # Optimally, we should test with both None and [sp_unloaded_track_mock]
238
+ sp_playlist .tracks = [sp_unloaded_track_mock ]
239
+
240
+ sp_link = mock .Mock (spec = spotify .Link )
241
+ sp_link .uri = 'spotify:user:alice:playlist:foo'
242
+ sp_link .type = spotify .LinkType .PLAYLIST
243
+ sp_link .as_playlist .return_value = sp_playlist
244
+ sp_playlist .link = sp_link
245
+
246
+ return sp_playlist
247
+
248
+
173
249
@pytest .fixture
174
250
def sp_playlist_folder_start_mock ():
175
251
sp_playlist_folder_start = mock .Mock (spec = spotify .PlaylistFolder )
0 commit comments