//
//  StringsFileGenerator+R2ExtensionsExpectation.swift
//  ResgenSwift
//
//  Created by Thibaut Schmitt on 30/04/2025.
//

@testable import ResgenSwift
import ToolCore

extension StringsFileGeneratorTests {

    static func getExtensionContentExpectation(
        isStatic: Bool,
        s1DefOneFr: String = "Section Un - Definition Un",
        s1DefOneComment: String = "",
        s1DefTwoFr: String = "Section Un - Definition Deux",
        s1DefTwoComment: String = "",
        s2DefOneFr: String = "Section Deux - Definition Un",
        s2DefOneComment: String = "",
        s2DefTwoFr: String = "Section Deux - Definition Deux",
        s2DefTwoComment: String = "",
        visibility: ExtensionVisibility = .internal,
        assetBundle: AssetBundle = .main
    ) -> String {
            """
        // Generated by ResgenSwift.Strings.Stringium \(ResgenSwiftVersion)
        
        import UIKit
        
        fileprivate let kStringsFileName = "myInputFilename"
        
        extension GenStrings {
        
            \(visibility) enum KeyStrings: String {
                case s1_def_one = "s1_def_one"
                case s1_def_two = "s1_def_two"
                case s2_def_one = "s2_def_one"
                case s2_def_two = "s2_def_two"
        
                \(visibility) var keyPath: KeyPath<GenStrings, String> {
                    switch self {
                    case .s1_def_one: return \\GenStrings.s1_def_one
                    case .s1_def_two: return \\GenStrings.s1_def_two
                    case .s2_def_one: return \\GenStrings.s2_def_one
                    case .s2_def_two: return \\GenStrings.s2_def_two
                    }
                }
            }
        
            // MARK: - section_one
        
            /// Translation in fr :
            /// \(s1DefOneFr)
            ///
            /// Comment :
            /// \(s1DefOneComment.isEmpty ? "No comment" : s1DefOneComment)
            \(visibility) \(isStatic ? "static " : "")var s1_def_one: String {
                NSLocalizedString("s1_def_one", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Un - Definition Un", comment: "\(s1DefOneComment)")
            }
        
            /// Translation in fr :
            /// \(s1DefTwoFr)
            ///
            /// Comment :
            /// \(s1DefTwoComment.isEmpty ? "No comment" : s1DefTwoComment)
            \(visibility) \(isStatic ? "static " : "")var s1_def_two: String {
                NSLocalizedString("s1_def_two", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Un - Definition Deux", comment: "\(s1DefTwoComment)")
            }
        
            // MARK: - section_two
        
            /// Translation in fr :
            /// \(s2DefOneFr)
            ///
            /// Comment :
            /// \(s2DefOneComment.isEmpty ? "No comment" : s2DefOneComment)
            \(visibility) \(isStatic ? "static " : "")var s2_def_one: String {
                NSLocalizedString("s2_def_one", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Deux - Definition Un", comment: "\(s2DefOneComment)")
            }
        
            /// Translation in fr :
            /// \(s2DefTwoFr)
            ///
            /// Comment :
            /// \(s2DefTwoComment.isEmpty ? "No comment" : s2DefTwoComment)
            \(visibility) \(isStatic ? "static " : "")var s2_def_two: String {
                NSLocalizedString("s2_def_two", tableName: kStringsFileName, bundle: Bundle.\(assetBundle), value: "Section Deux - Definition Deux", comment: "\(s2DefTwoComment)")
            }
        }
        """
    }
}
