From e17bd4b8946010617f7c3d32b727bb79a3ed2237 Mon Sep 17 00:00:00 2001 From: Josh Heald Date: Wed, 22 Jan 2025 15:40:20 +0000 Subject: [PATCH 1/2] Update tests to parameterized SwiftTesting tests --- .../Extensions/VersionHelpersTests.swift | 88 +++++++++---------- 1 file changed, 43 insertions(+), 45 deletions(-) diff --git a/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift b/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift index 2bbddc63e26..ae6051d1dc4 100644 --- a/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift +++ b/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift @@ -1,52 +1,50 @@ -import XCTest +import Testing @testable import WooCommerce /// VersionHelpers Unit Tests /// -final class VersionHelpersTests: XCTestCase { - func test_compare_as_version() { - let tests = [ - VersionTestCase(foundVersion: "2.8", requiredMinimumVersion: "2", meetsMinimum: true), - VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "3", meetsMinimum: false), - VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2", meetsMinimum: true), - VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "3", meetsMinimum: true), - - VersionTestCase(foundVersion: "2.8", requiredMinimumVersion: "2.9", meetsMinimum: false), - VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "2.9", meetsMinimum: true), - VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2.9", meetsMinimum: true), - VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "2.9", meetsMinimum: true), - - VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "2.9.0", meetsMinimum: true), - - VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2.9.1", meetsMinimum: true), - VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "2.9.1", meetsMinimum: true), - - VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "2.9.1", meetsMinimum: true), - VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "3.3", meetsMinimum: true), - VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "3.3.1", meetsMinimum: false), - - VersionTestCase(foundVersion: "4.3.2RC1", requiredMinimumVersion: "4.3.2RC2", meetsMinimum: false), - VersionTestCase(foundVersion: "4.3.2RC2", requiredMinimumVersion: "4.3.2RC1", meetsMinimum: true), - - VersionTestCase(foundVersion: "1.0.0beta", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.1beta", requiredMinimumVersion: "1.0.0", meetsMinimum: true), - VersionTestCase(foundVersion: "1.0.0beta", requiredMinimumVersion: "1.0.0b", meetsMinimum: true), - - VersionTestCase(foundVersion: "1.0.0-dev", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-alpha", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-a", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-beta", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-b", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-RC1", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-rc1", requiredMinimumVersion: "1.0.0", meetsMinimum: false), - VersionTestCase(foundVersion: "1.0.0-pl", requiredMinimumVersion: "1.0.0", meetsMinimum: true), - VersionTestCase(foundVersion: "1.0.0-p1", requiredMinimumVersion: "1.0.0", meetsMinimum: true), - ] - - for test in tests { - let meetsMinimum = VersionHelpers.compare(test.foundVersion, test.requiredMinimumVersion) != .orderedAscending - XCTAssertEqual(test.meetsMinimum, meetsMinimum) - } +struct VersionHelpersTests { + @Test("Version comparisons match PHP behaviour", arguments: [ + VersionTestCase(foundVersion: "2.8", requiredMinimumVersion: "2", meetsMinimum: true), + VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "3", meetsMinimum: false), + VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2", meetsMinimum: true), + VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "3", meetsMinimum: true), + + VersionTestCase(foundVersion: "2.8", requiredMinimumVersion: "2.9", meetsMinimum: false), + VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "2.9", meetsMinimum: true), + VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2.9", meetsMinimum: true), + VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "2.9", meetsMinimum: true), + + VersionTestCase(foundVersion: "2.9", requiredMinimumVersion: "2.9.0", meetsMinimum: true), + + VersionTestCase(foundVersion: "2.9.1", requiredMinimumVersion: "2.9.1", meetsMinimum: true), + VersionTestCase(foundVersion: "3.0", requiredMinimumVersion: "2.9.1", meetsMinimum: true), + + VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "2.9.1", meetsMinimum: true), + VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "3.3", meetsMinimum: true), + VersionTestCase(foundVersion: "3.3.1-test-1", requiredMinimumVersion: "3.3.1", meetsMinimum: false), + + VersionTestCase(foundVersion: "4.3.2RC1", requiredMinimumVersion: "4.3.2RC2", meetsMinimum: false), + VersionTestCase(foundVersion: "4.3.2RC2", requiredMinimumVersion: "4.3.2RC1", meetsMinimum: true), + + VersionTestCase(foundVersion: "1.0.0beta", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.1beta", requiredMinimumVersion: "1.0.0", meetsMinimum: true), + VersionTestCase(foundVersion: "1.0.0beta", requiredMinimumVersion: "1.0.0b", meetsMinimum: true), + + VersionTestCase(foundVersion: "1.0.0-dev", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-alpha", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-a", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-beta", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-b", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-RC1", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-rc1", requiredMinimumVersion: "1.0.0", meetsMinimum: false), + VersionTestCase(foundVersion: "1.0.0-pl", requiredMinimumVersion: "1.0.0", meetsMinimum: true), + VersionTestCase(foundVersion: "1.0.0-p1", requiredMinimumVersion: "1.0.0", meetsMinimum: true), + ]) + func compareAsVersion(testCase: VersionTestCase) { + let meetsMinimum = VersionHelpers.compare(testCase.foundVersion, testCase.requiredMinimumVersion) != .orderedAscending + #expect(testCase.meetsMinimum == meetsMinimum, + "\(testCase.foundVersion) should \(testCase.meetsMinimum ? "not " : "" )meet minimum \(testCase.requiredMinimumVersion)") } struct VersionTestCase { From 3185c7f94f5173ec26d4a029cd31702d685130e0 Mon Sep 17 00:00:00 2001 From: Josh Heald Date: Wed, 22 Jan 2025 15:52:05 +0000 Subject: [PATCH 2/2] Add tests for different rc builds --- .../WooCommerceTests/Extensions/VersionHelpersTests.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift b/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift index ae6051d1dc4..93f2116cb96 100644 --- a/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift +++ b/WooCommerce/WooCommerceTests/Extensions/VersionHelpersTests.swift @@ -40,6 +40,10 @@ struct VersionHelpersTests { VersionTestCase(foundVersion: "1.0.0-rc1", requiredMinimumVersion: "1.0.0", meetsMinimum: false), VersionTestCase(foundVersion: "1.0.0-pl", requiredMinimumVersion: "1.0.0", meetsMinimum: true), VersionTestCase(foundVersion: "1.0.0-p1", requiredMinimumVersion: "1.0.0", meetsMinimum: true), + + VersionTestCase(foundVersion: "9.6.0-rc.1", requiredMinimumVersion: "9.6.0-rc.2", meetsMinimum: false), + VersionTestCase(foundVersion: "9.6.0-rc.1", requiredMinimumVersion: "9.6.0-rc.1", meetsMinimum: true), + VersionTestCase(foundVersion: "9.6.0-rc.2", requiredMinimumVersion: "9.6.0-rc.1", meetsMinimum: true), ]) func compareAsVersion(testCase: VersionTestCase) { let meetsMinimum = VersionHelpers.compare(testCase.foundVersion, testCase.requiredMinimumVersion) != .orderedAscending