README + add tests cases

This commit is contained in:
2026-04-29 03:25:57 -03:00
parent 8662a153fe
commit 728d56bb5b
8 changed files with 876 additions and 9 deletions

View File

@@ -144,6 +144,22 @@ functionTest(
assert.equal(quarter.toDate, "2026-05-31");
const weekYear = parseDefaultWeekYear(catalogs.scriptCatalog);
const firstWeek = fetchModule.resolveDateWindow({
week: "week 1",
"week-year": String(weekYear),
});
assert.equal(firstWeek.weekLabel, "W1");
assert.equal(firstWeek.fromDate, `${weekYear}-06-01`);
assert.equal(firstWeek.toDate, `${weekYear}-06-07`);
const lastWeek = fetchModule.resolveDateWindow({
week: "w53",
"week-year": String(weekYear),
});
assert.equal(lastWeek.weekLabel, "W53");
assert.equal(lastWeek.fromDate, `${weekYear + 1}-05-31`);
assert.equal(lastWeek.toDate, `${weekYear + 1}-05-31`);
const expectedWeek = parseWeekRow(catalogs.scriptCatalog, "W43");
const week = fetchModule.resolveDateWindow({
week: expectedWeek.weekLabel.toLowerCase(),
@@ -157,7 +173,15 @@ functionTest(
() => fetchModule.resolveDateWindow({ date: "2026-05-02", month: "2026-05" }),
/Use either --date/
);
return `single=${exact.fromDate}; month=${month.fromDate}..${month.toDate}; quarter=${quarter.fromDate}..${quarter.toDate}; week=${week.fromDate}..${week.toDate}; invalid-combo rejected`;
assert.throws(
() => fetchModule.resolveDateWindow({ week: "w54", "week-year": String(weekYear) }),
/Unsupported week token/
);
assert.throws(
() => fetchModule.resolveDateWindow({ "from-date": "2026-05-10", "to-date": "2026-05-02" }),
/from-date 2026-05-10 is after to-date 2026-05-02/
);
return `single=${exact.fromDate}; month=${month.fromDate}..${month.toDate}; quarter=${quarter.fromDate}..${quarter.toDate}; week=${week.fromDate}..${week.toDate}; first=${firstWeek.fromDate}; last=${lastWeek.fromDate}; invalid-combo/window rejected`;
});
functionTest(
@@ -229,7 +253,25 @@ functionTest(
}).join("\n");
assert.doesNotMatch(withoutCluster, /"Cluster" =/);
return "explicit cluster is applied; absent cluster preserves existing unfiltered geography behavior";
const ownerClauses = fetchModule.buildPrimaryOpportunityWhereClauses({
fromDateSql: "DATE '2026-05-01'",
toDateSql: "DATE '2026-05-31'",
statuses: ["Open"],
cluster: "Brazil",
ownerEmail: "seller.one@oracle.com",
}).join("\n");
assert.match(ownerClauses, /"Level 7 Territory Owner E-mail" = 'seller.one@oracle.com'/);
const ownerManagerClauses = fetchModule.buildPrimaryOpportunityWhereClauses({
fromDateSql: "DATE '2026-05-01'",
toDateSql: "DATE '2026-05-31'",
statuses: ["Open"],
ownerManagerEmail: "sales.manager@oracle.com",
}).join("\n");
assert.match(ownerManagerClauses, /"Level 2 Territory Owner E-mail" = 'sales.manager@oracle.com'/);
assert.match(ownerManagerClauses, /"Level 6 Territory Owner E-mail" = 'sales.manager@oracle.com'/);
return "explicit cluster is applied; absent cluster preserves existing unfiltered geography behavior; owner filters are applied";
});
functionTest(
@@ -255,6 +297,57 @@ functionTest(
return "manager/resource workload cluster is explicit when provided and Brazil by default";
});
functionTest(
"workload-close-window-sql",
"workload close-window SQL supports date, cluster, owner, manager, and forecast filters",
{
entrada: "buildWorkloadCloseWindowSql com owner, manager e forecast",
},
() => {
const sql = fetchModule.buildWorkloadCloseWindowSql({
fromDateSql: "DATE '2026-05-01'",
toDateSql: "DATE '2026-05-31'",
cluster: "Mexico",
ownerEmail: "territory.owner@oracle.com",
ownerManagerEmail: "territory.manager@oracle.com",
forecastTypes: ["Forecast"],
});
assert.match(sql, /"Cluster" = 'Mexico'/);
assert.match(sql, /"Revenue Line Close Date" >= DATE '2026-05-01'/);
assert.match(sql, /"Level 7 Territory Owner E-mail" = 'territory.owner@oracle.com'/);
assert.match(sql, /"Level 2 Territory Owner E-mail" = 'territory.manager@oracle.com'/);
assert.match(sql, /"Revenue Line Forecast Type Group" IN \('Forecast'\)/);
return "workload SQL includes geography, window, owner hierarchy, and forecast filters";
});
functionTest(
"manager-email-list-normalization",
"manager email list filters normalize short ids, merge flags, and deduplicate",
{
entrada: "resolveManagerEmailListFilter com lista mista + --manager-email duplicado",
},
() => {
const result = fetchModule.resolveManagerEmailListFilter({
"manager-email-list": " Resource.Manager.B , resource.manager.a@oracle.com, RESOURCE.MANAGER.B@ORACLE.COM ",
"manager-email": "resource.manager.a",
});
assert.deepEqual(result.managerEmails, [
"resource.manager.a@oracle.com",
"resource.manager.b@oracle.com",
]);
assert.equal(
result.managerEmailsSqlList,
"'resource.manager.a@oracle.com', 'resource.manager.b@oracle.com'"
);
assert.throws(
() => fetchModule.resolveManagerEmailListFilter({ "manager-email-list": " , " }),
/Pass --manager-email-list or --manager-email/
);
return `managerEmails=${result.managerEmails.join(",")}`;
});
functionTest(
"coverage-limit-cap",
"coverage enrichment limit never exceeds Oracle DV maximum",
@@ -297,7 +390,24 @@ functionTest(
assert.equal(explicitMonth.month, "2026-04");
assert.equal(explicitMonth.quarter, undefined);
assert.equal(explicitMonth.solution, expectedDefaults.solution);
return `quarter=${defaults.quarter}; solution=${defaults.solution}; revenueTypeGroup=${defaults["revenue-type-group"]}; explicitMonth preserved`;
const ownerWindowDefaults = fetchModule.applyCloseWindowIntentDefaults({
intent: "workloads-by-owner-close-window",
"owner-email": "territory.owner@oracle.com",
});
assert.equal(ownerWindowDefaults["from-date"], "today");
assert.equal(ownerWindowDefaults["to-date"], "+7d");
assert.equal(ownerWindowDefaults.quarter, undefined);
const explicitWeek = fetchModule.applyCloseWindowIntentDefaults({
intent: "workloads-by-owner-close-window",
"owner-email": "territory.owner@oracle.com",
week: "w43",
});
assert.equal(explicitWeek.week, "w43");
assert.equal(explicitWeek["from-date"], undefined);
assert.equal(explicitWeek["to-date"], undefined);
return `quarter=${defaults.quarter}; solution=${defaults.solution}; revenueTypeGroup=${defaults["revenue-type-group"]}; explicitMonth preserved; closeWindowDefaults=${ownerWindowDefaults["from-date"]}..${ownerWindowDefaults["to-date"]}`;
});
functionTest(
@@ -373,6 +483,44 @@ functionTest(
return "org-wide sem SEC_ARIA; my-team com SEC_ARIA; SR team usa levels 1..4; lead só quando explícito";
});
functionTest(
"scope-components-contract",
"scope descriptors expose component-level source and scope details",
{
entrada: "buildIntentScopeDescriptor para mixed current-team e workload manager/resource",
},
() => {
const mixed = fetchModule.buildIntentScopeDescriptor(
"opportunities-current-team-close-window",
{ view: "opportunities-close-window" }
);
assert.equal(mixed.scopeMode, "mixed-consistent");
assert.equal(mixed.preserveUnmatchedRows, true);
assert.deepEqual(
mixed.components.map((component) => [component.name, component.scope]),
[
["commercialRows", "org-wide"],
["resourceCoverage", "my-team-only"],
]
);
assert.match(mixed.explanation, /Rows without a resource match stay/);
const orgWide = fetchModule.buildIntentScopeDescriptor(
"workloads-by-manager-resource-close-window",
{ view: "opportunities-close-window" }
);
assert.equal(orgWide.scopeMode, "org-wide");
assert.deepEqual(
orgWide.components.map((component) => [component.name, component.scope]),
[
["commercialRows", "org-wide"],
["managerResourceAllocation", "org-wide"],
]
);
assert.match(orgWide.explanation, /Manager\/resource allocation: org-wide/);
return `mixed=${mixed.components.length}; orgWide=${orgWide.components.length}`;
});
functionTest(
"current-team-summary",
"current-team coverage summaries preserve unmatched commercial rows",