swift-libs/Tests/Dependencies/Services/DependencyServiceTests.swift
Javier Cicchelli 9c89a59d1d [Feature] Dependencies (#3)
This PR contains the work done to provide a simple dependency injection feature whenever required.

To provide further details about this work:
- [x] renamed the `Coordinator` target in the `Package` file as `Coordination`;
- [x] declared the `Dependencies` target in the `Package` file;
- [x] defined the `DependencyKey` public protocol;
- [x] implemented the `DependencyService` public service;
- [x] implemented the `Dependency` public property wrapper;

Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Reviewed-on: #3
2023-04-16 15:36:07 +00:00

58 lines
1.3 KiB
Swift

//
// DependencyServiceTests.swift
// DependenciesTests
//
// Created by Javier Cicchelli on 11/04/2023.
// Copyright © 2023 Röck+Cöde. All rights reserved.
//
import Dependencies
import XCTest
final class DependencyServiceTests: XCTestCase {
// MARK: Setup
override func setUp() {
DependencyService[\.testService] = SomeService()
}
// MARK: Tests
func test_readDependencyKey() async throws {
// GIVEN
// WHEN
let service = DependencyService[\.testService]
// THEN
XCTAssertNotNil(service)
XCTAssert(service is SomeService)
}
func test_writeDependencyKey() async throws {
// GIVEN
DependencyService[\.testService] = SomeOtherService()
// WHEN
let service = DependencyService[\.testService]
// THEN
XCTAssertNotNil(service)
XCTAssert(service is SomeOtherService)
}
func test_writeDependencyKeyTwice() async throws {
// GIVEN
DependencyService[\.testService] = SomeOtherService()
DependencyService[\.testService] = SomeService()
// WHEN
let service = DependencyService[\.testService]
// THEN
XCTAssertNotNil(service)
XCTAssert(service is SomeService)
}
}