Tests updates and other fixes (#27)

This PR contains the work done to update the live test data to its latest version. Plus other improvements have been made:

* conformed the `AmiiboServiceError` error to the `LocalizableError` protocol,
* improved the `ISODateTimeTranscoder` transcoder to handle the decoding of both ISO dates and timestamps,
* removed a force-unwrapped from the `AmiiboLiveClient` type.

Reviewed-on: #27
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
This commit was merged in pull request #27.
This commit is contained in:
2026-03-27 17:14:26 +00:00
committed by Javier Cicchelli
parent 2442ada4b6
commit 1488aa151e
151 changed files with 259 additions and 197 deletions
@@ -1 +1 @@
{"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"kind":"text","text":": "},{"text":"URL","preciseIdentifier":"s:10Foundation3URLV","kind":"typeIdentifier"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"kind":"typeIdentifier","text":"URL","preciseIdentifier":"s:10Foundation3URLV"},{"text":"?","kind":"text"}],"externalID":"s:13AmiiboService0A0V8imageURL10Foundation0D0VSgvp","roleHeading":"Instance Property","modules":[{"name":"AmiiboService"}],"role":"symbol","title":"imageURL","symbolKind":"property"},"kind":"symbol","hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"abstract":[{"text":"A URL constructed from the ","type":"text"},{"isActive":true,"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","type":"reference"},{"text":" string, if valid.","type":"text"}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"variants":[{"traits":[{"interfaceLanguage":"swift"}],"paths":["\/documentation\/amiiboservice\/amiibo\/imageurl"]}],"sections":[],"schemaVersion":{"minor":3,"patch":0,"major":0},"references":{"doc://AmiiboService/documentation/AmiiboService":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","type":"topic","role":"collection","title":"AmiiboService","url":"\/documentation\/amiiboservice","kind":"symbol","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"type":"strong","inlineContent":[{"text":"Amiibo API","type":"text"}]},{"type":"text","text":" backend service."}]},"doc://AmiiboService/documentation/AmiiboService/Amiibo/imageURL":{"abstract":[{"type":"text","text":"A URL constructed from the "},{"isActive":true,"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image"},{"text":" string, if valid.","type":"text"}],"type":"topic","fragments":[{"kind":"keyword","text":"var"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"text":"URL","preciseIdentifier":"s:10Foundation3URLV","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/imageurl","kind":"symbol","role":"symbol","title":"imageURL","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","title":"Amiibo","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol","type":"topic","abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo","navigatorTitle":[{"text":"Amiibo","kind":"identifier"}],"role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"abstract":[{"type":"text","text":"A URL string pointing to the image of this amiibo."}],"kind":"symbol","title":"image","role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","fragments":[{"kind":"keyword","text":"let"},{"text":" ","kind":"text"},{"kind":"identifier","text":"image"},{"text":": ","kind":"text"},{"text":"String","kind":"typeIdentifier","preciseIdentifier":"s:SS"}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic"}}}
{"schemaVersion":{"patch":0,"major":0,"minor":3},"abstract":[{"text":"A URL constructed from the ","type":"text"},{"type":"reference","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","isActive":true},{"text":" string, if valid.","type":"text"}],"hierarchy":{"paths":[["doc:\/\/AmiiboService\/documentation\/AmiiboService","doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo"]]},"variants":[{"paths":["\/documentation\/amiiboservice\/amiibo\/imageurl"],"traits":[{"interfaceLanguage":"swift"}]}],"metadata":{"roleHeading":"Instance Property","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation3URLV","text":"URL","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"title":"imageURL","modules":[{"name":"AmiiboService"}],"role":"symbol","symbolKind":"property","externalID":"s:13AmiiboService0A0V8imageURL10Foundation0D0VSgvp"},"kind":"symbol","sections":[],"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"text":"URL","kind":"typeIdentifier","preciseIdentifier":"s:10Foundation3URLV"},{"text":"? { ","kind":"text"},{"text":"get","kind":"keyword"},{"text":" }","kind":"text"}],"platforms":["macOS"],"languages":["swift"]}]}],"identifier":{"interfaceLanguage":"swift","url":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL"},"references":{"doc://AmiiboService/documentation/AmiiboService/Amiibo":{"abstract":[{"text":"A model that represents an amiibo.","type":"text"}],"navigatorTitle":[{"kind":"identifier","text":"Amiibo"}],"role":"symbol","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo","type":"topic","title":"Amiibo","url":"\/documentation\/amiiboservice\/amiibo","fragments":[{"kind":"keyword","text":"struct"},{"text":" ","kind":"text"},{"text":"Amiibo","kind":"identifier"}],"kind":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/imageURL":{"kind":"symbol","fragments":[{"text":"var","kind":"keyword"},{"text":" ","kind":"text"},{"text":"imageURL","kind":"identifier"},{"text":": ","kind":"text"},{"preciseIdentifier":"s:10Foundation3URLV","text":"URL","kind":"typeIdentifier"},{"text":"?","kind":"text"}],"abstract":[{"text":"A URL constructed from the ","type":"text"},{"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","isActive":true,"type":"reference"},{"text":" string, if valid.","type":"text"}],"url":"\/documentation\/amiiboservice\/amiibo\/imageurl","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/imageURL","title":"imageURL","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService/Amiibo/image":{"kind":"symbol","fragments":[{"text":"let","kind":"keyword"},{"text":" ","kind":"text"},{"text":"image","kind":"identifier"},{"text":": ","kind":"text"},{"text":"String","preciseIdentifier":"s:SS","kind":"typeIdentifier"}],"abstract":[{"type":"text","text":"A URL string pointing to the image of this amiibo."}],"url":"\/documentation\/amiiboservice\/amiibo\/image","type":"topic","identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService\/Amiibo\/image","title":"image","role":"symbol"},"doc://AmiiboService/documentation/AmiiboService":{"title":"AmiiboService","kind":"symbol","type":"topic","abstract":[{"text":"A library that provides everything the developer needs to interact with the ","type":"text"},{"inlineContent":[{"text":"Amiibo API","type":"text"}],"type":"strong"},{"type":"text","text":" backend service."}],"identifier":"doc:\/\/AmiiboService\/documentation\/AmiiboService","url":"\/documentation\/amiiboservice","role":"collection"}}}