Skip to content

Commit

Permalink
feat: added event class, added documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
ArtemKorneevGA committed Dec 30, 2023
1 parent 89a81f8 commit 21d5425
Show file tree
Hide file tree
Showing 119 changed files with 4,470 additions and 517 deletions.
392 changes: 45 additions & 347 deletions README.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion definitions/staging/example.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const sessionConfig = {
};

// Create new sessions model object
const sessions = new ga4.Sessions(sessionConfig);
const sessions = new ga4.Session(sessionConfig);

//
sessions.publish();
Expand Down
84 changes: 84 additions & 0 deletions definitions/tests/test_create_events.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
const ga4 = require("index");
const helpers = require("dataform-ga4-helpers");

// 2 events have the save event_timestamp, event_name, user_pseudo_id but engagement_time_msec is different

// 3 tests for each standard rule from sourceMediumRules
const { rows } = require("includes/tests/data/form_events_input.js");

const {
rows: resultSessionStart,
} = require("includes/tests/data/session_start_result.js");

const {
rows: resultLead,
} = require("includes/tests/data/generate_lead_result.js");

// Base session config
const eventConfig = {
database: constants.GA4_DATABASE,
dataset: dataform.projectConfig.vars.GA4_DATASET,
incrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

const sessionStartConfig = [
{
eventName: "session_start",
columns: [
{
name: "privacy_info.analytics_storage",
columnName: "analytics_storage",
},
],
eventParams: [{ name: "engagement_time_msec", type: "int" }],
},
{
eventName: "generate_lead",
eventParams: [
{ name: "value", type: "coalesce_float" },
{ name: "currency", type: "string" },
],
},
];

const ef = new ga4.EventFactory(eventConfig);
let events = ef.createEvents(sessionStartConfig);
events.forEach((event) => {
event.target = {
tableName: event.target.tableName + "_create_test",
};
event.getConfig = () => {
return {
type: "table",
schema: eventConfig.dataset,
};
};

event.publish();
});

// Run tests
test("test_create_session_start")
.dataset("session_start_create_test")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows(rows)
)
.expect(helpers.getSqlUnionAllFromRows(resultSessionStart));

test("test_create_generate_lead")
.dataset("generate_lead_create_test")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows(rows)
)
.expect(helpers.getSqlUnionAllFromRows(resultLead));
51 changes: 51 additions & 0 deletions definitions/tests/test_custom_event_id.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
const ga4 = require("index");
const helpers = require("dataform-ga4-helpers");

// 2 events have the save event_timestamp, event_name, user_pseudo_id but engagement_time_msec is different

// 3 tests for each standard rule from sourceMediumRules
const { rows } = require("includes/tests/data/custom_event_id_input.js");
const {
rows: result,
} = require("includes/tests/data/custom_event_id_result.js");

// Base session config
const eventConfig = {
database: constants.GA4_DATABASE,
dataset: dataform.projectConfig.vars.GA4_DATASET,
incrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

let event = new ga4.Event(eventConfig);
event.setEventName("form_visibility");

event.target = {
tableName: "custom_event_id_tbl",
};
// Unit testing working only for table type
event.getConfig = () => {
return {
type: "table",
schema: eventConfig.dataset,
};
};

event.getSqlUniqueId = () => {
return `(select value.int_value from unnest(event_params) where key = 'ga_session_id') as event_id`;
};
// Publish session model
event.publish();

// Run tests
test("test_custom_event_id")
.dataset("custom_event_id_tbl")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows(rows)
)
.expect(helpers.getSqlUnionAllFromRows(result));
50 changes: 50 additions & 0 deletions definitions/tests/test_custom_session_id.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
const ga4 = require("index");
const helpers = require("dataform-ga4-helpers");

const { rows } = require("includes/tests/data/source_medium_input.js");
const {
rows: result,
} = require("includes/tests/data/custom_session_id_result.js");

// Base session config
const sessionConfig = {
database: constants.GA4_DATABASE,
dataset: dataform.projectConfig.vars.GA4_DATASET,
incrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

const sessions = new ga4.Session(sessionConfig);

// Rename table
sessions.target = {
tableName: "custom_session_id",
};

// Unit testing working only for table type
sessions.getConfig = () => {
return {
type: "table",
};
};

sessions.getSqlUniqueId = () => {
return `(select value.int_value from unnest(event_params) where key = 'ga_session_id') as session_id`;
};

// Publish session model
sessions.publish();

// Run tests

test(`test_custom_session_id`)
.dataset("custom_session_id")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows([rows[0]])
)
.expect(helpers.getSqlUnionAllFromRows(result));
43 changes: 43 additions & 0 deletions definitions/tests/test_event_id.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
const ga4 = require("index");
const helpers = require("dataform-ga4-helpers");

