test: Edit test
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit

This commit is contained in:
2023-12-08 14:22:17 +01:00
parent ca763cd5d0
commit 1ee4998ec6
7 changed files with 364 additions and 152 deletions

View File

@ -52,15 +52,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawPropertyScreen() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
definition.path = "ecran_un/"
// When
let propertyScreen = definition.getProperty()
// Expect
let expectScreen = """
func logScreenEcranUn() {
logScreen(name: "Ecran un", path: "ecran_un/")
func logScreenDefinitionName() {
logScreen(
name: "Ecran un",
path: "ecran_un/"
)
}
"""
@ -69,15 +72,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawPropertyEvent() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
// When
let propertyEvent = definition.getProperty()
// Expect
let expectEvent = """
func logEventEcranUn() {
logEvent(name: "Ecran un")
func logEventDefinitionName() {
logEvent(
name: "Ecran un",
action: "",
category: "",
params: []
)
}
"""
@ -87,14 +95,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawStaticPropertyScreen() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
definition.path = "ecran_un/"
// When
let propertyScreen = definition.getStaticProperty()
// Expect
let expectScreen = """
static func logScreenEcranUn() {
logScreen(name: "Ecran un", path: "ecran_un/")
static func logScreenDefinitionName() {
logScreen(
name: "Ecran un",
path: "ecran_un/"
)
}
"""
@ -103,15 +115,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
func testGeneratedRawStaticPropertyEvent() {
// Given
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
// When
let propertyEvent = definition.getStaticProperty()
// Expect
let expectEvent = """
static func logEventEcranUn() {
logEvent(name: "Ecran un")
static func logEventDefinitionName() {
logEvent(
name: "Ecran un",
action: "",
category: "",
params: []
)
}
"""

View File

@ -13,9 +13,20 @@ import ToolCore
final class AnalyticsGeneratorTests: XCTestCase {
private func getAnalyticsDefinition(id: String, path: String, name: String, type: AnalyticsDefinition.TagType, tags: [String]) -> AnalyticsDefinition {
private func getAnalyticsDefinition(
id: String,
path: String = "",
action: String = "",
category: String = "",
name: String,
type: AnalyticsDefinition.TagType,
tags: [String]
) -> AnalyticsDefinition {
let definition = AnalyticsDefinition(id: id, name: name, type: type)
definition.tags = tags
definition.path = path
definition.action = action
definition.category = category
return definition
}
@ -23,20 +34,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -49,29 +60,55 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import Firebase
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Firebase
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
var parameters = [
AnalyticsParameterScreenName: name
]
Analytics.logEvent(
AnalyticsEventScreenView,
parameters: parameters
)
}
func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
var parameters: [String:Any] = [
"action": action,
"category": category,
]
if let supplementaryParameters = params {
parameters.merge(supplementaryParameters) { (origin, new) -> Any in
return origin
}
}
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
Analytics.logEvent(
name,
parameters: parameters
)
}
}
@ -88,7 +125,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure() {
managers.append(FirebaseAnalyticsManager())
@ -96,32 +135,55 @@ 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) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: ""
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "",
category: "",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: ""
)
}
}
@ -137,20 +199,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -163,14 +225,18 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import MatomoTracker
// MARK: - Protocol
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Matomo
@ -186,7 +252,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
init(siteId: String, url: String) {
debugPrint("[Matomo service] Server URL: \\(url)")
debugPrint("[Matomo service] Site ID: \\(siteId)")
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
tracker = MatomoTracker(
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
@ -205,6 +274,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
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],
@ -212,11 +282,17 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
func logEvent(name: String) {
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: "category",
action: "action",
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
@ -237,40 +313,70 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure(siteId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: siteId, url: url))
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
)
}
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) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: "s1_def_one/"
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "test",
category: "test",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: "s2_def_one/"
)
}
}
@ -286,20 +392,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
// Given
let sectionOne = AnalyticsCategory(id: "section_one")
sectionOne.definitions = [
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", path: "s1_def_two/", name: "s1 def two", type: AnalyticsDefinition.TagType.event, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_one", path: "s1_def_one/", name: "s1 def one", type: .screen, tags: ["ios", "iosonly"]),
getAnalyticsDefinition(id: "s1_def_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
]
let sectionTwo = AnalyticsCategory(id: "section_two")
sectionTwo.definitions = [
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: AnalyticsDefinition.TagType.screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", path: "s2_def_two/", name: "s2 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s2_def_one", path: "s2_def_one/", name: "s2 def one", type: .screen, tags: ["ios","iosonly"]),
getAnalyticsDefinition(id: "s2_def_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
]
let sectionThree = AnalyticsCategory(id: "section_three")
sectionThree.definitions = [
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: AnalyticsDefinition.TagType.screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", path: "s3_def_two/", name: "s3 def two", type: AnalyticsDefinition.TagType.event, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_one", path: "s3_def_one/", name: "s3 def one", type: .screen, tags: ["droid","droidonly"]),
getAnalyticsDefinition(id: "s3_def_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
]
// When
@ -312,7 +418,6 @@ final class AnalyticsGeneratorTests: XCTestCase {
let expect = """
// Generated by ResgenSwift.Analytics 1.2
import UIKit
import MatomoTracker
import Firebase
@ -320,7 +425,12 @@ final class AnalyticsGeneratorTests: XCTestCase {
protocol AnalyticsManagerProtocol {
func logScreen(name: String, path: String)
func logEvent(name: String)
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
)
}
// MARK: - Matomo
@ -336,7 +446,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
init(siteId: String, url: String) {
debugPrint("[Matomo service] Server URL: \\(url)")
debugPrint("[Matomo service] Site ID: \\(siteId)")
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
tracker = MatomoTracker(
siteId: siteId,
baseURL: URL(string: url)!
)
#if DEBUG
tracker.dispatchInterval = 5
@ -355,6 +468,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
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],
@ -362,11 +476,17 @@ final class AnalyticsGeneratorTests: XCTestCase {
)
}
func logEvent(name: String) {
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard !tracker.isOptedOut else { return }
tracker.track(
eventWithCategory: "category",
action: "action",
eventWithCategory: category,
action: action,
name: name,
number: nil,
url: nil
@ -378,15 +498,37 @@ final class AnalyticsGeneratorTests: XCTestCase {
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
func logScreen(name: String, path: String) {
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
var parameters = [
AnalyticsParameterScreenName: name
]
Analytics.logEvent(
AnalyticsEventScreenView,
parameters: parameters
)
}
func logEvent(name: String) {
var parameters = [
AnalyticsParameterValue: name
func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
var parameters: [String:Any] = [
"action": action,
"category": category,
]
if let supplementaryParameters = params {
parameters.merge(supplementaryParameters) { (origin, new) -> Any in
return origin
}
}
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
Analytics.logEvent(
name,
parameters: parameters
)
}
}
@ -403,41 +545,71 @@ final class AnalyticsGeneratorTests: XCTestCase {
// MARK: - Methods
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
func setAnalyticsEnabled(_ enable: Bool) {
isEnabled = enable
}
func configure(siteId: String, url: String) {
managers.append(MatomoAnalyticsManager(siteId: siteId, url: url))
managers.append(
MatomoAnalyticsManager(
siteId: siteId,
url: url
)
)
managers.append(FirebaseAnalyticsManager())
}
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) {
private func logEvent(
name: String,
action: String,
category: String,
params: [String: Any]?
) {
guard isEnabled else { return }
managers.forEach { manager in
manager.logEvent(name: name)
manager.logEvent(
name: name,
action: action,
category: category,
params: params
)
}
}
// MARK: - section_one
func logScreenS1DefOne() {
logScreen(name: "s1 def one", path: "s1_def_one/")
logScreen(
name: "s1 def one",
path: "s1_def_one/"
)
}
func logEventS1DefTwo() {
logEvent(name: "s1 def two")
logEvent(
name: "s1 def two",
action: "test",
category: "test",
params: []
)
}
// MARK: - section_two
func logScreenS2DefOne() {
logScreen(name: "s2 def one", path: "s2_def_one/")
logScreen(
name: "s2 def one",
path: "s2_def_one/"
)
}
}