Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
32 changes: 19 additions & 13 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,18 +34,18 @@ 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.interfaceImports = ["<interfaceImport>"]
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.interfaceImports = .mock(with: "interfaceImport", 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,79 +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: 3 elements
- "<baseImport>"
- "<interfaceImport>"
- 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,119 @@
▿ 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: 3 elements
- "<baseImport>"
- "<interfaceImport>"
- "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