Merge pull request #36 from AliSoftware/fix/if-node
Fix IfNode when using Array of arbitrary types
This commit is contained in:
@@ -230,7 +230,7 @@ public class IfNode : NodeType {
|
|||||||
let result = try variable.resolve(context)
|
let result = try variable.resolve(context)
|
||||||
var truthy = false
|
var truthy = false
|
||||||
|
|
||||||
if let result = result as? [AnyObject] {
|
if let result = result as? NSArray {
|
||||||
if result.count > 0 {
|
if result.count > 0 {
|
||||||
truthy = true
|
truthy = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -82,5 +82,19 @@ describe("IfNode") {
|
|||||||
let node = IfNode(variable: "unknown", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")])
|
let node = IfNode(variable: "unknown", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")])
|
||||||
try expect(try node.render(context)) == "false"
|
try expect(try node.render(context)) == "false"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$0.it("renders the truth when array expression is not empty") {
|
||||||
|
let items: Array<[String:AnyObject]> = [["key":"key1","value":42],["key":"key2","value":1337]]
|
||||||
|
let arrayContext = Context(dictionary: ["items": [items]])
|
||||||
|
let node = IfNode(variable: "items", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")])
|
||||||
|
try expect(try node.render(arrayContext)) == "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
$0.it("renders the false when array expression is empty") {
|
||||||
|
let emptyItems = Array<[String:AnyObject]>()
|
||||||
|
let arrayContext = Context(dictionary: ["items": emptyItems])
|
||||||
|
let node = IfNode(variable: "items", trueNodes: [TextNode(text: "true")], falseNodes: [TextNode(text: "false")])
|
||||||
|
try expect(try node.render(arrayContext)) == "false"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user