|
1 |
| -import SwiftSyntax |
2 |
| -import SwiftSyntaxBuilder |
3 |
| -import SwiftSyntaxMacros |
4 |
| -import SwiftSyntaxMacrosTestSupport |
5 |
| -import XCTest |
6 |
| - |
7 |
| -// Macro implementations build for the host, so the corresponding module is not available when cross-compiling. Cross-compiled tests may still make use of the macro itself in end-to-end tests. |
8 |
| -#if canImport(ComposableArchitecturePatternMacros) |
9 |
| -import ComposableArchitecturePatternMacros |
| 1 | +// |
| 2 | +// ComposableArchitecturePatternTests.swift |
| 3 | +// ComposableArchitecturePattern |
| 4 | +// |
| 5 | +// Created by Jonathan Holland on 12/8/24. |
| 6 | +// |
10 | 7 |
|
11 |
| -let testMacros: [String: Macro.Type] = [ |
12 |
| - "stringify": StringifyMacro.self, |
13 |
| -] |
14 |
| -#endif |
| 8 | +import XCTest |
| 9 | +@testable import ComposableArchitecturePattern |
15 | 10 |
|
16 | 11 | final class ComposableArchitecturePatternTests: XCTestCase {
|
17 |
| - func testMacro() throws { |
18 |
| - #if canImport(ComposableArchitecturePatternMacros) |
19 |
| - assertMacroExpansion( |
20 |
| - """ |
21 |
| - #stringify(a + b) |
22 |
| - """, |
23 |
| - expandedSource: """ |
24 |
| - (a + b, "a + b") |
25 |
| - """, |
26 |
| - macros: testMacros |
27 |
| - ) |
28 |
| - #else |
29 |
| - throw XCTSkip("macros are only supported when running tests for the host platform") |
30 |
| - #endif |
31 |
| - } |
32 |
| - |
33 |
| - func testMacroWithStringLiteral() throws { |
34 |
| - #if canImport(ComposableArchitecturePatternMacros) |
35 |
| - assertMacroExpansion( |
36 |
| - #""" |
37 |
| - #stringify("Hello, \(name)") |
38 |
| - """#, |
39 |
| - expandedSource: #""" |
40 |
| - ("Hello, \(name)", #""Hello, \(name)""#) |
41 |
| - """#, |
42 |
| - macros: testMacros |
43 |
| - ) |
44 |
| - #else |
45 |
| - throw XCTSkip("macros are only supported when running tests for the host platform") |
46 |
| - #endif |
47 |
| - } |
| 12 | + func testMockCourierGetsJSON() async throws { |
| 13 | + let api1 = MockServerAPI1() |
| 14 | + XCTAssertNotNil(api1.environment?.url) |
| 15 | + |
| 16 | + let sut = MockCourier() |
| 17 | + let dataFromRequest1 = try await sut.sendRequest(try api1.request(.GET), requestUID: .init()) |
| 18 | + XCTAssertNotNil(dataFromRequest1) |
| 19 | + |
| 20 | + let api2 = MockServerAPI2() |
| 21 | + XCTAssertNotNil(api2.environment?.url) |
| 22 | + let dataFromRequest2 = try await sut.sendRequest(try api2.request(.GET), requestUID: .init()) |
| 23 | + XCTAssertNotNil(dataFromRequest2) |
| 24 | + } |
| 25 | + |
| 26 | + func testServerFunctionality() async throws { |
| 27 | + let sut = MockServer1() |
| 28 | + let apis = await sut.apis |
| 29 | + XCTAssertTrue(apis.count == 1) |
| 30 | + |
| 31 | + let sutAPIs = await sut.apis |
| 32 | + let sutEnvironment = await sut.currentEnvironment |
| 33 | + XCTAssertTrue(sutAPIs.contains(where: { $0.environment == sutEnvironment })) |
| 34 | + } |
| 35 | + |
| 36 | + func testServerAPIReturnObjectsSupport() async throws { |
| 37 | + let sut1 = MockServerAPI1() |
| 38 | + XCTAssertTrue(sut1.supports(MockResponse1.self)) |
| 39 | + |
| 40 | + let sut2 = MockServerAPI2() |
| 41 | + XCTAssertTrue(sut2.supports(MockResponse2.self)) |
| 42 | + } |
48 | 43 | }
|
0 commit comments