Slide 106
Slide 106 text
9DPEFͷBTZODBXBJUར༻
#FGPSF
func testαʔόʔͰςΩετΛ࡞_αʔόʔͰcontentআ_ಉظ_ςΩετΛ෮ݩ_ಉظͷࡍʹطʹαʔόʔͰtextআࡁΈ_৽͍ۭ͠ͷςΩετͱͯ͠ಉظ͞ΕΔ() throws {
let awaitExpectation = expectation(description: "await")
try Auth.auth().signOut()
Auth.auth().signInAnonymously(completion: { result, error in
do {
guard result != nil else {
XCTFail(error?.localizedDescription ?? #function)
awaitExpectation.fulfill()
return
}
try self.changeServer(operation: .createDocumentRoot(title: nil, text: "text")) { result in
switch result {
case .success(let root):
try self.changeServer(operation: .removeContent(contentId: root.id)) { result in
switch result {
case .success:
try self.sync(dbQueue: self.dbQueue) { result in
switch result {
case .success:
let serverTextId1 = root.textId!
let localTextUuid1 = try self.dbQueue.selectTextUuid(id: serverTextId1)
try self.changeServer(operation: .removeText(textId: serverTextId1)) { result in
switch result {
case .success:
let local = try self.changeLocalOffline(dbQueue: self.dbQueue, operation: .restoreDocumentRoot(title: "local", textUuid: localTextUuid1))
try self.sync(dbQueue: self.dbQueue) { result in
switch result {
case .success:
let localTextUuid3 = local.textUuid!
XCTAssertEqual(localTextUuid1, localTextUuid3)
awaitExpectation.fulfill()
case .failure(let error):
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
}
case .failure(let error):
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
}
case .failure(let error):
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
}
case .failure(let error):
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
}
case .failure(let error):
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
}
} catch {
XCTFail(error.localizedDescription)
awaitExpectation.fulfill()
}
})
}