mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat: add shared analytics types, events, consent logic, and i18n strings
This commit is contained in:
@@ -0,0 +1,123 @@
|
||||
import { isConsentEnabled, shouldShowConsent } from "@ashim/shared";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
describe("shouldShowConsent", () => {
|
||||
it("returns false when server has analytics disabled", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: null,
|
||||
analyticsConsentShownAt: null,
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
false,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns true for a fresh user who has never been asked", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: null,
|
||||
analyticsConsentShownAt: null,
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("returns false when user already opted in", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: true,
|
||||
analyticsConsentShownAt: Date.now(),
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false when user explicitly declined", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: false,
|
||||
analyticsConsentShownAt: Date.now(),
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false when remind-at is in the future", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: null,
|
||||
analyticsConsentShownAt: Date.now() - 86400000,
|
||||
analyticsConsentRemindAt: Date.now() + 86400000,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns true when remind-at has passed", () => {
|
||||
expect(
|
||||
shouldShowConsent(
|
||||
{
|
||||
analyticsEnabled: null,
|
||||
analyticsConsentShownAt: Date.now() - 86400000 * 8,
|
||||
analyticsConsentRemindAt: Date.now() - 86400000,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
describe("isConsentEnabled", () => {
|
||||
it("returns false when server disabled", () => {
|
||||
expect(
|
||||
isConsentEnabled(
|
||||
{
|
||||
analyticsEnabled: true,
|
||||
analyticsConsentShownAt: Date.now(),
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
false,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns false when user has not consented", () => {
|
||||
expect(
|
||||
isConsentEnabled(
|
||||
{
|
||||
analyticsEnabled: null,
|
||||
analyticsConsentShownAt: null,
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("returns true when user opted in and server enabled", () => {
|
||||
expect(
|
||||
isConsentEnabled(
|
||||
{
|
||||
analyticsEnabled: true,
|
||||
analyticsConsentShownAt: Date.now(),
|
||||
analyticsConsentRemindAt: null,
|
||||
},
|
||||
true,
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user