@@ -37,25 +37,35 @@ import com.theupnextapp.network.models.tvmaze.NetworkShowSearchReponseLinks
3737import com.theupnextapp.network.models.tvmaze.NetworkShowSearchResponsePreviousepisode
3838import com.theupnextapp.network.models.tvmaze.NetworkShowSearchResponseSelf
3939import com.theupnextapp.network.models.tvmaze.Externals
40- import java.io.IOException // Added for error simulation
40+ import java.io.IOException
4141import kotlinx.coroutines.CompletableDeferred
4242import kotlinx.coroutines.Deferred
4343
4444class FakeTvMazeService : TvMazeService {
4545
4646 var mockShowInfoResponse: NetworkShowInfoResponse ? = null
47- // Flag for getShowSummaryAsync error simulation - already present
48- var shouldThrowGetShowSummaryError : Boolean = false
47+ var shouldThrowGetShowSummaryError : Boolean = false // Legacy, for generic IOException
48+ var showSummaryError : Throwable ? = null // For specific throwables
4949
50+ var mockShowLookupResponse: NetworkTvMazeShowLookupResponse ? = null
51+ var showLookupError: Throwable ? = null
5052
5153 var mockNextEpisodeResponse: NetworkShowNextEpisodeResponse ? = null
54+ var nextEpisodeError: Throwable ? = null
55+
5256 var mockPreviousEpisodeResponse: NetworkShowPreviousEpisodeResponse ? = null
57+ var shouldThrowGetPreviousEpisodeError: Boolean = false // Legacy, for generic IOException
58+ var previousEpisodeError: Throwable ? = null // For specific throwables
59+
5360 var mockShowCastResponse: NetworkShowCastResponse ? = null
61+ var showCastError: Throwable ? = null
62+
5463 var mockShowSeasonsResponse: NetworkShowSeasonsResponse ? = null
64+ var showSeasonsError: Throwable ? = null
65+
5566 var mockTvMazeEpisodesResponse: NetworkTvMazeEpisodesResponse ? = null
67+ var seasonEpisodesError: Throwable ? = null
5668
57- // Added: Flag for getPreviousEpisodeAsync error simulation
58- var shouldThrowGetPreviousEpisodeError: Boolean = false
5969
6070 override fun getYesterdayScheduleAsync (
6171 countryCode : String ,
@@ -79,14 +89,17 @@ class FakeTvMazeService : TvMazeService {
7989 }
8090
8191 override fun getShowLookupAsync (imdbId : String ): Deferred <NetworkTvMazeShowLookupResponse > {
82- throw NotImplementedError (" Fake method not implemented" )
92+ showLookupError?.let { throw it }
93+ mockShowLookupResponse?.let { return CompletableDeferred (it) }
94+ throw NotImplementedError (" mockShowLookupResponse not set for this test, or showLookupError not specified." )
8395 }
8496
8597 override fun getShowImagesAsync (id : String ): Deferred <NetworkTvMazeShowImageResponse > {
86- throw NotImplementedError (" Fake method not implemented" )
98+ throw NotImplementedError (" Fake method not implemented for getShowImagesAsync. Consider adding mock/error properties if needed. " )
8799 }
88100
89101 override fun getSuggestionListAsync (name : String ): Deferred <List <NetworkShowSearchResponse >> {
102+ // Keeping existing minimal mock for now, can be enhanced with error/mock properties if needed by tests
90103 val showData = NetworkShowSearchResponseShow (
91104 id = 1 ,
92105 name = " Queen of the South" ,
@@ -123,73 +136,52 @@ class FakeTvMazeService : TvMazeService {
123136 officialSite = " http://www.usanetwork.com/queen-of-the-south" ,
124137 runtime = 60 ,
125138 type = " Scripted" ,
126- webChannel = Any (), // Consider replacing Any with a more specific mock or null if appropriate
139+ webChannel = Any (),
127140 weight = 99
128141 )
129-
130142 val searchResult = NetworkShowSearchResponse (score = 10.0 , show = showData)
131- val searchResults = mutableListOf (searchResult)
132-
133- return CompletableDeferred (searchResults)
143+ return CompletableDeferred (listOf (searchResult))
134144 }
135145
136146 override fun getShowSummaryAsync (id : String? ): Deferred <NetworkShowInfoResponse > {
137- if (shouldThrowGetShowSummaryError) {
147+ showSummaryError?.let { throw it }
148+ if (shouldThrowGetShowSummaryError) { // Legacy generic error
138149 throw IOException (" Fake network error for getShowSummary" )
139150 }
140- val currentMock = mockShowInfoResponse
141- if (currentMock != null ) {
142- return CompletableDeferred (currentMock)
143- } else {
144- throw NotImplementedError (" mockShowInfoResponse not set for this test" )
145- }
151+ mockShowInfoResponse?.let { return CompletableDeferred (it) }
152+ throw NotImplementedError (" mockShowInfoResponse not set for this test, or showSummaryError/shouldThrowGetShowSummaryError not specified." )
146153 }
147154
148155 override fun getNextEpisodeAsync (name : String? ): Deferred <NetworkShowNextEpisodeResponse > {
149- val currentMock = mockNextEpisodeResponse
150- if (currentMock != null ) {
151- return CompletableDeferred (currentMock)
152- } else {
153- throw NotImplementedError (" mockNextEpisodeResponse not set for this test" )
154- }
156+ nextEpisodeError?.let { throw it }
157+ mockNextEpisodeResponse?.let { return CompletableDeferred (it) }
158+ throw NotImplementedError (" mockNextEpisodeResponse not set for this test, or nextEpisodeError not specified." )
155159 }
156160
157161 override fun getPreviousEpisodeAsync (name : String? ): Deferred <NetworkShowPreviousEpisodeResponse > {
158- if (shouldThrowGetPreviousEpisodeError) {
162+ previousEpisodeError?.let { throw it }
163+ if (shouldThrowGetPreviousEpisodeError) { // Legacy generic error
159164 throw IOException (" Fake network error for getPreviousEpisode" )
160165 }
161- val currentMock = mockPreviousEpisodeResponse
162- if (currentMock != null ) {
163- return CompletableDeferred (currentMock)
164- } else {
165- throw NotImplementedError (" mockPreviousEpisodeResponse not set for this test" )
166- }
166+ mockPreviousEpisodeResponse?.let { return CompletableDeferred (it) }
167+ throw NotImplementedError (" mockPreviousEpisodeResponse not set for this test, or previousEpisodeError/shouldThrowGetPreviousEpisodeError not specified." )
167168 }
168169
169170 override fun getShowCastAsync (id : String? ): Deferred <NetworkShowCastResponse > {
170- val currentMock = mockShowCastResponse
171- if (currentMock != null ) {
172- return CompletableDeferred (currentMock)
173- } else {
174- throw NotImplementedError (" mockShowCastResponse not set for this test" )
175- }
171+ showCastError?.let { throw it }
172+ mockShowCastResponse?.let { return CompletableDeferred (it) }
173+ throw NotImplementedError (" mockShowCastResponse not set for this test, or showCastError not specified." )
176174 }
177175
178176 override fun getShowSeasonsAsync (id : String? ): Deferred <NetworkShowSeasonsResponse > {
179- val currentMock = mockShowSeasonsResponse
180- if (currentMock != null ) {
181- return CompletableDeferred (currentMock)
182- } else {
183- throw NotImplementedError (" mockShowSeasonsResponse not set for this test" )
184- }
177+ showSeasonsError?.let { throw it }
178+ mockShowSeasonsResponse?.let { return CompletableDeferred (it) }
179+ throw NotImplementedError (" mockShowSeasonsResponse not set for this test, or showSeasonsError not specified." )
185180 }
186181
187182 override fun getSeasonEpisodesAsync (id : String? ): Deferred <NetworkTvMazeEpisodesResponse > {
188- val currentMock = mockTvMazeEpisodesResponse
189- if (currentMock != null ) {
190- return CompletableDeferred (currentMock)
191- } else {
192- throw NotImplementedError (" mockTvMazeEpisodesResponse not set for this test" )
193- }
183+ seasonEpisodesError?.let { throw it }
184+ mockTvMazeEpisodesResponse?.let { return CompletableDeferred (it) }
185+ throw NotImplementedError (" mockTvMazeEpisodesResponse not set for this test, or seasonEpisodesError not specified." )
194186 }
195187}
0 commit comments