From 217df5f1128ee4bedbdea9a756efac2fa5235cd7 Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Thu, 2 Oct 2025 19:57:46 +0000 Subject: [PATCH 1/4] update character limits for event parameters --- .../schemas/eventTypes/custom.spec.ts | 27 +++++++++ .../schemas/eventTypes/custom.ts | 3 +- .../schemas/schemaBuilder.spec.ts | 55 +++++++++++++++++++ .../ValidateEvent/schemas/schemaBuilder.ts | 3 +- 4 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts index 364245b75..0314cf1a3 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts @@ -43,4 +43,31 @@ describe("customSchema", () => { expect(validator.isValid(validInput)).toEqual(false) }) + + test("allows session_id to exceed 100 characters", () => { + const longString = "a".repeat(101) + const validInput = { session_id: longString } + + let validator = new Validator(customSchema) + + expect(validator.isValid(validInput)).toEqual(true) + }) + + test("allows session_number to exceed 100 characters", () => { + const longString = "a".repeat(101) + const validInput = { session_number: longString } + + let validator = new Validator(customSchema) + + expect(validator.isValid(validInput)).toEqual(true) + }) + + test("does not allow other properties to exceed 100 characters", () => { + const longString = "a".repeat(101) + const invalidInput = { other_param: longString } + + let validator = new Validator(customSchema) + + expect(validator.isValid(invalidInput)).toEqual(false) + }) }) \ No newline at end of file diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts index 1a4ced143..698cd417a 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts @@ -14,7 +14,8 @@ export const customSchema = { "required": [], "maxProperties": 25, "patternProperties": { - ".": { + "^(session_id|session_number)$": {}, + "^(?!(session_id|session_number)$).*$": { "maxLength": 100 } }, diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts new file mode 100644 index 000000000..df8d67c8c --- /dev/null +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts @@ -0,0 +1,55 @@ +import "jest" +import { Validator } from "../validator" +import { buildEvents } from "./schemaBuilder" + +describe("schemaBuilder", () => { + const schema = { + allOf: buildEvents(), + } + + const longString = "a".repeat(101) + + it("allows session_id to exceed 100 characters for recommended events", () => { + const validator = new Validator(schema) + const event = { + name: "login", + params: { + session_id: longString, + }, + } + expect(validator.isValid(event)).toBe(true) + }) + + it("allows session_number to exceed 100 characters for recommended events", () => { + const validator = new Validator(schema) + const event = { + name: "login", + params: { + session_number: longString, + }, + } + expect(validator.isValid(event)).toBe(true) + }) + + it("does not allow other properties to exceed 100 characters for recommended events", () => { + const validator = new Validator(schema) + const event = { + name: "login", + params: { + method: longString, + }, + } + expect(validator.isValid(event)).toBe(false) + }) + + it("validates a correct payload", () => { + const validator = new Validator(schema) + const event = { + name: "login", + params: { + method: "google", + }, + } + expect(validator.isValid(event)).toBe(true) + }) +}) diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts index ce77b623f..372fd5463 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts @@ -39,7 +39,8 @@ export const buildEvents = () => { 40 }, "patternProperties": { - ".": { + "^(session_id|session_number)$": {}, + "^(?!(session_id|session_number)$).*$": { "maxLength": 100 } } From 8fb5d5b67b3fee7882759ec848d0c182613515c4 Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Thu, 2 Oct 2025 20:07:14 +0000 Subject: [PATCH 2/4] update wording in tests --- .../ValidateEvent/schemas/eventTypes/custom.spec.ts | 2 +- .../EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts index 0314cf1a3..b8b835286 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts @@ -62,7 +62,7 @@ describe("customSchema", () => { expect(validator.isValid(validInput)).toEqual(true) }) - test("does not allow other properties to exceed 100 characters", () => { + test("does not allow other parameter values to exceed 100 characters", () => { const longString = "a".repeat(101) const invalidInput = { other_param: longString } diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts index df8d67c8c..a1aa88cb4 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts @@ -31,7 +31,7 @@ describe("schemaBuilder", () => { expect(validator.isValid(event)).toBe(true) }) - it("does not allow other properties to exceed 100 characters for recommended events", () => { + it("does not allow other parameter values to exceed 100 characters for recommended events", () => { const validator = new Validator(schema) const event = { name: "login", From 4e8bc01cb334b2b59cdd810fd65205d0235eea14 Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Tue, 7 Oct 2025 18:13:55 +0000 Subject: [PATCH 3/4] remove character limit validation on event parameter values --- .../schemas/eventTypes/custom.spec.ts | 27 --------- .../schemas/eventTypes/custom.ts | 6 -- .../schemas/schemaBuilder.spec.ts | 55 ------------------- .../ValidateEvent/schemas/schemaBuilder.ts | 6 -- 4 files changed, 94 deletions(-) delete mode 100644 src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts index b8b835286..364245b75 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.spec.ts @@ -43,31 +43,4 @@ describe("customSchema", () => { expect(validator.isValid(validInput)).toEqual(false) }) - - test("allows session_id to exceed 100 characters", () => { - const longString = "a".repeat(101) - const validInput = { session_id: longString } - - let validator = new Validator(customSchema) - - expect(validator.isValid(validInput)).toEqual(true) - }) - - test("allows session_number to exceed 100 characters", () => { - const longString = "a".repeat(101) - const validInput = { session_number: longString } - - let validator = new Validator(customSchema) - - expect(validator.isValid(validInput)).toEqual(true) - }) - - test("does not allow other parameter values to exceed 100 characters", () => { - const longString = "a".repeat(101) - const invalidInput = { other_param: longString } - - let validator = new Validator(customSchema) - - expect(validator.isValid(invalidInput)).toEqual(false) - }) }) \ No newline at end of file diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts index 698cd417a..9cf0ea514 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/eventTypes/custom.ts @@ -13,12 +13,6 @@ export const customSchema = { "type": "object", "required": [], "maxProperties": 25, - "patternProperties": { - "^(session_id|session_number)$": {}, - "^(?!(session_id|session_number)$).*$": { - "maxLength": 100 - } - }, "propertyNames": { "pattern": "^(?!ga_|google_|firebase_)[A-Za-z][A-Za-z0-9_]*$", "maxLength": 40 diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts deleted file mode 100644 index a1aa88cb4..000000000 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.spec.ts +++ /dev/null @@ -1,55 +0,0 @@ -import "jest" -import { Validator } from "../validator" -import { buildEvents } from "./schemaBuilder" - -describe("schemaBuilder", () => { - const schema = { - allOf: buildEvents(), - } - - const longString = "a".repeat(101) - - it("allows session_id to exceed 100 characters for recommended events", () => { - const validator = new Validator(schema) - const event = { - name: "login", - params: { - session_id: longString, - }, - } - expect(validator.isValid(event)).toBe(true) - }) - - it("allows session_number to exceed 100 characters for recommended events", () => { - const validator = new Validator(schema) - const event = { - name: "login", - params: { - session_number: longString, - }, - } - expect(validator.isValid(event)).toBe(true) - }) - - it("does not allow other parameter values to exceed 100 characters for recommended events", () => { - const validator = new Validator(schema) - const event = { - name: "login", - params: { - method: longString, - }, - } - expect(validator.isValid(event)).toBe(false) - }) - - it("validates a correct payload", () => { - const validator = new Validator(schema) - const event = { - name: "login", - params: { - method: "google", - }, - } - expect(validator.isValid(event)).toBe(true) - }) -}) diff --git a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts index 372fd5463..d85f033e3 100644 --- a/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts +++ b/src/components/ga4/EventBuilder/ValidateEvent/schemas/schemaBuilder.ts @@ -37,12 +37,6 @@ export const buildEvents = () => { "^(?!ga_|google_|firebase_)[A-Za-z][A-Za-z0-9_]*$", "maxLength": 40 - }, - "patternProperties": { - "^(session_id|session_number)$": {}, - "^(?!(session_id|session_number)$).*$": { - "maxLength": 100 - } } } } From 055a90ed41ff617a133480067f850a2f5e5a04f0 Mon Sep 17 00:00:00 2001 From: Lindsey Volta Date: Tue, 7 Oct 2025 18:49:04 +0000 Subject: [PATCH 4/4] remove commented out code --- src/components/ga4/EventBuilder/index.spec.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/ga4/EventBuilder/index.spec.tsx b/src/components/ga4/EventBuilder/index.spec.tsx index d13857a28..89b331eab 100644 --- a/src/components/ga4/EventBuilder/index.spec.tsx +++ b/src/components/ga4/EventBuilder/index.spec.tsx @@ -176,13 +176,11 @@ describe("Event Builder", () => { // event categories so if it's broken, it's probably fine to just // change the expected values. const ecInput = within(eventCategory).getByRole("combobox") - //eventCategory.focus() renderer.fireEvent.change(ecInput, { target: { value: "All apps" }, }) const enInput = within(eventName).getByRole("combobox") - //eventCategory.focus() renderer.fireEvent.change(enInput, { target: { value: "campaign_details" }, }) @@ -227,4 +225,4 @@ describe("Event Builder", () => { expect(adImpression).toBeNull() }) }) -}) +}) \ No newline at end of file