52 lines
1.3 KiB
Swift
52 lines
1.3 KiB
Swift
import Spectre
|
|
@testable import Stencil
|
|
import XCTest
|
|
|
|
final class NodeTests: XCTestCase {
|
|
private let context = Context(dictionary: [
|
|
"name": "Kyle",
|
|
"age": 27,
|
|
"items": [1, 2, 3]
|
|
])
|
|
|
|
func testTextNode() {
|
|
it("renders the given text") {
|
|
let node = TextNode(text: "Hello World")
|
|
try expect(try node.render(self.context)) == "Hello World"
|
|
}
|
|
}
|
|
|
|
func testVariableNode() {
|
|
it("resolves and renders the variable") {
|
|
let node = VariableNode(variable: Variable("name"))
|
|
try expect(try node.render(self.context)) == "Kyle"
|
|
}
|
|
|
|
it("resolves and renders a non string variable") {
|
|
let node = VariableNode(variable: Variable("age"))
|
|
try expect(try node.render(self.context)) == "27"
|
|
}
|
|
}
|
|
|
|
func testRendering() {
|
|
it("renders the nodes") {
|
|
let nodes: [NodeType] = [
|
|
TextNode(text: "Hello "),
|
|
VariableNode(variable: "name")
|
|
]
|
|
|
|
try expect(try renderNodes(nodes, self.context)) == "Hello Kyle"
|
|
}
|
|
|
|
it("correctly throws a nodes failure") {
|
|
let nodes: [NodeType] = [
|
|
TextNode(text: "Hello "),
|
|
VariableNode(variable: "name"),
|
|
ErrorNode()
|
|
]
|
|
|
|
try expect(try renderNodes(nodes, self.context)).toThrow(TemplateSyntaxError("Custom Error"))
|
|
}
|
|
}
|
|
}
|