From 16d3d4f1d564e64e35bc7e0afe36ad54c87cd5c1 Mon Sep 17 00:00:00 2001 From: Dario Carlomagno Date: Wed, 18 Dec 2024 17:18:13 +0100 Subject: [PATCH] [MOB-3028] Update tests and made the Language.make function thread-safe --- .../BundleImageFetcher/BundleImageFetcher.swift | 5 ++++- Ecosia/Core/Language.swift | 5 ++++- EcosiaTests/Core/LanguageTests.swift | 3 ++- EcosiaTests/Core/LocalTests.swift | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/BrowserKit/Sources/SiteImageView/ImageProcessing/BundleImageFetcher/BundleImageFetcher.swift b/BrowserKit/Sources/SiteImageView/ImageProcessing/BundleImageFetcher/BundleImageFetcher.swift index 822a2d10973b..361e3b62f463 100644 --- a/BrowserKit/Sources/SiteImageView/ImageProcessing/BundleImageFetcher/BundleImageFetcher.swift +++ b/BrowserKit/Sources/SiteImageView/ImageProcessing/BundleImageFetcher/BundleImageFetcher.swift @@ -222,8 +222,11 @@ struct EcosiaURLProvider { public internal(set) static var current = make(for: .current) + private static let queue = DispatchQueue(label: "\(Bundle.main.bundleIdentifier!).LanguageQueue") static func make(for locale: Locale) -> Self { - locale.withLanguage ?? .en + return queue.sync { + locale.withLanguage ?? .en + } } } } diff --git a/Ecosia/Core/Language.swift b/Ecosia/Core/Language.swift index 1b8039a22da7..26b9c675b147 100644 --- a/Ecosia/Core/Language.swift +++ b/Ecosia/Core/Language.swift @@ -28,8 +28,11 @@ public enum Language: String, Codable, CaseIterable { } } + private static let queue = DispatchQueue(label: "\(Bundle.ecosia.bundleIdentifier!).LanguageQueue") static func make(for locale: Locale) -> Self { - locale.withLanguage ?? .en + return queue.sync { + locale.withLanguage ?? .en + } } } diff --git a/EcosiaTests/Core/LanguageTests.swift b/EcosiaTests/Core/LanguageTests.swift index 4c3c5c3aea34..80670a0827f4 100644 --- a/EcosiaTests/Core/LanguageTests.swift +++ b/EcosiaTests/Core/LanguageTests.swift @@ -2,7 +2,8 @@ import XCTest final class LanguageTests: XCTestCase { - func testCurrent() { + func testSettingLanguageCurrentToUnexpectedLanguageReturnsDefault() { + Language.current = Language.make(for: Locale(identifier: "nz")) XCTAssertEqual(.en, Language.current) } diff --git a/EcosiaTests/Core/LocalTests.swift b/EcosiaTests/Core/LocalTests.swift index c7bf11ca5e34..2d7cf79526a9 100644 --- a/EcosiaTests/Core/LocalTests.swift +++ b/EcosiaTests/Core/LocalTests.swift @@ -3,6 +3,7 @@ import XCTest final class LocalTests: XCTestCase { func testCurrent() { + Language.current = .en XCTAssertEqual("en-us", Language.current.locale.rawValue) }