diff --git a/Hardware/Hardware/Printer/AirPrintReceipt/ReceiptRenderer.swift b/Hardware/Hardware/Printer/AirPrintReceipt/ReceiptRenderer.swift index 3224021edc4..4f1636da6cc 100644 --- a/Hardware/Hardware/Printer/AirPrintReceipt/ReceiptRenderer.swift +++ b/Hardware/Hardware/Printer/AirPrintReceipt/ReceiptRenderer.swift @@ -5,17 +5,23 @@ import UIKit public final class ReceiptRenderer: UIPrintPageRenderer { private let content: ReceiptContent - private let dateFormatter: DateFormatter = { + private lazy var dateFormatter: DateFormatter = { let formatter = DateFormatter() formatter.dateStyle = .medium formatter.timeStyle = .none - formatter.locale = Locale.current + formatter.locale = locale + formatter.timeZone = timeZone return formatter }() - public init(content: ReceiptContent) { + private let locale: Locale + private let timeZone: TimeZone + + public init(content: ReceiptContent, locale: Locale = .current, timeZone: TimeZone = .current) { self.content = content + self.locale = locale + self.timeZone = timeZone super.init() } diff --git a/Hardware/HardwareTests/AirPrintReceipt/ReceiptRendererTest.swift b/Hardware/HardwareTests/AirPrintReceipt/ReceiptRendererTest.swift index cfac3bb8747..9ff0b8614d9 100644 --- a/Hardware/HardwareTests/AirPrintReceipt/ReceiptRendererTest.swift +++ b/Hardware/HardwareTests/AirPrintReceipt/ReceiptRendererTest.swift @@ -5,11 +5,14 @@ import Foundation import CryptoKit final class ReceiptRendererTest: XCTestCase { + let locale = Locale(identifier: "en_US_POSIX") + let timeZone = TimeZone(secondsFromGMT: 0)! + func test_TextWithoutHtmlSymbols() { let expectedResultWithoutHtmlSymbolsMd5Description = "MD5 digest: 4eaaad801b2e0da0c113fb1db9267197" let content = generateReceiptContent() - let renderer = ReceiptRenderer(content: content) + let renderer = ReceiptRenderer(content: content, locale: locale, timeZone: timeZone) XCTAssertEqual( Insecure.MD5.hash(data: renderer.htmlContent().data(using: .utf8)!).description, @@ -22,7 +25,7 @@ final class ReceiptRendererTest: XCTestCase { let stringWithHtml = "
" let content = generateReceiptContent(stringToAppend: stringWithHtml) - let renderer = ReceiptRenderer(content: content) + let renderer = ReceiptRenderer(content: content, locale: locale, timeZone: timeZone) XCTAssertEqual( Insecure.MD5.hash(data: renderer.htmlContent().data(using: .utf8)!).description, @@ -36,9 +39,7 @@ final class ReceiptRendererTest: XCTestCase { let attributeTwo = ReceiptLineAttribute(name: "name_attr_2", value: "value_attr_2") let content = generateReceiptContent(attributes: [attributeOne, attributeTwo]) - let renderer = ReceiptRenderer(content: content) - - print(renderer.htmlContent()) + let renderer = ReceiptRenderer(content: content, locale: locale, timeZone: timeZone) XCTAssertEqual( Insecure.MD5.hash(data: renderer.htmlContent().data(using: .utf8)!).description,