diff options
| author | Bug Magnet <marco.nikic@mullvad.net> | 2024-04-12 10:27:31 +0200 |
|---|---|---|
| committer | Bug Magnet <marco.nikic@mullvad.net> | 2024-04-12 10:27:31 +0200 |
| commit | c4f3d510bd9db925e7143d847b0c0bf764fe3cdf (patch) | |
| tree | c13aace29691fa0ffa39015c399c001e8bd5ca1e | |
| parent | 51f272d1aae3346067711a61fcaf5112af8be41c (diff) | |
| parent | 4a89ddad7dc974bc11e9af91e15dedcfc3850120 (diff) | |
| download | mullvadvpn-c4f3d510bd9db925e7143d847b0c0bf764fe3cdf.tar.xz mullvadvpn-c4f3d510bd9db925e7143d847b0c0bf764fe3cdf.zip | |
Merge branch 'test-that-app-properly-displays-time-left-in-account-view-ios-433'
5 files changed, 43 insertions, 2 deletions
diff --git a/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift b/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift index 371412c975..cda791d042 100644 --- a/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift +++ b/ios/MullvadVPN/Classes/AccessbilityIdentifier.swift @@ -57,6 +57,7 @@ public enum AccessibilityIdentifier: String { case quantumResistantTunnelCell // Labels + case accountPagePaidUntilLabel case headerDeviceNameLabel case connectionStatusConnectedLabel case connectionStatusNotConnectedLabel diff --git a/ios/MullvadVPN/View controllers/Account/AccountExpiryRow.swift b/ios/MullvadVPN/View controllers/Account/AccountExpiryRow.swift index b87e7c33cf..00f0ebbedf 100644 --- a/ios/MullvadVPN/View controllers/Account/AccountExpiryRow.swift +++ b/ios/MullvadVPN/View controllers/Account/AccountExpiryRow.swift @@ -62,6 +62,7 @@ class AccountExpiryRow: UIView { valueLabel.translatesAutoresizingMaskIntoConstraints = false valueLabel.font = UIFont.systemFont(ofSize: 17) valueLabel.textColor = .white + valueLabel.accessibilityIdentifier = .accountPagePaidUntilLabel return valueLabel }() diff --git a/ios/MullvadVPNUITests/AccountTests.swift b/ios/MullvadVPNUITests/AccountTests.swift index b3b47dc858..f782353601 100644 --- a/ios/MullvadVPNUITests/AccountTests.swift +++ b/ios/MullvadVPNUITests/AccountTests.swift @@ -89,4 +89,16 @@ class AccountTests: LoggedOutUITestCase { XCTAssertEqual(try MullvadAPIWrapper().getDevices(newAccountNumber).count, 0) try MullvadAPIWrapper().deleteAccount(newAccountNumber) } + + func testTimeLeft() throws { + login(accountNumber: hasTimeAccountNumber) + + let accountExpiry = try MullvadAPIWrapper().getAccountExpiry(hasTimeAccountNumber) + + HeaderBar(app) + .tapAccountButton() + + AccountPage(app) + .verifyPaidUntil(accountExpiry) + } } diff --git a/ios/MullvadVPNUITests/Networking/MullvadAPIWrapper.swift b/ios/MullvadVPNUITests/Networking/MullvadAPIWrapper.swift index b3d7332ced..25439c987a 100644 --- a/ios/MullvadVPNUITests/Networking/MullvadAPIWrapper.swift +++ b/ios/MullvadVPNUITests/Networking/MullvadAPIWrapper.swift @@ -88,9 +88,11 @@ class MullvadAPIWrapper { } } - func getAccountExpiry(_ account: String) throws -> UInt64 { + func getAccountExpiry(_ account: String) throws -> Date { do { - return try mullvadAPI.getExpiry(forAccount: account) + let accountExpiryTimestamp = Double(try mullvadAPI.getExpiry(forAccount: account)) + let accountExpiryDate = Date(timeIntervalSince1970: accountExpiryTimestamp) + return accountExpiryDate } catch { throw MullvadAPIError.requestError } diff --git a/ios/MullvadVPNUITests/Pages/AccountPage.swift b/ios/MullvadVPNUITests/Pages/AccountPage.swift index 8ff5e935af..b076c09b99 100644 --- a/ios/MullvadVPNUITests/Pages/AccountPage.swift +++ b/ios/MullvadVPNUITests/Pages/AccountPage.swift @@ -41,4 +41,29 @@ class AccountPage: Page { app.buttons[AccessibilityIdentifier.deleteButton.rawValue].tap() return self } + + @discardableResult func verifyPaidUntil(_ date: Date) -> Self { + // Strip seconds from date, since the app don't display seconds + let calendar = Calendar.current + var components = calendar.dateComponents([.year, .month, .day, .hour, .minute], from: date) + components.second = 0 + guard let strippedDate = calendar.date(from: components) else { + XCTFail("Failed to remove seconds from date") + return self + } + + let paidUntilLabelText = app.staticTexts[AccessibilityIdentifier.accountPagePaidUntilLabel].label + let dateFormatter = DateFormatter() + dateFormatter.dateStyle = .medium + dateFormatter.timeStyle = .short + + guard let paidUntilLabelDate = dateFormatter.date(from: paidUntilLabelText) else { + XCTFail("Failed to convert presented date to Date object") + return self + } + + XCTAssertEqual(strippedDate, paidUntilLabelDate) + + return self + } } |
