Skip to content

Added ReceiptParserTests#2203

Merged
NachoSoto merged 2 commits into
mainfrom
receipt-parser-tests
Jan 17, 2023
Merged

Added ReceiptParserTests#2203
NachoSoto merged 2 commits into
mainfrom
receipt-parser-tests

Conversation

@NachoSoto

@NachoSoto NachoSoto commented Jan 10, 2023

Copy link
Copy Markdown
Contributor

For CSDK-622, we need to be able to write tests specific to ReceiptParser implementations.
This sets up that target, and allows running those tests via Xcode or SPM.

Changes:

  • Added ReceiptParserTests target to Xcode
  • Added ReceiptParserTests target to Package.swift
  • Added ReceiptParserTests to "test" phase of ReceiptParser scheme
  • Added ReceiptParserTests to All-Tests test plan
  • Added ReceiptParserTests to CI-All-Tests test plan

@NachoSoto NachoSoto added the test label Jan 10, 2023
@NachoSoto NachoSoto requested a review from a team January 10, 2023 22:10
@testable import ReceiptParser
import XCTest

class ReceiptParserFetchingTests: XCTestCase {

@NachoSoto NachoSoto Jan 10, 2023

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty placeholder so that swift build works.
Tests added in #2204.

NachoSoto added a commit that referenced this pull request Jan 10, 2023
Fixes [CSDK-622].
Depends on #2199, #2200, #2202, #2203.

- Extracted `FileReader` to be able to use it in `ReceiptParser`
- Extracted `MockBundle` to be able to use it in `ReceiptParser`
- Added new `public` `ReceiptParser.fetchAndParseLocalReceipt()`, **only to `ReceiptParser`**. This is not available through `RevenueCat`.
- Added tests for the new API
- Added new API to `ReceiptParserAPITester`

Initially I thought about moving `ReceiptFetcher` to the `Receipt|Parser` target. Unfortunately that would require moving a whole bunch of other dependencies (`OperationDispatcher`, etc, etc).
We have no easy way to create a third "Core" framework in which to place these common dependencies, so that wouldn't be trivial.

This solution adds a much simpler version of `ReceiptFetcher` that simply reads from `Bundle.appStoreReceiptURL`. As it's documented there, under normal circumstances `SKReceiptRefreshRequest` is not required, so this implementation should work for 99% of use cases, and so this way we avoid increasing the.codebase complexity unnecessarily.
@NachoSoto NachoSoto force-pushed the receipt-parser-tests branch from e31d0bb to 79f16d0 Compare January 12, 2023 18:23
NachoSoto added a commit that referenced this pull request Jan 12, 2023
Fixes [CSDK-622].
Depends on #2199, #2200, #2202, #2203.

- Extracted `FileReader` to be able to use it in `ReceiptParser`
- Extracted `MockBundle` to be able to use it in `ReceiptParser`
- Added new `public` `ReceiptParser.fetchAndParseLocalReceipt()`, **only to `ReceiptParser`**. This is not available through `RevenueCat`.
- Added tests for the new API
- Added new API to `ReceiptParserAPITester`

Initially I thought about moving `ReceiptFetcher` to the `Receipt|Parser` target. Unfortunately that would require moving a whole bunch of other dependencies (`OperationDispatcher`, etc, etc).
We have no easy way to create a third "Core" framework in which to place these common dependencies, so that wouldn't be trivial.

This solution adds a much simpler version of `ReceiptFetcher` that simply reads from `Bundle.appStoreReceiptURL`. As it's documented there, under normal circumstances `SKReceiptRefreshRequest` is not required, so this implementation should work for 99% of use cases, and so this way we avoid increasing the.codebase complexity unnecessarily.
@NachoSoto NachoSoto force-pushed the receipt-parser-tests branch 2 times, most recently from 940adfa to 3f9f2e9 Compare January 16, 2023 15:52
For [CSDK-622], we need to be able to write tests specific to `ReceiptParser` implementations.
This sets up that target, and allows running those tests via Xcode or SPM.

- Added `ReceiptParserTests` target to Xcode
- Added `ReceiptParserTests` target to `Package.swift`
- Added `ReceiptParserTests` to "test" phase of `ReceiptParser` scheme
- Added `ReceiptParserTests` to All-Tests test plan
- Added `ReceiptParserTests` to CI-All-Tests test plan
@NachoSoto NachoSoto force-pushed the receipt-parser-tests branch from 9686627 to bc453f0 Compare January 17, 2023 04:29

@tonidero tonidero left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/quick/nimble";
requirement = {
kind = upToNextMinorVersion;

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FFTI but I wonder if we could make this go up to the next major version, since it's only for tests and minors "shouldn't" break things. I'm ok leaving as is though.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The next major doesn't support iOS 11.x unfortunately.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I see what you were saying! Yeah this is wrong thanks.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh damn sorry I forgot to update this.
Either way Nimble 10.x only has a single release: 10.0.0.

@NachoSoto NachoSoto merged commit 627995c into main Jan 17, 2023
@NachoSoto NachoSoto deleted the receipt-parser-tests branch January 17, 2023 13:52
NachoSoto pushed a commit that referenced this pull request Jan 17, 2023
**This is an automatic release.**

### New Features
* Added new `ReceiptParser.fetchAndParseLocalReceipt` (#2204) via
NachoSoto (@NachoSoto)
* `PurchasesReceiptParser`: added API to parse receipts from `base64`
string (#2200) via NachoSoto (@NachoSoto)
### Bugfixes
* `CustomerInfo`: support parsing schema version 2 to restore SDK `v3.x`
compatibility (#2213) via NachoSoto (@NachoSoto)
### Other Changes
* `JSONDecoder`: added decoding type when logging
`DecodingError.keyNotFound` (#2212) via NachoSoto (@NachoSoto)
* Added `ReceiptParserTests` (#2203) via NachoSoto (@NachoSoto)
* Deploy `PurchaseTester` for `macOS` (#2011) via NachoSoto (@NachoSoto)
* `ReceiptFetcher`: refactored implementation to log error when failing
to fetch receipt (#2202) via NachoSoto (@NachoSoto)
* `PostReceiptDataOperation`: replaced receipt `base64` with `hash` for
cache key (#2199) via NachoSoto (@NachoSoto)
* `PurchaseTester`: small refactor to simplify `Date` formatting (#2210)
via NachoSoto (@NachoSoto)
* `PurchasesReceiptParser`: improved documentation to reference
`default` (#2197) via NachoSoto (@NachoSoto)
* Created `CachingTrialOrIntroPriceEligibilityChecker` (#2007) via
NachoSoto (@NachoSoto)
* Update Gemfile.lock (#2205) via Cesar de la Vega (@vegaro)
* remove stalebot in favor of SLAs in Zendesk (#2196) via Andy Boedo
(@aboedo)
* Update fastlane-plugin-revenuecat_internal to latest version (#2194)
via Cesar de la Vega (@vegaro)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants