* Remove `SIMULATED_STORE` flag
* Remove unnecessary test (now that the compiler flag does not exist anymore)
* remove `.testStore` enum case from `Store`
Will be added in the future once the test store is released publicly
* Rename variables for internal consistency
* Rename Test Store to Simulated Store only internally
* fix lint
* fix test under `SIMULATED_STORE` compiler flag
* fix test compilation
* Add name clarification to `APIKeyValidationResult.simulatedStore` enum case
* Fix public-facing strings
* Improve comment
* improve comment
* Add Test Store case to the `Store` enum
Under the `TEST_STORE` compiler flag
* Cover new `.testStore` case in switches over the `Store` enum
* add extra unit test
The method doesn't actually throw, so calling `throw decoder.throwValueNotFoundError()` was confusing. Now the code reads `throw decoder.valueNotFoundError()`.
Follow up to #1551. Using `Codable.encodeAndDecode` we ensure that each value can be bidirectionally converted.
These tests exposed that unknown values were being encoded as `null`, but then failed to decode.
I've updated the implementation and added a few more tests to cover this behavior.
## Changes:
- Improved output of decoding errors:
#### Before:
```
[Purchases] - ERROR: 😿‼️ Couldn't decode data from json. Error:
The operation couldn’t be completed. (RevenueCat.CodableError error 0.))
```
#### After:
```
[Purchases] - ERROR: 😿‼️ Couldn't decode data from json. Error:
Found unexpected value 'tienda' for type 'Store'
```
- `CodableStrings.decodingError` relied on `Error.localizedDescription`, so `CodableError` now conforms to `LocalizedError` to provide that as well
- Added incorrect `value` to the error to find out why it was invalid
- Removed extra `)` at the end of the error string
- Cleaned up `switch`es to use a single `let` syntax