forked from pointfreeco/sqlite-data
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSyncUpFormTests.swift
More file actions
61 lines (55 loc) · 1.89 KB
/
SyncUpFormTests.swift
File metadata and controls
61 lines (55 loc) · 1.89 KB
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
import Dependencies
import DependenciesTestSupport
import Foundation
import StructuredQueries
import Testing
@testable import SyncUps
@MainActor
@Suite(
.dependencies {
try $0.bootstrapDatabase()
try await $0.defaultSyncEngine.start()
try await $0.defaultDatabase.seedForTests()
$0.uuid = .incrementing
}
)
struct SyncUpFormTests {
@Dependency(\.defaultDatabase) var database
@Test func saveNew() async throws {
let draft = SyncUp.Draft(title: "Morning Sync")
let model = SyncUpFormModel(syncUp: draft)
model.addAttendeeButtonTapped()
model.addAttendeeButtonTapped()
model.attendees[0].name = "Blob"
model.attendees[1].name = "Blob Jr."
model.saveButtonTapped()
let syncUp = try await database.read { db in
try #require(try SyncUp.order { $0.id.desc() }.fetchOne(db))
}
#expect(syncUp.title == "Morning Sync")
let attendees = try await database.read { db in
try Attendee.where { $0.syncUpID.eq(syncUp.id) }.fetchAll(db)
}
#expect(attendees.map(\.name) == ["Blob", "Blob Jr."])
}
@Test func updateExisting() async throws {
let existingSyncUp = try await database.read { db in
try #require(try SyncUp.fetchOne(db))
}
let draft = SyncUp.Draft(existingSyncUp)
let model = SyncUpFormModel(syncUp: draft)
model.syncUp.title = "Evening Sync"
model.deleteAttendees(atOffsets: [1, 2, 3, 4, 5])
model.addAttendeeButtonTapped()
model.attendees[model.attendees.count - 1].name = "Blobby McBlob"
model.saveButtonTapped()
let syncUp = try await database.read { db in
try #require(try SyncUp.where { $0.id.eq(existingSyncUp.id) }.fetchOne(db))
}
#expect(syncUp.title == "Evening Sync")
let attendees = try await database.read { db in
try Attendee.where { $0.syncUpID.eq(existingSyncUp.id) }.fetchAll(db)
}
#expect(attendees.map(\.name) == ["Blob", "Blobby McBlob"])
}
}