Add SwiftLint HARD rules
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2025-04-30 17:05:02 +02:00
parent c3445042b7
commit 279f13dbd5
79 changed files with 1969 additions and 1384 deletions

View File

@ -51,11 +51,14 @@ final class AnalyticsGeneratorTests: XCTestCase {
]
// When
AnalyticsGenerator.targets = [TrackerType.firebase]
let extensionContent = AnalyticsGenerator.getExtensionContent(sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics")
let extensionContent = AnalyticsGenerator.getExtensionContent(
targets: [TrackerType.firebase],
sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics"
)
// Expect Analytics
let expect = """
// Generated by ResgenSwift.Analytics \(ResgenSwiftVersion)
@ -65,6 +68,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(
name: String,
@ -77,6 +81,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
var parameters = [
AnalyticsParameterScreenName: name as NSObject
@ -98,7 +103,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
"action": action as NSObject,
"category": category as NSObject,
]
if let supplementaryParameters = params {
for (newKey, newValue) in supplementaryParameters {
if parameters.contains(where: { (key: String, value: NSObject) in
@ -106,11 +111,11 @@ final class AnalyticsGeneratorTests: XCTestCase {
}) {
continue
}
parameters[newKey] = newValue as? NSObject
}
}
Analytics.logEvent(
name.replacingOccurrences(of: [" "], with: "_"),
parameters: parameters
@ -121,8 +126,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Manager
class AnalyticsManager {
static var shared = AnalyticsManager()
// MARK: - Properties
var managers: [AnalyticsManagerProtocol] = []
@ -138,7 +144,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
func configure() {
managers.append(FirebaseAnalyticsManager())
}
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
@ -146,7 +152,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
manager.logScreen(name: name, path: path)
}
}
private func logEvent(
name: String,
action: String,
@ -154,7 +160,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(
name: name,
@ -222,11 +228,13 @@ final class AnalyticsGeneratorTests: XCTestCase {
]
// When
AnalyticsGenerator.targets = [TrackerType.matomo]
let extensionContent = AnalyticsGenerator.getExtensionContent(sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics")
let extensionContent = AnalyticsGenerator.getExtensionContent(
targets: [TrackerType.matomo],
sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics"
)
// Expect Analytics
let expect = """
// Generated by ResgenSwift.Analytics \(ResgenSwiftVersion)
@ -236,6 +244,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(
name: String,
@ -248,7 +257,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Matomo
class MatomoAnalyticsManager: AnalyticsManagerProtocol {
// MARK: - Properties
private var tracker: MatomoTracker
@ -262,11 +271,11 @@ final class AnalyticsGeneratorTests: XCTestCase {
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
#endif
#if DEBUG
tracker.logger = DefaultLogger(minLevel: .verbose)
#endif
@ -274,7 +283,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
debugPrint("[Matomo service] Configured with content base: \\(tracker.contentBase?.absoluteString ?? "-")")
debugPrint("[Matomo service] Opt out: \\(tracker.isOptedOut)")
}
// MARK: - Methods
func logScreen(name: String, path: String) {
@ -295,7 +304,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: category,
action: action,
@ -309,8 +318,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Manager
class AnalyticsManager {
static var shared = AnalyticsManager()
// MARK: - Properties
var managers: [AnalyticsManagerProtocol] = []
@ -331,15 +341,15 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
)
}
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logScreen(name: name, path: path)
}
}
private func logEvent(
name: String,
action: String,
@ -347,7 +357,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(
name: name,
@ -385,7 +395,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
}
"""
if extensionContent != expect {
@ -415,11 +425,14 @@ final class AnalyticsGeneratorTests: XCTestCase {
]
// When
AnalyticsGenerator.targets = [TrackerType.matomo, TrackerType.firebase]
let extensionContent = AnalyticsGenerator.getExtensionContent(sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics")
let extensionContent = AnalyticsGenerator.getExtensionContent(
targets: [TrackerType.matomo, TrackerType.firebase],
sections: [sectionOne, sectionTwo, sectionThree],
tags: ["ios", "iosonly"],
staticVar: false,
extensionName: "GenAnalytics"
)
// Expect Analytics
let expect = """
// Generated by ResgenSwift.Analytics \(ResgenSwiftVersion)
@ -430,6 +443,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(
name: String,
@ -442,7 +456,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Matomo
class MatomoAnalyticsManager: AnalyticsManagerProtocol {
// MARK: - Properties
private var tracker: MatomoTracker
@ -456,11 +470,11 @@ final class AnalyticsGeneratorTests: XCTestCase {
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
#endif
#if DEBUG
tracker.logger = DefaultLogger(minLevel: .verbose)
#endif
@ -468,13 +482,13 @@ final class AnalyticsGeneratorTests: XCTestCase {
debugPrint("[Matomo service] Configured with content base: \\(tracker.contentBase?.absoluteString ?? "-")")
debugPrint("[Matomo service] Opt out: \\(tracker.isOptedOut)")
}
// MARK: - Methods
func logScreen(name: String, path: String) {
guard !tracker.isOptedOut else { return }
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
tracker.track(
view: [name],
@ -489,7 +503,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: category,
action: action,
@ -499,7 +513,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
}
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
@ -524,7 +538,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
"action": action as NSObject,
"category": category as NSObject,
]
if let supplementaryParameters = params {
for (newKey, newValue) in supplementaryParameters {
if parameters.contains(where: { (key: String, value: NSObject) in
@ -532,11 +546,11 @@ final class AnalyticsGeneratorTests: XCTestCase {
}) {
continue
}
parameters[newKey] = newValue as? NSObject
}
}
Analytics.logEvent(
name.replacingOccurrences(of: [" "], with: "_"),
parameters: parameters
@ -547,8 +561,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Manager
class AnalyticsManager {
static var shared = AnalyticsManager()
// MARK: - Properties
var managers: [AnalyticsManagerProtocol] = []
@ -570,7 +585,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
managers.append(FirebaseAnalyticsManager())
}
private func logScreen(name: String, path: String) {
guard isEnabled else { return }
@ -578,7 +593,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
manager.logScreen(name: name, path: path)
}
}
private func logEvent(
name: String,
action: String,
@ -586,7 +601,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(
name: name,
@ -624,7 +639,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
}
"""
if extensionContent != expect {