Fix Tests Analytics #17

Merged
t.schmitt merged 6 commits from analytics into master 2025-07-17 14:11:28 +02:00
11 changed files with 470 additions and 441 deletions
Showing only changes of commit ffb3ca8393 - Show all commits

View File

@@ -5,11 +5,14 @@
// Created by Loris Perret on 08/12/2023. // Created by Loris Perret on 08/12/2023.
// //
// CPD-OFF
import CoreVideo import CoreVideo
import Foundation import Foundation
import ToolCore import ToolCore
// Disabled cause it's a pain to handle in generated string // Disabled cause it's a pain to handle in generated string
// swiftlint:disable type_body_length
enum AnalyticsGenerator { enum AnalyticsGenerator {
@@ -172,6 +175,7 @@ enum AnalyticsGenerator {
if targets.contains(TrackerType.matomo) { if targets.contains(TrackerType.matomo) {
result.append("import MatomoTracker") result.append("import MatomoTracker")
} }
if targets.contains(TrackerType.firebase) { if targets.contains(TrackerType.firebase) {
result.append("import FirebaseAnalytics") result.append("import FirebaseAnalytics")
} }
@@ -238,6 +242,7 @@ enum AnalyticsGenerator {
) )
""") """)
} }
if targets.contains(TrackerType.firebase) { if targets.contains(TrackerType.firebase) {
content.append(" managers[TrackerType.firebase] = FirebaseAnalyticsManager()") content.append(" managers[TrackerType.firebase] = FirebaseAnalyticsManager()")
} }
@@ -322,3 +327,5 @@ enum AnalyticsGenerator {
""" """
} }
} }
// CPD-ON

View File

@@ -13,11 +13,11 @@ enum FirebaseGenerator {
static var service: String { static var service: String {
[ [
FirebaseGenerator.header, Self.header,
FirebaseGenerator.logScreen, Self.logScreen,
FirebaseGenerator.logEvent, Self.logEvent,
FirebaseGenerator.enable, Self.enable,
FirebaseGenerator.footer Self.footer
] ]
.joined(separator: "\n") .joined(separator: "\n")
} }

View File

@@ -5,18 +5,20 @@
// Created by Loris Perret on 05/12/2023. // Created by Loris Perret on 05/12/2023.
// //
// CPD-OFF
import Foundation import Foundation
enum MatomoGenerator { enum MatomoGenerator {
static var service: String { static var service: String {
[ [
MatomoGenerator.header, Self.header,
MatomoGenerator.setup, Self.setup,
MatomoGenerator.logScreen, Self.logScreen,
MatomoGenerator.logEvent, Self.logEvent,
MatomoGenerator.enable, Self.enable,
MatomoGenerator.footer Self.footer
] ]
.joined(separator: "\n") .joined(separator: "\n")
} }
@@ -118,3 +120,5 @@ enum MatomoGenerator {
""" """
} }
} }
// CPD-ON

View File

@@ -60,8 +60,10 @@ class AnalyticsDefinition {
switch parameter.type { switch parameter.type {
case .bool: case .bool:
defaultValue = "\(parameter.defaultValue.lowercased())" defaultValue = "\(parameter.defaultValue.lowercased())"
case .int, .double: case .int, .double:
defaultValue = "\(parameter.defaultValue)" defaultValue = "\(parameter.defaultValue)"
case .string: case .string:
defaultValue = "\"\(parameter.defaultValue)\"" defaultValue = "\"\(parameter.defaultValue)\""
} }
@@ -90,9 +92,13 @@ class AnalyticsDefinition {
for rep in parameter.replaceIn { for rep in parameter.replaceIn {
switch rep { switch rep {
case "name": name = name.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))") case "name": name = name.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
case "path": path = path.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))") case "path": path = path.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
case "category": category = category.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))") case "category": category = category.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
case "action": action = action.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))") case "action": action = action.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
default: default:
if let param = parameters.first(where: { $0.name == rep }), param.value.isEmpty == false { if let param = parameters.first(where: { $0.name == rep }), param.value.isEmpty == false {
param.value = param.value.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))") param.value = param.value.replacingFirstOccurrence(of: "_\(parameter.name.uppercased())_", with: "\\(\(parameter.name))")
@@ -117,8 +123,10 @@ class AnalyticsDefinition {
switch param.type { switch param.type {
case .bool: case .bool:
params.append("\"\(param.name)\": \(param.value.lowercased())") params.append("\"\(param.name)\": \(param.value.lowercased())")
case .int, .double: case .int, .double:
params.append("\"\(param.name)\": \(param.value)") params.append("\"\(param.name)\": \(param.value)")
case .string: case .string:
params.append("\"\(param.name)\": \"\(param.value)\"") params.append("\"\(param.name)\": \"\(param.value)\"")
} }

View File

@@ -8,6 +8,7 @@
import Foundation import Foundation
enum ParameterType: String { enum ParameterType: String {
case string = "String" case string = "String"
case int = "Int" case int = "Int"
case double = "Double" case double = "Double"

View File

@@ -78,18 +78,21 @@ class AnalyticsFileParser {
print(error.description) print(error.description)
Analytics.exit(withError: error) Analytics.exit(withError: error)
} }
case .bool: case .bool:
if Bool(value.lowercased()) == nil { if Bool(value.lowercased()) == nil {
let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)") let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)")
print(error.description) print(error.description)
Analytics.exit(withError: error) Analytics.exit(withError: error)
} }
case .double: case .double:
if Double(value) == nil { if Double(value) == nil {
let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)") let error = AnalyticsError.invalidParameter("type of \(value) is not \(type)")
print(error.description) print(error.description)
Analytics.exit(withError: error) Analytics.exit(withError: error)
} }
case .string: case .string:
break break
} }
@@ -147,7 +150,7 @@ class AnalyticsFileParser {
} }
if let parameters { if let parameters {
definition.parameters = AnalyticsFileParser.getParameters(from: parameters) definition.parameters = Self.getParameters(from: parameters)
} }
return definition return definition