-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathUserViewModelSpecs.swift
99 lines (78 loc) · 3.06 KB
/
UserViewModelSpecs.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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
import XCTest
@testable import iOSProjectSetup
import Quick
import Nimble
import RxSwift
import RxCocoa
import RxBlocking
import RxTest
class UserViewModelSpecs: QuickSpec {
override func spec() {
var sut: UserViewModel!
var repository: UserRepositoryFake!
var scheduler: TestScheduler!
beforeEach {
scheduler = TestScheduler()
repository = UserRepositoryFake()
sut = UserPresentableViewModel(repository: repository)
}
describe("init") {
it("sets the default salutation") {
let expectedEvent = Event.record(element: String.empty)
let result = scheduler.record(source: sut.outputs.salutation)
expect(result.events) == expectedEvent
}
it("sets the default firstname") {
let expectedEvent = Event.record(element: String.empty)
let result = scheduler.record(source: sut.outputs.firstname)
expect(result.events) == expectedEvent
}
it("sets the default lastname") {
let expectedEvent = Event.record(element: String.empty)
let result = scheduler.record(source: sut.outputs.lastname)
expect(result.events) == expectedEvent
}
it("sets the default image") {
let image: UIImage? = nil
let expectedEvents = Event.record(element: image)
let result = scheduler.record(source: sut.outputs.image)
expect(result.events) == expectedEvents
}
}
describe("fetches User") {
it("sets updated salutation") {
let expectedEvents = Event.record(elements: [
String.empty,
User.fake().name.title
])
let result = scheduler.record(source: sut.outputs.salutation)
sut.inputs.fetch()
expect(result.events) == expectedEvents
}
it("sets updated firstname") {
let expectedEvents = Event.record(elements: [
String.empty,
User.fake().name.first
])
let result = scheduler.record(source: sut.outputs.firstname)
sut.inputs.fetch()
expect(result.events) == expectedEvents
}
it("sets updated lastname") {
let expectedEvents = Event.record(elements: [
String.empty,
User.fake().name.last
])
let result = scheduler.record(source: sut.outputs.lastname)
sut.inputs.fetch()
expect(result.events) == expectedEvents
}
it("sets updated image") {
let result = scheduler.record(source: sut.outputs.image)
sut.inputs.fetch()
expect(result.events.count) == 2
expect(result.events.last?.value.element).notTo(beNil())
}
}
}
}