From 9d779a9c4762334dd3c79f039d90a8dfb36d516a 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 822a2d10973b9..361e3b62f463d 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 1b8039a22da7b..26b9c675b147d 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 4c3c5c3aea346..80670a0827f4b 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 c7bf11ca5e347..2d7cf79526a94 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) }