@@ -169,4 +169,122 @@ class ThemeDataTest {
169169 )
170170 }
171171 }
172+
173+ @Test
174+ @JsName(" verifyRemoteJsonColorStringsAreAccurate" )
175+ fun `verify remote json color strings are accurate` () {
176+ val portfolioApi = PortfolioApi (
177+ PortfolioApi .createHttpClient(enableNetworkLogs = true )
178+ )
179+
180+ runTest {
181+ assertEquals(
182+ true ,
183+ portfolioApi
184+ .getThemeData()
185+ .themes
186+ .fold(true ) { acc, cur ->
187+ acc && cur.let {
188+ it.primaryColor.isAccurateColorString()
189+ && it.onPrimaryColor.isAccurateColorString()
190+ && it.surfaceColor.isAccurateColorString()
191+ && it.onSurfaceColor.isAccurateColorString()
192+ && it.errorColor.isAccurateColorString()
193+ && it.onErrorColor.isAccurateColorString()
194+ }
195+ }
196+ )
197+ }
198+ }
199+
200+ private fun String.isAccurateColorString (): Boolean {
201+ return matches(Regex (" #([A-Fa-f0-9]){8}" ))
202+ }
203+
204+ /*
205+ @Test
206+ @JsName("verifyLocalJsonSerializationIsWorking")
207+ fun `verify local json serialization is working`() {
208+ val mockEngine = MockEngine { request ->
209+ if (request.url.toString().endsWith("/theme.json")) {
210+ respond(
211+ content = ByteReadChannel(
212+ readBinaryResource("api/theme.json").toString()
213+ ),
214+ status = HttpStatusCode.OK,
215+ headers = headersOf(HttpHeaders.ContentType, "application/json")
216+ )
217+ } else {
218+ respond(content = ByteReadChannel(""))
219+ }
220+ }
221+
222+ val portfolioApi = PortfolioApi(
223+ PortfolioApi.createHttpClient(
224+ engine = mockEngine,
225+ enableNetworkLogs = true
226+ )
227+ )
228+
229+ runTest {
230+ assertEquals(
231+ ThemeDataResponse(
232+ listOf(
233+ ThemeColorsDataResponse(
234+ name = "Dark Salmon",
235+ isDark = true,
236+ primaryColor = "#FFFFCDD2",
237+ onPrimaryColor = "#FF4E342E",
238+ surfaceColor = "#FF212121",
239+ onSurfaceColor = "#FFffffff",
240+ errorColor = "#FFE57373",
241+ onErrorColor = "#FF4E342E",
242+ ),
243+ ThemeColorsDataResponse(
244+ name = "Light Blue",
245+ isDark = false,
246+ primaryColor = "#ffEA5C5A",
247+ onPrimaryColor = "#FFffffff",
248+ surfaceColor = "#ffCDECF9",
249+ onSurfaceColor = "#FF030204",
250+ errorColor = "#FFE57373",
251+ onErrorColor = "#FF212121",
252+ ),
253+ ThemeColorsDataResponse(
254+ name = "Matt D'av Ella",
255+ isDark = false,
256+ primaryColor = "#ffE35638",
257+ onPrimaryColor = "#FFFADACA",
258+ surfaceColor = "#ffFBF8EC",
259+ onSurfaceColor = "#FF24242C",
260+ errorColor = "#FFE57373",
261+ onErrorColor = "#FF212121",
262+ ),
263+ ThemeColorsDataResponse(
264+ name = "Google",
265+ isDark = false,
266+ primaryColor = "#ff4285F4",
267+ onPrimaryColor = "#FFffffff",
268+ surfaceColor = "#ffffffff",
269+ onSurfaceColor = "#FF212121",
270+ errorColor = "#FFE57373",
271+ onErrorColor = "#FF212121",
272+ ),
273+ ThemeColorsDataResponse(
274+ name = "Spotify",
275+ isDark = true,
276+ primaryColor = "#ff1FDF64",
277+ onPrimaryColor = "#FF212121",
278+ surfaceColor = "#ff212121",
279+ onSurfaceColor = "#FFFFFFFF",
280+ errorColor = "#FFE57373",
281+ onErrorColor = "#FF212121",
282+ )
283+ )
284+ ),
285+ portfolioApi.getThemeData()
286+ )
287+ }
288+ }
289+ */
172290}
0 commit comments