test: Edit test
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
Some checks failed
gitea-openium/resgen.swift/pipeline/head There was a failure building this commit
This commit is contained in:
parent
ca763cd5d0
commit
1ee4998ec6
@ -167,24 +167,30 @@ class AnalyticsManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Introduction
|
// MARK: - section_one
|
||||||
|
|
||||||
func logScreenIntroductionScreen(title: String) {
|
func logScreenS1DefOne() {
|
||||||
logScreen(
|
logScreen(
|
||||||
name: "Bienvenue \(title)",
|
name: "s1 def one",
|
||||||
path: "introduction/"
|
path: "s1_def_one/"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func logEventIntroductionScreen(test: String, data: Int) {
|
func logEventS1DefTwo() {
|
||||||
logEvent(
|
logEvent(
|
||||||
name: "Bienvenue",
|
name: "s1 def two",
|
||||||
action: "action",
|
action: "test",
|
||||||
category: "category",
|
category: "test",
|
||||||
params: [
|
params: []
|
||||||
"test": test,
|
)
|
||||||
"data": data
|
}
|
||||||
]
|
|
||||||
|
// MARK: - section_two
|
||||||
|
|
||||||
|
func logScreenS2DefOne() {
|
||||||
|
logScreen(
|
||||||
|
name: "s2 def one",
|
||||||
|
path: "s2_def_one/"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,43 @@
|
|||||||
---
|
---
|
||||||
categories:
|
categories:
|
||||||
- id: Introduction
|
- id: section_one
|
||||||
screens:
|
screens:
|
||||||
- id: introduction_screen
|
- id: s1_def_one
|
||||||
name: Bienvenue _TITLE_
|
name: s1 def one
|
||||||
path: introduction/
|
path: s1_def_one/
|
||||||
tags: droid,ios
|
tags: ios
|
||||||
parameters:
|
|
||||||
- name: title
|
|
||||||
type: String
|
|
||||||
replaceIn: name
|
|
||||||
|
|
||||||
events:
|
events:
|
||||||
- id: introduction_screen
|
- id: s1_def_two
|
||||||
name: Bienvenue
|
name: s1 def two
|
||||||
category: category
|
action: test
|
||||||
action: action
|
category: test
|
||||||
tags: droid,ios
|
tags: ios
|
||||||
parameters:
|
|
||||||
- name: test
|
- id: section_two
|
||||||
type: String
|
screens:
|
||||||
- name: data
|
- id: s2_def_one
|
||||||
type: Int
|
name: s2 def one
|
||||||
|
path: s2_def_one/
|
||||||
|
tags: ios
|
||||||
|
|
||||||
|
events:
|
||||||
|
- id: s2_def_two
|
||||||
|
name: s2 def two
|
||||||
|
action: test
|
||||||
|
category: test
|
||||||
|
tags: droid
|
||||||
|
|
||||||
|
- id: section_three
|
||||||
|
screens:
|
||||||
|
- id: s3_def_one
|
||||||
|
name: s3 def one
|
||||||
|
path: s3_def_one/
|
||||||
|
tags: droid
|
||||||
|
|
||||||
|
events:
|
||||||
|
- id: s3_def_two
|
||||||
|
name: s3 def two
|
||||||
|
action: test
|
||||||
|
category: test
|
||||||
|
tags: droid
|
||||||
|
@ -32,7 +32,7 @@ FORCE_FLAG="$1"
|
|||||||
|
|
||||||
#echo "\n-------------------------\n"
|
#echo "\n-------------------------\n"
|
||||||
|
|
||||||
# Strings
|
## Strings
|
||||||
#swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
|
#swift run -c release ResgenSwift strings stringium $FORCE_FLAG "./Strings/sampleStrings.txt" \
|
||||||
# --output-path "./Strings/Generated" \
|
# --output-path "./Strings/Generated" \
|
||||||
# --langs "fr en en-us" \
|
# --langs "fr en en-us" \
|
||||||
@ -41,23 +41,23 @@ FORCE_FLAG="$1"
|
|||||||
# --extension-name "String" \
|
# --extension-name "String" \
|
||||||
# --extension-suffix "GenAllScript"
|
# --extension-suffix "GenAllScript"
|
||||||
|
|
||||||
echo "\n-------------------------\n"
|
|
||||||
|
|
||||||
## Tags
|
|
||||||
swift run -c release ResgenSwift strings tags $FORCE_FLAG "./Tags/sampleTags.txt" \
|
|
||||||
--lang "ium" \
|
|
||||||
--extension-output-path "./Tags/Generated" \
|
|
||||||
--extension-name "Tags" \
|
|
||||||
--extension-suffix "GenAllScript"
|
|
||||||
#
|
|
||||||
#echo "\n-------------------------\n"
|
#echo "\n-------------------------\n"
|
||||||
|
|
||||||
## Analytics
|
## Tags
|
||||||
#swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
|
#swift run -c release ResgenSwift strings tags $FORCE_FLAG "./Tags/sampleTags.txt" \
|
||||||
# --target "matomo firebase" \
|
# --lang "ium" \
|
||||||
# --extension-output-path "./Tags/Generated" \
|
# --extension-output-path "./Tags/Generated" \
|
||||||
# --extension-name "Analytics" \
|
# --extension-name "Tags" \
|
||||||
# --extension-suffix "GenAllScript"
|
# --extension-suffix "GenAllScript"
|
||||||
|
#
|
||||||
|
echo "\n-------------------------\n"
|
||||||
|
|
||||||
|
# Analytics
|
||||||
|
swift run -c release ResgenSwift analytics $FORCE_FLAG "./Tags/sampleTags.yml" \
|
||||||
|
--target "matomo firebase" \
|
||||||
|
--extension-output-path "./Tags/Generated" \
|
||||||
|
--extension-name "Analytics" \
|
||||||
|
--extension-suffix "GenAllScript"
|
||||||
|
|
||||||
echo "\n-------------------------\n"
|
echo "\n-------------------------\n"
|
||||||
#
|
#
|
||||||
|
@ -22,8 +22,6 @@ class AnalyticsGenerator {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Get extension content
|
// Get extension content
|
||||||
let extensionFileContent = Self.getExtensionContent(sections: sections,
|
let extensionFileContent = Self.getExtensionContent(sections: sections,
|
||||||
tags: tags,
|
tags: tags,
|
||||||
|
@ -91,8 +91,7 @@ class AnalyticsFileParser {
|
|||||||
parameters: screen.parameters
|
parameters: screen.parameters
|
||||||
)
|
)
|
||||||
|
|
||||||
guard target.contains(Analytics.TargetType.matomo.value) else { continue }
|
if target.contains(Analytics.TargetType.matomo.value) {
|
||||||
|
|
||||||
// Path
|
// Path
|
||||||
|
|
||||||
guard let path = screen.path else {
|
guard let path = screen.path else {
|
||||||
@ -101,6 +100,7 @@ class AnalyticsFileParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
definition.path = path
|
definition.path = path
|
||||||
|
}
|
||||||
|
|
||||||
definitions.append(definition)
|
definitions.append(definition)
|
||||||
}
|
}
|
||||||
@ -121,8 +121,7 @@ class AnalyticsFileParser {
|
|||||||
parameters: event.parameters
|
parameters: event.parameters
|
||||||
)
|
)
|
||||||
|
|
||||||
guard target.contains(Analytics.TargetType.matomo.value) else { continue }
|
if target.contains(Analytics.TargetType.matomo.value) {
|
||||||
|
|
||||||
// Category
|
// Category
|
||||||
|
|
||||||
guard let category = event.category else {
|
guard let category = event.category else {
|
||||||
@ -140,6 +139,7 @@ class AnalyticsFileParser {
|
|||||||
}
|
}
|
||||||
|
|
||||||
definition.action = action
|
definition.action = action
|
||||||
|
}
|
||||||
|
|
||||||
definitions.append(definition)
|
definitions.append(definition)
|
||||||
}
|
}
|
||||||
|
@ -52,15 +52,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
|
|||||||
func testGeneratedRawPropertyScreen() {
|
func testGeneratedRawPropertyScreen() {
|
||||||
// Given
|
// Given
|
||||||
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
||||||
|
definition.path = "ecran_un/"
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let propertyScreen = definition.getProperty()
|
let propertyScreen = definition.getProperty()
|
||||||
|
|
||||||
// Expect
|
// Expect
|
||||||
let expectScreen = """
|
let expectScreen = """
|
||||||
func logScreenEcranUn() {
|
func logScreenDefinitionName() {
|
||||||
logScreen(name: "Ecran un", path: "ecran_un/")
|
logScreen(
|
||||||
|
name: "Ecran un",
|
||||||
|
path: "ecran_un/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -69,15 +72,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
|
|||||||
|
|
||||||
func testGeneratedRawPropertyEvent() {
|
func testGeneratedRawPropertyEvent() {
|
||||||
// Given
|
// Given
|
||||||
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let propertyEvent = definition.getProperty()
|
let propertyEvent = definition.getProperty()
|
||||||
|
|
||||||
// Expect
|
// Expect
|
||||||
let expectEvent = """
|
let expectEvent = """
|
||||||
func logEventEcranUn() {
|
func logEventDefinitionName() {
|
||||||
logEvent(name: "Ecran un")
|
logEvent(
|
||||||
|
name: "Ecran un",
|
||||||
|
action: "",
|
||||||
|
category: "",
|
||||||
|
params: []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -87,14 +95,18 @@ final class AnalyticsDefinitionTests: XCTestCase {
|
|||||||
func testGeneratedRawStaticPropertyScreen() {
|
func testGeneratedRawStaticPropertyScreen() {
|
||||||
// Given
|
// Given
|
||||||
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
||||||
|
definition.path = "ecran_un/"
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let propertyScreen = definition.getStaticProperty()
|
let propertyScreen = definition.getStaticProperty()
|
||||||
|
|
||||||
// Expect
|
// Expect
|
||||||
let expectScreen = """
|
let expectScreen = """
|
||||||
static func logScreenEcranUn() {
|
static func logScreenDefinitionName() {
|
||||||
logScreen(name: "Ecran un", path: "ecran_un/")
|
logScreen(
|
||||||
|
name: "Ecran un",
|
||||||
|
path: "ecran_un/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
@ -103,15 +115,20 @@ final class AnalyticsDefinitionTests: XCTestCase {
|
|||||||
|
|
||||||
func testGeneratedRawStaticPropertyEvent() {
|
func testGeneratedRawStaticPropertyEvent() {
|
||||||
// Given
|
// Given
|
||||||
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .screen)
|
let definition = AnalyticsDefinition(id: "definition_name", name: "Ecran un", type: .event)
|
||||||
|
|
||||||
// When
|
// When
|
||||||
let propertyEvent = definition.getStaticProperty()
|
let propertyEvent = definition.getStaticProperty()
|
||||||
|
|
||||||
// Expect
|
// Expect
|
||||||
let expectEvent = """
|
let expectEvent = """
|
||||||
static func logEventEcranUn() {
|
static func logEventDefinitionName() {
|
||||||
logEvent(name: "Ecran un")
|
logEvent(
|
||||||
|
name: "Ecran un",
|
||||||
|
action: "",
|
||||||
|
category: "",
|
||||||
|
params: []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@ -13,9 +13,20 @@ import ToolCore
|
|||||||
|
|
||||||
final class AnalyticsGeneratorTests: XCTestCase {
|
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)
|
let definition = AnalyticsDefinition(id: id, name: name, type: type)
|
||||||
definition.tags = tags
|
definition.tags = tags
|
||||||
|
definition.path = path
|
||||||
|
definition.action = action
|
||||||
|
definition.category = category
|
||||||
return definition
|
return definition
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,20 +34,20 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
// Given
|
// Given
|
||||||
let sectionOne = AnalyticsCategory(id: "section_one")
|
let sectionOne = AnalyticsCategory(id: "section_one")
|
||||||
sectionOne.definitions = [
|
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_one", name: "s1 def one", type: .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_two", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionTwo = AnalyticsCategory(id: "section_two")
|
let sectionTwo = AnalyticsCategory(id: "section_two")
|
||||||
sectionTwo.definitions = [
|
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_one", name: "s2 def one", type: .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_two", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionThree = AnalyticsCategory(id: "section_three")
|
let sectionThree = AnalyticsCategory(id: "section_three")
|
||||||
sectionThree.definitions = [
|
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_one", name: "s3 def one", type: .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_two", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
// When
|
// When
|
||||||
@ -49,29 +60,55 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
let expect = """
|
let expect = """
|
||||||
// Generated by ResgenSwift.Analytics 1.2
|
// Generated by ResgenSwift.Analytics 1.2
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import Firebase
|
import Firebase
|
||||||
|
|
||||||
// MARK: - Protocol
|
// MARK: - Protocol
|
||||||
|
|
||||||
protocol AnalyticsManagerProtocol {
|
protocol AnalyticsManagerProtocol {
|
||||||
func logScreen(name: String, path: String)
|
func logScreen(name: String, path: String)
|
||||||
func logEvent(name: String)
|
func logEvent(
|
||||||
|
name: String,
|
||||||
|
action: String,
|
||||||
|
category: String,
|
||||||
|
params: [String: Any]?
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Firebase
|
// MARK: - Firebase
|
||||||
|
|
||||||
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||||
func logScreen(name: String, path: String) {
|
func logScreen(name: String, path: String) {
|
||||||
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
|
|
||||||
}
|
|
||||||
|
|
||||||
func logEvent(name: String) {
|
|
||||||
var parameters = [
|
var parameters = [
|
||||||
AnalyticsParameterValue: name
|
AnalyticsParameterScreenName: name
|
||||||
]
|
]
|
||||||
|
|
||||||
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
|
Analytics.logEvent(
|
||||||
|
AnalyticsEventScreenView,
|
||||||
|
parameters: parameters
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
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(
|
||||||
|
name,
|
||||||
|
parameters: parameters
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,7 +125,9 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
// MARK: - Methods
|
// MARK: - Methods
|
||||||
|
|
||||||
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
|
func setAnalyticsEnabled(_ enable: Bool) {
|
||||||
|
isEnabled = enable
|
||||||
|
}
|
||||||
|
|
||||||
func configure() {
|
func configure() {
|
||||||
managers.append(FirebaseAnalyticsManager())
|
managers.append(FirebaseAnalyticsManager())
|
||||||
@ -96,32 +135,55 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
private func logScreen(name: String, path: String) {
|
private func logScreen(name: String, path: String) {
|
||||||
guard isEnabled else { return }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logScreen(name: name, path: path)
|
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 }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logEvent(name: name)
|
manager.logEvent(
|
||||||
|
name: name,
|
||||||
|
action: action,
|
||||||
|
category: category,
|
||||||
|
params: params
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_one
|
// MARK: - section_one
|
||||||
|
|
||||||
func logScreenS1DefOne() {
|
func logScreenS1DefOne() {
|
||||||
logScreen(name: "s1 def one", path: "s1_def_one/")
|
logScreen(
|
||||||
|
name: "s1 def one",
|
||||||
|
path: ""
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func logEventS1DefTwo() {
|
func logEventS1DefTwo() {
|
||||||
logEvent(name: "s1 def two")
|
logEvent(
|
||||||
|
name: "s1 def two",
|
||||||
|
action: "",
|
||||||
|
category: "",
|
||||||
|
params: []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_two
|
// MARK: - section_two
|
||||||
|
|
||||||
func logScreenS2DefOne() {
|
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
|
// Given
|
||||||
let sectionOne = AnalyticsCategory(id: "section_one")
|
let sectionOne = AnalyticsCategory(id: "section_one")
|
||||||
sectionOne.definitions = [
|
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_one", path: "s1_def_one/", name: "s1 def one", type: .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_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionTwo = AnalyticsCategory(id: "section_two")
|
let sectionTwo = AnalyticsCategory(id: "section_two")
|
||||||
sectionTwo.definitions = [
|
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_one", path: "s2_def_one/", name: "s2 def one", type: .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_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionThree = AnalyticsCategory(id: "section_three")
|
let sectionThree = AnalyticsCategory(id: "section_three")
|
||||||
sectionThree.definitions = [
|
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_one", path: "s3_def_one/", name: "s3 def one", type: .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_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
// When
|
// When
|
||||||
@ -163,14 +225,18 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
let expect = """
|
let expect = """
|
||||||
// Generated by ResgenSwift.Analytics 1.2
|
// Generated by ResgenSwift.Analytics 1.2
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import MatomoTracker
|
import MatomoTracker
|
||||||
|
|
||||||
// MARK: - Protocol
|
// MARK: - Protocol
|
||||||
|
|
||||||
protocol AnalyticsManagerProtocol {
|
protocol AnalyticsManagerProtocol {
|
||||||
func logScreen(name: String, path: String)
|
func logScreen(name: String, path: String)
|
||||||
func logEvent(name: String)
|
func logEvent(
|
||||||
|
name: String,
|
||||||
|
action: String,
|
||||||
|
category: String,
|
||||||
|
params: [String: Any]?
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Matomo
|
// MARK: - Matomo
|
||||||
@ -186,7 +252,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
init(siteId: String, url: String) {
|
init(siteId: String, url: String) {
|
||||||
debugPrint("[Matomo service] Server URL: \\(url)")
|
debugPrint("[Matomo service] Server URL: \\(url)")
|
||||||
debugPrint("[Matomo service] Site ID: \\(siteId)")
|
debugPrint("[Matomo service] Site ID: \\(siteId)")
|
||||||
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
|
tracker = MatomoTracker(
|
||||||
|
siteId: siteId,
|
||||||
|
baseURL: URL(string: url)!
|
||||||
|
)
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
tracker.dispatchInterval = 5
|
tracker.dispatchInterval = 5
|
||||||
@ -205,6 +274,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
func logScreen(name: String, path: String) {
|
func logScreen(name: String, path: String) {
|
||||||
guard !tracker.isOptedOut else { return }
|
guard !tracker.isOptedOut else { return }
|
||||||
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
|
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
|
||||||
|
|
||||||
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
|
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
|
||||||
tracker.track(
|
tracker.track(
|
||||||
view: [name],
|
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 }
|
guard !tracker.isOptedOut else { return }
|
||||||
|
|
||||||
tracker.track(
|
tracker.track(
|
||||||
eventWithCategory: "category",
|
eventWithCategory: category,
|
||||||
action: "action",
|
action: action,
|
||||||
name: name,
|
name: name,
|
||||||
number: nil,
|
number: nil,
|
||||||
url: nil
|
url: nil
|
||||||
@ -237,40 +313,70 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
// MARK: - Methods
|
// MARK: - Methods
|
||||||
|
|
||||||
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
|
func setAnalyticsEnabled(_ enable: Bool) {
|
||||||
|
isEnabled = enable
|
||||||
|
}
|
||||||
|
|
||||||
func configure(siteId: String, url: String) {
|
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) {
|
private func logScreen(name: String, path: String) {
|
||||||
guard isEnabled else { return }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logScreen(name: name, path: path)
|
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 }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logEvent(name: name)
|
manager.logEvent(
|
||||||
|
name: name,
|
||||||
|
action: action,
|
||||||
|
category: category,
|
||||||
|
params: params
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_one
|
// MARK: - section_one
|
||||||
|
|
||||||
func logScreenS1DefOne() {
|
func logScreenS1DefOne() {
|
||||||
logScreen(name: "s1 def one", path: "s1_def_one/")
|
logScreen(
|
||||||
|
name: "s1 def one",
|
||||||
|
path: "s1_def_one/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func logEventS1DefTwo() {
|
func logEventS1DefTwo() {
|
||||||
logEvent(name: "s1 def two")
|
logEvent(
|
||||||
|
name: "s1 def two",
|
||||||
|
action: "test",
|
||||||
|
category: "test",
|
||||||
|
params: []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_two
|
// MARK: - section_two
|
||||||
|
|
||||||
func logScreenS2DefOne() {
|
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
|
// Given
|
||||||
let sectionOne = AnalyticsCategory(id: "section_one")
|
let sectionOne = AnalyticsCategory(id: "section_one")
|
||||||
sectionOne.definitions = [
|
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_one", path: "s1_def_one/", name: "s1 def one", type: .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_two", action: "test", category: "test", name: "s1 def two", type: .event, tags: ["ios", "iosonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionTwo = AnalyticsCategory(id: "section_two")
|
let sectionTwo = AnalyticsCategory(id: "section_two")
|
||||||
sectionTwo.definitions = [
|
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_one", path: "s2_def_one/", name: "s2 def one", type: .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_two", action: "test", category: "test", name: "s2 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
let sectionThree = AnalyticsCategory(id: "section_three")
|
let sectionThree = AnalyticsCategory(id: "section_three")
|
||||||
sectionThree.definitions = [
|
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_one", path: "s3_def_one/", name: "s3 def one", type: .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_two", action: "test", category: "test", name: "s3 def two", type: .event, tags: ["droid","droidonly"]),
|
||||||
]
|
]
|
||||||
|
|
||||||
// When
|
// When
|
||||||
@ -312,7 +418,6 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
let expect = """
|
let expect = """
|
||||||
// Generated by ResgenSwift.Analytics 1.2
|
// Generated by ResgenSwift.Analytics 1.2
|
||||||
|
|
||||||
import UIKit
|
|
||||||
import MatomoTracker
|
import MatomoTracker
|
||||||
import Firebase
|
import Firebase
|
||||||
|
|
||||||
@ -320,7 +425,12 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
protocol AnalyticsManagerProtocol {
|
protocol AnalyticsManagerProtocol {
|
||||||
func logScreen(name: String, path: String)
|
func logScreen(name: String, path: String)
|
||||||
func logEvent(name: String)
|
func logEvent(
|
||||||
|
name: String,
|
||||||
|
action: String,
|
||||||
|
category: String,
|
||||||
|
params: [String: Any]?
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Matomo
|
// MARK: - Matomo
|
||||||
@ -336,7 +446,10 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
init(siteId: String, url: String) {
|
init(siteId: String, url: String) {
|
||||||
debugPrint("[Matomo service] Server URL: \\(url)")
|
debugPrint("[Matomo service] Server URL: \\(url)")
|
||||||
debugPrint("[Matomo service] Site ID: \\(siteId)")
|
debugPrint("[Matomo service] Site ID: \\(siteId)")
|
||||||
tracker = MatomoTracker(siteId: siteId, baseURL: URL(string: url)!)
|
tracker = MatomoTracker(
|
||||||
|
siteId: siteId,
|
||||||
|
baseURL: URL(string: url)!
|
||||||
|
)
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
tracker.dispatchInterval = 5
|
tracker.dispatchInterval = 5
|
||||||
@ -355,6 +468,7 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
func logScreen(name: String, path: String) {
|
func logScreen(name: String, path: String) {
|
||||||
guard !tracker.isOptedOut else { return }
|
guard !tracker.isOptedOut else { return }
|
||||||
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
|
guard let trackerUrl = tracker.contentBase?.absoluteString else { return }
|
||||||
|
|
||||||
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
|
let urlString = URL(string: "\\(trackerUrl)" + "/" + "\\(path)" + "iOS")
|
||||||
tracker.track(
|
tracker.track(
|
||||||
view: [name],
|
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 }
|
guard !tracker.isOptedOut else { return }
|
||||||
|
|
||||||
tracker.track(
|
tracker.track(
|
||||||
eventWithCategory: "category",
|
eventWithCategory: category,
|
||||||
action: "action",
|
action: action,
|
||||||
name: name,
|
name: name,
|
||||||
number: nil,
|
number: nil,
|
||||||
url: nil
|
url: nil
|
||||||
@ -378,15 +498,37 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
class FirebaseAnalyticsManager: AnalyticsManagerProtocol {
|
||||||
func logScreen(name: String, path: String) {
|
func logScreen(name: String, path: String) {
|
||||||
Analytics.logEvent(AnalyticsEventScreenView, parameters: [AnalyticsParameterScreenName: name])
|
|
||||||
}
|
|
||||||
|
|
||||||
func logEvent(name: String) {
|
|
||||||
var parameters = [
|
var parameters = [
|
||||||
AnalyticsParameterValue: name
|
AnalyticsParameterScreenName: name
|
||||||
]
|
]
|
||||||
|
|
||||||
Analytics.logEvent(AnalyticsEventSelectContent, parameters: parameters)
|
Analytics.logEvent(
|
||||||
|
AnalyticsEventScreenView,
|
||||||
|
parameters: parameters
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
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(
|
||||||
|
name,
|
||||||
|
parameters: parameters
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -403,41 +545,71 @@ final class AnalyticsGeneratorTests: XCTestCase {
|
|||||||
|
|
||||||
// MARK: - Methods
|
// MARK: - Methods
|
||||||
|
|
||||||
func setAnalyticsEnabled(_ enable: Bool) { isEnabled = enable }
|
func setAnalyticsEnabled(_ enable: Bool) {
|
||||||
|
isEnabled = enable
|
||||||
|
}
|
||||||
|
|
||||||
func configure(siteId: String, url: String) {
|
func configure(siteId: String, url: String) {
|
||||||
managers.append(MatomoAnalyticsManager(siteId: siteId, url: url))
|
managers.append(
|
||||||
|
MatomoAnalyticsManager(
|
||||||
|
siteId: siteId,
|
||||||
|
url: url
|
||||||
|
)
|
||||||
|
)
|
||||||
managers.append(FirebaseAnalyticsManager())
|
managers.append(FirebaseAnalyticsManager())
|
||||||
}
|
}
|
||||||
|
|
||||||
private func logScreen(name: String, path: String) {
|
private func logScreen(name: String, path: String) {
|
||||||
guard isEnabled else { return }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logScreen(name: name, path: path)
|
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 }
|
guard isEnabled else { return }
|
||||||
|
|
||||||
managers.forEach { manager in
|
managers.forEach { manager in
|
||||||
manager.logEvent(name: name)
|
manager.logEvent(
|
||||||
|
name: name,
|
||||||
|
action: action,
|
||||||
|
category: category,
|
||||||
|
params: params
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_one
|
// MARK: - section_one
|
||||||
|
|
||||||
func logScreenS1DefOne() {
|
func logScreenS1DefOne() {
|
||||||
logScreen(name: "s1 def one", path: "s1_def_one/")
|
logScreen(
|
||||||
|
name: "s1 def one",
|
||||||
|
path: "s1_def_one/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func logEventS1DefTwo() {
|
func logEventS1DefTwo() {
|
||||||
logEvent(name: "s1 def two")
|
logEvent(
|
||||||
|
name: "s1 def two",
|
||||||
|
action: "test",
|
||||||
|
category: "test",
|
||||||
|
params: []
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - section_two
|
// MARK: - section_two
|
||||||
|
|
||||||
func logScreenS2DefOne() {
|
func logScreenS2DefOne() {
|
||||||
logScreen(name: "s2 def one", path: "s2_def_one/")
|
logScreen(
|
||||||
|
name: "s2 def one",
|
||||||
|
path: "s2_def_one/"
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user