// 2 events have the save event_timestamp, event_name, user_pseudo_id but engagement_time_msec is different

// 3 tests for each standard rule from sourceMediumRules
const { rows } = require("includes/tests/data/event_id_input.js");
const { rows: result } = require("includes/tests/data/event_id_result.js");

// Base session config
const eventConfig = {
database: constants.GA4_DATABASE,
dataset: dataform.projectConfig.vars.GA4_DATASET,
incrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

let event = new ga4.Event(eventConfig);
event.setEventName("form_visibility");

// Unit testing working only for table type
event.getConfig = () => {
return {
type: "table",
schema: eventConfig.dataset,
};
};

// Publish session model
event.publish();

// Run tests
test("test_event_id")
.dataset("form_visibility")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows(rows)
)
.expect(helpers.getSqlUnionAllFromRows(result));
54 changes: 54 additions & 0 deletions definitions/tests/test_event_id_with_event_param.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
const ga4 = require("index");
const helpers = require("dataform-ga4-helpers");

// 2 events have the save event_timestamp, event_name, user_pseudo_id but engagement_time_msec is different

// 3 tests for each standard rule from sourceMediumRules
const { rows } = require("includes/tests/data/form_events_input.js");
const {
rows: resultStart,
} = require("includes/tests/data/event_id_with_event_param_result.js");

// Base session config
const eventConfig = {
database: constants.GA4_DATABASE,
dataset: dataform.projectConfig.vars.GA4_DATASET,
incrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

const ef = new ga4.EventFactory(eventConfig);
// Just for testing purposes
ef.timestampEventParamName = "engagement_time_msec";

// let purchase = ef.createPurchase();
// purchase.publish();
let events = ef.createFormEvents();
// Unit testing working only for table type

const event = events.filter((ev) => ev._target.tableName === "form_submit")[0];

event.target = {
tableName: "form_submit_event_id_test",
};
event.getConfig = () => {
return {
type: "table",
schema: eventConfig.dataset,
};
};

event.publish();

// Run tests
test("test_event_id_with_event_param")
.dataset("form_submit_event_id_test")
.input(
{
database: constants.GA4_DATABASE,
schema: dataform.projectConfig.vars.GA4_DATASET,
name: dataform.projectConfig.vars.GA4_TABLE,
},
helpers.getSqlUnionAllFromRows([rows[0]])
)
.expect(helpers.getSqlUnionAllFromRows(resultStart));
19 changes: 18 additions & 1 deletion definitions/tests/test_event_step_where.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,23 @@ const sessionConfig = {
nonIncrementalTableEventStepWhere: "user_pseudo_id = '950658449.1697698986'",
};

const sessions = new ga4.Sessions(sessionConfig);
// const sessions = new ga4.Session(sessionConfig);

// // Rename table
// sessions.target = {
// tableName: "sessions_event_step_where",
// };

// // Unit testing working only for table type
// sessions.getConfig = () => {
// return {
// type: "table",
// schema: sessionConfig.dataset,
// tags: [sessionConfig.dataset],
// };
// };

const sessions = new ga4.Session(sessionConfig);

// Rename table
sessions.target = {
Expand All @@ -32,6 +48,7 @@ sessions.getConfig = () => {
};
};


// Publish session model
sessions.publish();

Expand Down
3 changes: 1 addition & 2 deletions definitions/tests/test_extended_preset.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ const sessionConfig = {
nonIncrementalTableName: dataform.projectConfig.vars.GA4_TABLE,
};

const sessions = new ga4.Sessions(sessionConfig);
const sessions = new ga4.Session(sessionConfig);

// Rename table
sessions.target = {
Expand All @@ -42,7 +42,6 @@ sessions.addQueryParameters([
{ name: "gclid", columnName: "gclid_url" },
]);


// Publish session model
sessions.publish();

Expand Down
Loading

0 comments on commit 21d5425

Please sign in to comment.