mirror of
https://github.com/vector-im/element-ios.git
synced 2024-09-28 15:22:39 +00:00
Correctly chain up async calls on emoji store loading to avoid race conditions and intermittent test failures.
This commit is contained in:
parent
b35407bab2
commit
c9d0a4f4b4
1 changed files with 14 additions and 30 deletions
|
@ -20,14 +20,6 @@ import XCTest
|
|||
|
||||
class EmojiStoreTests: XCTestCase {
|
||||
|
||||
private var emojiStore: EmojiStore!
|
||||
|
||||
override func setUp() {
|
||||
emojiStore = loadStore()
|
||||
}
|
||||
|
||||
// MARK: - Tests
|
||||
|
||||
func testFinds💯WhenSearchingForHundred() {
|
||||
find("hundred", expect: "💯")
|
||||
}
|
||||
|
@ -44,33 +36,25 @@ class EmojiStoreTests: XCTestCase {
|
|||
find("2", expect: "2️⃣")
|
||||
}
|
||||
|
||||
// MARK: - Helpers
|
||||
// MARK: - Private
|
||||
|
||||
private func loadStore() -> EmojiStore {
|
||||
let store = EmojiStore()
|
||||
let emojiService = EmojiMartService()
|
||||
let expectation = self.expectation(description: "The wai-ai-ting is the hardest part")
|
||||
private func find(_ searchText: String, expect emoji: String) {
|
||||
loadEmojiStore { emojiStore in
|
||||
let emojis = emojiStore.findEmojiItemsSortedByCategory(with: searchText).flatMap { $0.emojis.map { $0.value } }
|
||||
XCTAssert(emojis.contains(emoji), "Search text \"\(searchText)\" should find \"\(emoji)\" but only found \(emojis)")
|
||||
}
|
||||
}
|
||||
|
||||
emojiService.getEmojiCategories { response in
|
||||
private func loadEmojiStore(_ completion: @escaping (EmojiStore) -> Void) {
|
||||
EmojiMartService().getEmojiCategories { response in
|
||||
switch response {
|
||||
case .success(let categories):
|
||||
let store = EmojiStore()
|
||||
store.set(categories)
|
||||
expectation.fulfill()
|
||||
completion(store)
|
||||
case .failure(let error):
|
||||
XCTFail("Failed to load emojis: \(error)")
|
||||
}
|
||||
}
|
||||
|
||||
waitForExpectations(timeout: 2) { error in
|
||||
XCTAssertNil(error)
|
||||
}
|
||||
|
||||
return store
|
||||
}
|
||||
|
||||
private func find(_ searchText: String, expect emoji: String) {
|
||||
let emojis = emojiStore.findEmojiItemsSortedByCategory(with: searchText).flatMap { $0.emojis.map { $0.value } }
|
||||
XCTAssert(emojis.contains(emoji), "Search text \"\(searchText)\" should find \"\(emoji)\" but only found \(emojis)")
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue