forked from kickstarter/ios-oss
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathUpdateTests.swift
72 lines (64 loc) · 1.71 KB
/
UpdateTests.swift
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
import XCTest
@testable import KsApi
import Argo
import Prelude
final internal class UpdateTests: XCTestCase {
func testEquatable() {
XCTAssertEqual(Update.template, Update.template)
XCTAssertNotEqual(Update.template, Update.template |> Update.lens.id %~ { $0 + 1 })
}
func testJSONDecoding_WithBadData() {
let update = Update.decodeJSONDictionary([
"body": "world",
])
XCTAssertNotNil(update.error)
}
func testJSONDecoding_WithGoodData() {
let update = Update.decodeJSONDictionary([
"body": "world",
"id": 1,
"public": true,
"project_id": 2,
"sequence": 3,
"title": "hello",
"visible": true,
"urls": [
"web": [
"update": "https://www.kickstarter.com/projects/udoo/udoo-x86/posts/1571540"
]
]
])
XCTAssertNil(update.error)
XCTAssertEqual(1, update.value?.id)
}
func testJSONDecoding_WithNestedGoodData() {
let update = Update.decodeJSONDictionary([
"body": "world",
"id": 1,
"public": true,
"project_id": 2,
"sequence": 3,
"title": "hello",
"user": [
"id": 2,
"name": "User",
"avatar": [
"medium": "img.jpg",
"small": "img.jpg",
"large": "img.jpg",
]
],
"visible": true,
"urls": [
"web": [
"update": "https://www.kickstarter.com/projects/udoo/udoo-x86/posts/1571540"
]
]
])
XCTAssertNil(update.error)
XCTAssertEqual(1, update.value?.id)
XCTAssertEqual(2, update.value?.user?.id)
XCTAssertEqual("https://www.kickstarter.com/projects/udoo/udoo-x86/posts/1571540",
update.value?.urls.web.update)
}
}