// // Copyright Amazon.com Inc. or its affiliates. // All Rights Reserved. // // SPDX-License-Identifier: Apache-2.0 // import XCTest @testable import AmplifyXcodeCore class CommandImportModelsTests: XCTestCase { let basePath = "/Test/Env/Project" var fileManager = MockAmplifyFileManager() var environment: MockAmplifyCommandEnvironment? var executor: CommandExecutable? static let modelsFilesCount = 3 struct TestCommandImportModels: CommandExecutable { var environment: AmplifyCommandEnvironment init(environment: AmplifyCommandEnvironment) { self.environment = environment } } class MockedCommandEnvironment: MockAmplifyCommandEnvironment { override func glob(pattern: String) -> [String] { _ = super.glob(pattern: pattern) return Array.init(repeating: "File.swift", count: modelsFilesCount) } } override func setUp() { environment = MockedCommandEnvironment(basePath: basePath, fileManager: MockAmplifyFileManager()) executor = TestCommandImportModels(environment: environment!) } func testImportModelsSuccessfulFlow() { let result = executor?.exec(command: CommandImportModels()) XCTAssertEqual(environment?.directoryExistsCalledTimes, 1) XCTAssertEqual(environment?.globCalledTimes, 1) XCTAssertEqual(environment?.createXcodeFileCalledTimes, CommandImportModelsTests.modelsFilesCount) XCTAssertEqual(environment?.addFilesToXcodeProjectCalledTimes, 1) if case let .failure(error) = result { XCTFail("CommandImportModels failed with \(error)") } } }