diff --git a/Mark-In-Tests/ValidationsTests/DTOFieldKeyMappingTests.swift b/Mark-In-Tests/ValidationsTests/DTOFieldKeyMappingTests.swift new file mode 100644 index 0000000..1535154 --- /dev/null +++ b/Mark-In-Tests/ValidationsTests/DTOFieldKeyMappingTests.swift @@ -0,0 +1,46 @@ +// +// Mark_In_Tests.swift +// Mark-In-Tests +// +// Created by 이정동 on 6/4/25. +// + +import Testing +import TestSupport + +@testable import Mark_In + +struct DTOFieldKeyMappingTests: BaseTestCase { + + @Test + func test_FolderDTO의_CodingKey와_FirestoreFieldKey가_일치해야_한다() async throws { + given { } + + when { } + + then { + #expect(FolderDTO.CodingKeys.id.rawValue == FirestoreFieldKey.Folder.id) + #expect(FolderDTO.CodingKeys.name.rawValue == FirestoreFieldKey.Folder.name) + #expect(FolderDTO.CodingKeys.createdAt.rawValue == FirestoreFieldKey.Folder.createdAt) + } + } + + @Test + func test_WebLinkDTO의_CodingKey와_FirestoreFieldKey가_일치해야_한다() async throws { + given { } + + when { } + + then { + #expect(WebLinkDTO.CodingKeys.id.rawValue == FirestoreFieldKey.Link.id) + #expect(WebLinkDTO.CodingKeys.url.rawValue == FirestoreFieldKey.Link.url) + #expect(WebLinkDTO.CodingKeys.title.rawValue == FirestoreFieldKey.Link.title) + #expect(WebLinkDTO.CodingKeys.thumbnailUrl.rawValue == FirestoreFieldKey.Link.thumbnailUrl) + #expect(WebLinkDTO.CodingKeys.faviconUrl.rawValue == FirestoreFieldKey.Link.faviconUrl) + #expect(WebLinkDTO.CodingKeys.isPinned.rawValue == FirestoreFieldKey.Link.isPinned) + #expect(WebLinkDTO.CodingKeys.createdAt.rawValue == FirestoreFieldKey.Link.createdAt) + #expect(WebLinkDTO.CodingKeys.lastAccessedAt.rawValue == FirestoreFieldKey.Link.lastAccessedAt) + #expect(WebLinkDTO.CodingKeys.folderID.rawValue == FirestoreFieldKey.Link.folderID) + } + } +} diff --git a/Mark-In.xcodeproj/project.pbxproj b/Mark-In.xcodeproj/project.pbxproj index f074719..ed612ee 100644 --- a/Mark-In.xcodeproj/project.pbxproj +++ b/Mark-In.xcodeproj/project.pbxproj @@ -17,6 +17,8 @@ 57664F242DEEB2A100CA8D68 /* LinkMetadataKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 57664F1C2DEDCDCB00CA8D68 /* LinkMetadataKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 57664F252DEEB2A100CA8D68 /* LinkMetadataKitInterface.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57664F1E2DEDCDCB00CA8D68 /* LinkMetadataKitInterface.framework */; }; 57664F262DEEB2A100CA8D68 /* LinkMetadataKitInterface.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 57664F1E2DEDCDCB00CA8D68 /* LinkMetadataKitInterface.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 57664FE42DF2C0B900CA8D68 /* TestSupport.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57664FB62DF2BF5900CA8D68 /* TestSupport.framework */; }; + 57664FE52DF2C0B900CA8D68 /* TestSupport.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 57664FB62DF2BF5900CA8D68 /* TestSupport.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 57944D0C2DC52AEF00EF3D9A /* GoogleSignIn in Frameworks */ = {isa = PBXBuildFile; productRef = 57944D0B2DC52AEF00EF3D9A /* GoogleSignIn */; }; 57AC56A82DA5120600BA84BD /* Util.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 57AC56732DA511E900BA84BD /* Util.framework */; }; 57AC56A92DA5120600BA84BD /* Util.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 57AC56732DA511E900BA84BD /* Util.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; @@ -62,6 +64,20 @@ remoteGlobalIDString = 57AC54A62DA503DE00BA84BD; remoteInfo = LinkMetadataKitInterface; }; + 57664F6C2DF03A9000CA8D68 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57BFD8BB2DA4E19600648AD4 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 57BFD8C22DA4E19600648AD4; + remoteInfo = "Mark-In"; + }; + 57664FB52DF2BF5900CA8D68 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 57664FB12DF2BF5900CA8D68 /* TestSupport.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 57664FA72DF2BF5800CA8D68; + remoteInfo = TestSupport; + }; 57AC56722DA511E900BA84BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 57AC53092DA4FC1800BA84BD /* Util.xcodeproj */; @@ -72,6 +88,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + 57664FE62DF2C0B900CA8D68 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 57664FE52DF2C0B900CA8D68 /* TestSupport.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; 57AC55452DA507EC00BA84BD /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; @@ -93,6 +120,8 @@ /* Begin PBXFileReference section */ 57588CE42DD9B4D500DBD9A7 /* AppDI.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = AppDI.xcodeproj; path = AppDI/AppDI.xcodeproj; sourceTree = ""; }; 57606D652DD63B14005EBE3D /* ReducerKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = ReducerKit.xcodeproj; path = ReducerKit/ReducerKit.xcodeproj; sourceTree = ""; }; + 57664F682DF03A9000CA8D68 /* Mark-In-Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Mark-In-Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 57664FB12DF2BF5900CA8D68 /* TestSupport.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = TestSupport.xcodeproj; path = TestSupport/TestSupport.xcodeproj; sourceTree = ""; }; 57AC52EF2DA4FBC900BA84BD /* DesignSystem.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = DesignSystem.xcodeproj; path = DesignSystem/DesignSystem.xcodeproj; sourceTree = ""; }; 57AC53092DA4FC1800BA84BD /* Util.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Util.xcodeproj; path = Util/Util.xcodeproj; sourceTree = ""; }; 57AC53232DA4FC4900BA84BD /* LinkMetadataKit.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = LinkMetadataKit.xcodeproj; path = LinkMetadataKit/LinkMetadataKit.xcodeproj; sourceTree = ""; }; @@ -112,6 +141,11 @@ /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ + 57664F692DF03A9000CA8D68 /* Mark-In-Tests */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = "Mark-In-Tests"; + sourceTree = ""; + }; 57BFD8C52DA4E19600648AD4 /* Mark-In */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( @@ -123,6 +157,14 @@ /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ + 57664F652DF03A9000CA8D68 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 57664FE42DF2C0B900CA8D68 /* TestSupport.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57BFD8C02DA4E19600648AD4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -160,6 +202,14 @@ name = Products; sourceTree = ""; }; + 57664FB22DF2BF5900CA8D68 /* Products */ = { + isa = PBXGroup; + children = ( + 57664FB62DF2BF5900CA8D68 /* TestSupport.framework */, + ); + name = Products; + sourceTree = ""; + }; 57985FAB2DDDC2CD00A383F2 /* Products */ = { isa = PBXGroup; children = ( @@ -198,6 +248,7 @@ 57AC56602DA511AF00BA84BD /* Shared */ = { isa = PBXGroup; children = ( + 57664FB12DF2BF5900CA8D68 /* TestSupport.xcodeproj */, 57AC53092DA4FC1800BA84BD /* Util.xcodeproj */, ); path = Shared; @@ -217,6 +268,7 @@ 57AC56602DA511AF00BA84BD /* Shared */, 57AC565F2DA511A900BA84BD /* Core */, 57BFD8C52DA4E19600648AD4 /* Mark-In */, + 57664F692DF03A9000CA8D68 /* Mark-In-Tests */, 57AC55422DA507EC00BA84BD /* Frameworks */, 57BFD8C42DA4E19600648AD4 /* Products */, ); @@ -228,6 +280,7 @@ isa = PBXGroup; children = ( 57BFD8C32DA4E19600648AD4 /* Mark-In.app */, + 57664F682DF03A9000CA8D68 /* Mark-In-Tests.xctest */, ); name = Products; sourceTree = ""; @@ -235,6 +288,30 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 57664F672DF03A9000CA8D68 /* Mark-In-Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 57664F6E2DF03A9000CA8D68 /* Build configuration list for PBXNativeTarget "Mark-In-Tests" */; + buildPhases = ( + 57664F642DF03A9000CA8D68 /* Sources */, + 57664F652DF03A9000CA8D68 /* Frameworks */, + 57664F662DF03A9000CA8D68 /* Resources */, + 57664FE62DF2C0B900CA8D68 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 57664F6D2DF03A9000CA8D68 /* PBXTargetDependency */, + ); + fileSystemSynchronizedGroups = ( + 57664F692DF03A9000CA8D68 /* Mark-In-Tests */, + ); + name = "Mark-In-Tests"; + packageProductDependencies = ( + ); + productName = "Mark-In-Tests"; + productReference = 57664F682DF03A9000CA8D68 /* Mark-In-Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 57BFD8C22DA4E19600648AD4 /* Mark-In */ = { isa = PBXNativeTarget; buildConfigurationList = 57BFD8CF2DA4E19700648AD4 /* Build configuration list for PBXNativeTarget "Mark-In" */; @@ -270,9 +347,13 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1630; + LastSwiftUpdateCheck = 1640; LastUpgradeCheck = 1640; TargetAttributes = { + 57664F672DF03A9000CA8D68 = { + CreatedOnToolsVersion = 16.4; + TestTargetID = 57BFD8C22DA4E19600648AD4; + }; 57BFD8C22DA4E19600648AD4 = { CreatedOnToolsVersion = 16.3; }; @@ -311,6 +392,10 @@ ProductGroup = 57588A542DD63B5900DBD9A7 /* Products */; ProjectRef = 57606D652DD63B14005EBE3D /* ReducerKit.xcodeproj */; }, + { + ProductGroup = 57664FB22DF2BF5900CA8D68 /* Products */; + ProjectRef = 57664FB12DF2BF5900CA8D68 /* TestSupport.xcodeproj */; + }, { ProductGroup = 57AC566F2DA511E900BA84BD /* Products */; ProjectRef = 57AC53092DA4FC1800BA84BD /* Util.xcodeproj */; @@ -319,6 +404,7 @@ projectRoot = ""; targets = ( 57BFD8C22DA4E19600648AD4 /* Mark-In */, + 57664F672DF03A9000CA8D68 /* Mark-In-Tests */, ); }; /* End PBXProject section */ @@ -359,6 +445,13 @@ remoteRef = 57664F1D2DEDCDCB00CA8D68 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; + 57664FB62DF2BF5900CA8D68 /* TestSupport.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = TestSupport.framework; + remoteRef = 57664FB52DF2BF5900CA8D68 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; 57AC56732DA511E900BA84BD /* Util.framework */ = { isa = PBXReferenceProxy; fileType = wrapper.framework; @@ -369,6 +462,13 @@ /* End PBXReferenceProxy section */ /* Begin PBXResourcesBuildPhase section */ + 57664F662DF03A9000CA8D68 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57BFD8C12DA4E19600648AD4 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -379,6 +479,13 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 57664F642DF03A9000CA8D68 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 57BFD8BF2DA4E19600648AD4 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -388,7 +495,61 @@ }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 57664F6D2DF03A9000CA8D68 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 57BFD8C22DA4E19600648AD4 /* Mark-In */; + targetProxy = 57664F6C2DF03A9000CA8D68 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin XCBuildConfiguration section */ + 57664F6F2DF03A9000CA8D68 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 5DFZR8RCQR; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + MACOSX_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "kr.co.ios.swift.apple.Mark-In-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,7"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mark-In.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Mark-In"; + XROS_DEPLOYMENT_TARGET = 2.5; + }; + name = Debug; + }; + 57664F702DF03A9000CA8D68 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = 5DFZR8RCQR; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + MACOSX_DEPLOYMENT_TARGET = 15.5; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = "kr.co.ios.swift.apple.Mark-In-Tests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = auto; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator macosx xros xrsimulator"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2,7"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Mark-In.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Mark-In"; + XROS_DEPLOYMENT_TARGET = 2.5; + }; + name = Release; + }; 57BFD8CD2DA4E19700648AD4 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReferenceAnchor = 57BFD8C52DA4E19600648AD4 /* Mark-In */; @@ -598,6 +759,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 57664F6E2DF03A9000CA8D68 /* Build configuration list for PBXNativeTarget "Mark-In-Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 57664F6F2DF03A9000CA8D68 /* Debug */, + 57664F702DF03A9000CA8D68 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 57BFD8BE2DA4E19600648AD4 /* Build configuration list for PBXProject "Mark-In" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/Mark-In.xcodeproj/xcshareddata/xcschemes/Mark-In.xcscheme b/Mark-In.xcodeproj/xcshareddata/xcschemes/Mark-In.xcscheme index 2c6fc41..9f3ff0c 100644 --- a/Mark-In.xcodeproj/xcshareddata/xcschemes/Mark-In.xcscheme +++ b/Mark-In.xcodeproj/xcshareddata/xcschemes/Mark-In.xcscheme @@ -29,6 +29,19 @@ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES" shouldAutocreateTestPlan = "YES"> + + + + + + + + + + + + Void) + + /// 발생해야 할 이벤트, 또는 메소드 호출등을 실행시킵니다 + func when(_ task: () -> Void) + + /// 결과 값이 기대와 같은지 확인합니다 + func then(_ task: () -> Void) +} + +public extension BaseTestCase { + + func given(_ task: () -> Void) { + task() + } + + func when(_ task: () -> Void) { + task() + } + + func then(_ task: () -> Void) { + task() + } +}