-
Notifications
You must be signed in to change notification settings - Fork 0
/
TomsIssueTest.cfc
80 lines (70 loc) · 2.57 KB
/
TomsIssueTest.cfc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
component extends=testbox.system.BaseSpec {
function run() {
describe("Testing Tom's function", () => {
it("fulfils the requirement of the puzzle", () => {
input = {
"payment_method_types" = ["card"],
"line_items" = [
{
"price_data" = {
"product_data" = {
"name" = "Something"
},
"currency" = "gbp",
"unit_amount" = 123
},
"quantity" = 1
}
]
}
expected = {
"payment_method_types[0]" = "card",
"line_items[0][price_data][product_data][name]" = "Something",
"line_items[0][price_data][currency]" = "gbp",
"line_items[0][price_data][unit_amount]" = 123,
"line_items[0][quantity]" = 1
}
actual = flattenStruct(input)
expect(actual).toBe(expected)
})
it("handles top-level key/values with simple values", () => {
input = {
"one" = "tahi",
"two" = {"second" = "rua"},
"three" = {
"third" = {"thrice" = "toru"}
}
}
expected = {
"[one]" = "tahi"
}
actual = flattenStruct(input)
expect(actual).toBe(expected)
})
it("handles multiple top-level key/values with simple values", () => {
input = {
"one" = "tahi",
"first" = "tuatahi",
"two" = {"second" = "rua"},
"three" = {
"third" = {"thrice" = "toru"}
}
}
expected = {
"[one]" = "tahi",
"[first]" = "tuatahi"
}
actual = flattenStruct(input)
expect(actual).toBe(expected)
})
})
}
function flattenStruct(required struct struct) {
return struct.reduce((flattened, key, value) => {
if (isSimpleValue(value)) {
return flattened.append({"[#key#]" = value})
}
return flattened
}, {})
}
}