Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions Tests/NodesGeneratorTests/StencilRendererTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@ import XCTest

final class StencilRendererTests: XCTestCase, TestFactories {

private let mockCounts: ClosedRange<Int> = 0...2

func testRenderNode() throws {
let stencilRenderer: StencilRenderer = .init()
try mockCounts.forEach { count in
Expand Down
30 changes: 18 additions & 12 deletions Tests/NodesGeneratorTests/Support/TestFactories.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@ extension TestFactories {

private typealias Variable = Config.Variable

internal func givenConfig() -> Config {
internal var mockCounts: ClosedRange<Int> {
0...2
}

internal func givenConfig(
mockCount: Int = 1
) -> Config {
var config: Config = .init()
config.uiFrameworks = [
UIFramework(framework: .appKit),
Expand All @@ -28,17 +34,17 @@ extension TestFactories {
viewControllerSuperParameters: "<viewControllerSuperParameters>",
viewControllerMethods: "<viewControllerMethods>"))
]
config.baseImports = ["<baseImport>"]
config.baseTestImports = ["<baseTestImport>"]
config.reactiveImports = ["<reactiveImport>"]
config.dependencyInjectionImports = ["<dependencyInjectionImport>"]
config.builderImports = ["<builderImport>"]
config.flowImports = ["<flowImport>"]
config.pluginListImports = ["<pluginListImport>"]
config.viewControllerImports = ["<viewControllerImport>"]
config.dependencies = [Variable(name: "<dependencyName>", type: "<dependencyType>")]
config.analyticsProperties = [Variable(name: "<analyticsPropertyName>", type: "<analyticsPropertyType>")]
config.flowProperties = [Variable(name: "<flowPropertyName>", type: "<flowPropertyType>")]
config.baseImports = .mock(with: "baseImport", count: mockCount)
config.baseTestImports = .mock(with: "baseTestImport", count: mockCount)
config.reactiveImports = .mock(with: "reactiveImport", count: mockCount)
config.dependencyInjectionImports = .mock(with: "dependencyInjectionImport", count: mockCount)
config.builderImports = .mock(with: "builderImport", count: mockCount)
config.flowImports = .mock(with: "flowImport", count: mockCount)
config.pluginListImports = .mock(with: "pluginListImport", count: mockCount)
config.viewControllerImports = .mock(with: "viewControllerImport", count: mockCount)
config.dependencies = .mock(with: "dependency", count: mockCount)
config.analyticsProperties = .mock(with: "analyticsProperty", count: mockCount)
config.flowProperties = .mock(with: "flowProperty", count: mockCount)
config.viewControllableFlowType = "<viewControllableFlowType>"
config.viewControllableType = "<viewControllableType>"
config.viewControllableMockContents = "<viewControllableMockContents>"
Expand Down
32 changes: 21 additions & 11 deletions Tests/NodesGeneratorTests/XcodeTemplateTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,38 @@ import XCTest
final class XcodeTemplateTests: XCTestCase, TestFactories {

func testNodeXcodeTemplate() throws {
let config: Config = givenConfig()
assertSnapshot(of: NodeXcodeTemplate(uiFrameworks: config.uiFrameworks, config: config),
as: .dump)
mockCounts.forEach { count in
let config: Config = givenConfig(mockCount: count)
assertSnapshot(of: NodeXcodeTemplate(uiFrameworks: config.uiFrameworks, config: config),
as: .dump)
}
}

func testNodeViewInjectedXcodeTemplate() {
assertSnapshot(of: NodeViewInjectedXcodeTemplate(config: givenConfig()),
as: .dump)
mockCounts.forEach { count in
assertSnapshot(of: NodeViewInjectedXcodeTemplate(config: givenConfig(mockCount: count)),
as: .dump)
}
}

func testPluginListXcodeTemplate() {
assertSnapshot(of: PluginListXcodeTemplate(config: givenConfig()),
as: .dump)
mockCounts.forEach { count in
assertSnapshot(of: PluginListXcodeTemplate(config: givenConfig(mockCount: count)),
as: .dump)
}
}

func testPluginXcodeTemplate() {
assertSnapshot(of: PluginXcodeTemplate(config: givenConfig()),
as: .dump)
mockCounts.forEach { count in
assertSnapshot(of: PluginXcodeTemplate(config: givenConfig(mockCount: count)),
as: .dump)
}
}

func testWorkerXcodeTemplate() {
assertSnapshot(of: WorkerXcodeTemplate(config: givenConfig()),
as: .dump)
mockCounts.forEach { count in
assertSnapshot(of: WorkerXcodeTemplate(config: givenConfig(mockCount: count)),
as: .dump)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,78 +4,38 @@
▿ NodeViewInjectedXcodeTemplatePermutation
- name: "View Injected"
▿ stencilContext: NodeViewInjectedStencilContext
▿ analyticsImports: 1 element
- "<baseImport>"
▿ analyticsProperties: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<analyticsPropertyName>"
▿ (2 elements)
- key: "type"
- value: "<analyticsPropertyType>"
▿ analyticsTestsImports: 1 element
- "<baseTestImport>"
▿ builderImports: 5 elements
- "<baseImport>"
- "<builderImport>"
- "<dependencyInjectionImport>"
- "<reactiveImport>"
- analyticsImports: 0 elements
- analyticsProperties: 0 elements
- analyticsTestsImports: 0 elements
▿ builderImports: 1 element
- "Nodes"
▿ builderTestsImports: 2 elements
- "<baseTestImport>"
▿ builderTestsImports: 1 element
- "NodesTesting"
- componentDependencies: ""
▿ contextGenericTypes: 1 element
- "<contextGenericType>"
▿ contextImports: 3 elements
- "<baseImport>"
- "<reactiveImport>"
▿ contextImports: 1 element
- "Nodes"
▿ contextTestsImports: 2 elements
- "<baseTestImport>"
▿ contextTestsImports: 1 element
- "Nodes"
▿ dependencies: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<dependencyName>"
▿ (2 elements)
- key: "type"
- value: "<dependencyType>"
- dependencies: 0 elements
- fileHeader: "___FILEHEADER___"
▿ flowImports: 3 elements
- "<baseImport>"
- "<flowImport>"
▿ flowImports: 1 element
- "Nodes"
▿ flowProperties: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<flowPropertyName>"
▿ (2 elements)
- key: "type"
- value: "<flowPropertyType>"
▿ flowTestsImports: 1 element
- "<baseTestImport>"
▿ interfaceImports: 2 elements
- "<baseImport>"
- flowProperties: 0 elements
- flowTestsImports: 0 elements
▿ interfaceImports: 1 element
- "Nodes"
- isNimbleEnabled: false
- isPeripheryCommentEnabled: true
- nodeName: "___VARIABLE_productName___"
▿ pluginImports: 3 elements
- "<baseImport>"
- "<dependencyInjectionImport>"
▿ pluginImports: 1 element
- "Nodes"
▿ pluginInterfaceImports: 1 element
- "<baseImport>"
- pluginInterfaceImports: 0 elements
- pluginName: "___VARIABLE_productName___"
▿ pluginTestsImports: 2 elements
- "<baseTestImport>"
▿ pluginTestsImports: 1 element
- "NodesTesting"
▿ stateImports: 1 element
- "<baseImport>"
- stateImports: 0 elements
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
▿ NodeViewInjectedXcodeTemplate
- name: "View Injected"
▿ permutations: 1 element
▿ NodeViewInjectedXcodeTemplatePermutation
- name: "View Injected"
▿ stencilContext: NodeViewInjectedStencilContext
▿ analyticsImports: 1 element
- "<baseImport>"
▿ analyticsProperties: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<analyticsPropertyName>"
▿ (2 elements)
- key: "type"
- value: "<analyticsPropertyType>"
▿ analyticsTestsImports: 1 element
- "<baseTestImport>"
▿ builderImports: 5 elements
- "<baseImport>"
- "<builderImport>"
- "<dependencyInjectionImport>"
- "<reactiveImport>"
- "Nodes"
▿ builderTestsImports: 2 elements
- "<baseTestImport>"
- "NodesTesting"
- componentDependencies: ""
▿ contextGenericTypes: 1 element
- "<contextGenericType>"
▿ contextImports: 3 elements
- "<baseImport>"
- "<reactiveImport>"
- "Nodes"
▿ contextTestsImports: 2 elements
- "<baseTestImport>"
- "Nodes"
▿ dependencies: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<dependencyName>"
▿ (2 elements)
- key: "type"
- value: "<dependencyType>"
- fileHeader: "___FILEHEADER___"
▿ flowImports: 3 elements
- "<baseImport>"
- "<flowImport>"
- "Nodes"
▿ flowProperties: 1 element
▿ 2 key/value pairs
▿ (2 elements)
- key: "name"
- value: "<flowPropertyName>"
▿ (2 elements)
- key: "type"
- value: "<flowPropertyType>"
▿ flowTestsImports: 1 element
- "<baseTestImport>"
▿ interfaceImports: 2 elements
- "<baseImport>"
- "Nodes"
- isNimbleEnabled: false
- isPeripheryCommentEnabled: true
- nodeName: "___VARIABLE_productName___"
▿ pluginImports: 3 elements
- "<baseImport>"
- "<dependencyInjectionImport>"
- "Nodes"
▿ pluginInterfaceImports: 1 element
- "<baseImport>"
- pluginName: "___VARIABLE_productName___"
▿ pluginTestsImports: 2 elements
- "<baseTestImport>"
- "NodesTesting"
▿ stateImports: 1 element
- "<baseImport>"
- viewControllableFlowType: "<viewControllableFlowType>"
- viewControllableMockContents: "<viewControllableMockContents>"
- viewControllableType: "<viewControllableType>"
▿ workerGenericTypes: 1 element
- "<workerGenericType>"
▿ stencils: 13 elements
- Analytics
▿ Builder
- builder: Variation.regular
- Context
- Flow
▿ Interface
- interface: Variation.regular
- State
- Plugin
- PluginInterface
- AnalyticsTests
- BuilderTests
- ContextTests
- FlowTests
- PluginTests
▿ propertyList: XcodeTemplatePropertyList
▿ allowedTypes: 1 element
- "public.swift-source"
- kind: "Xcode.IDEFoundation.TextSubstitutionFileTemplateKind"
- mainTemplateFile: "___FILEBASENAME___.swift"
▿ options: 1 element
▿ Option
- default: Optional<String>.none
- description: "The name of the node."
- identifier: "productName"
- name: "Node Name:"
- notPersisted: true
- required: true
- requiredOptions: 0 key/value pairs
- type: "text"
- values: 0 elements
- platforms: 0 elements
- sortOrder: 2
- supportsSwiftPackage: true
Loading