Apply recent hour pattern to client details
All checks were successful
Build and Deploy / build-and-deploy (push) Successful in 1m36s

This commit is contained in:
Cauê Faleiros
2026-07-01 15:05:47 -03:00
parent 27d2980b32
commit c738b804af
4 changed files with 82 additions and 17 deletions

View File

@@ -908,6 +908,14 @@ test('getClientDetailsAnalytics resolves legacy name tokens to the canonical pho
};
}
if (sql.includes('created_at >= NOW()')) {
return {
rows: [
{ hour: 9, order_count: 1 }
]
};
}
return {
rows: [
{
@@ -941,7 +949,7 @@ test('getClientDetailsAnalytics resolves legacy name tokens to the canonical pho
try {
const details = await getClientDetailsAnalytics(clientToken, { start: '2026-06-01', end: '2026-06-15' });
assert.equal(calls.length, 5);
assert.equal(calls.length, 6);
assert.match(calls[0].sql, /FROM client_identity_tokens/);
assert.deepEqual(calls[0].params, [clientToken]);
assert.match(calls[1].sql, /SELECT customer_key/);
@@ -952,10 +960,12 @@ test('getClientDetailsAnalytics resolves legacy name tokens to the canonical pho
assert.match(calls[3].sql, /data_pedido_date >= \$2::date/);
assert.match(calls[3].sql, /data_pedido_date <= \$3::date/);
assert.deepEqual(calls[3].params, ['(16) 99999-9999', '2026-06-01', '2026-06-15']);
assert.match(calls[4].sql, /created_at/);
assert.match(calls[4].sql, /data_pedido_date IS NOT NULL/);
assert.doesNotMatch(calls[4].sql, /data_pedido_date >=/);
assert.doesNotMatch(calls[4].sql, /data_pedido_date <=/);
assert.deepEqual(calls[4].params, ['(16) 99999-9999']);
assert.match(calls[5].sql, /created_at >= NOW\(\) - \(\$2::int \* INTERVAL '1 day'\)/);
assert.deepEqual(calls[5].params, ['(16) 99999-9999', 60]);
assert.equal(details.clientName, 'Cliente Sem Fone');
assert.equal(details.clientPhone, '(16) 99999-9999');
assert.equal(details.allTimeOrderCount, 3);
@@ -964,6 +974,9 @@ test('getClientDetailsAnalytics resolves legacy name tokens to the canonical pho
assert.equal(details.periodOrderCount, 1);
assert.equal(details.periodAverageTicket, 25);
assert.deepEqual(details.chartData, [{ date: '10-06-2026', value: 25 }]);
assert.equal(details.purchaseWeekdayRangeLabel, 'Todo período');
assert.equal(details.purchaseHourRangeLabel, 'Últimos 60 dias');
assert.deepEqual(details.purchaseHours[9], { label: '09h', value: 1 });
assert.equal(details.groupedOrders.length, 1);
assert.equal(details.groupedOrders[0].orderTotal, 25);
assert.equal(details.groupedOrders[0].items.length, 2);
@@ -995,6 +1008,15 @@ test('getClientDetailsAnalytics groups single-day spend chart by hour', async ()
};
}
if (sql.includes('created_at >= NOW()')) {
return {
rows: [
{ hour: 9, order_count: 1 },
{ hour: 18, order_count: 1 }
]
};
}
assert.deepEqual(params[0], '(16) 99999-9999');
return {
rows: [
@@ -1034,6 +1056,10 @@ test('getClientDetailsAnalytics groups single-day spend chart by hour', async ()
assert.equal(details.chartData.length, 24);
assert.deepEqual(details.chartData[9], { date: '09h', value: 20 });
assert.deepEqual(details.chartData[18], { date: '18h', value: 30 });
assert.deepEqual(details.purchaseHours[9], { label: '09h', value: 1 });
assert.deepEqual(details.purchaseHours[18], { label: '18h', value: 1 });
assert.equal(details.purchaseWeekdayRangeLabel, 'Todo período');
assert.equal(details.purchaseHourRangeLabel, 'Últimos 60 dias');
assert.equal(details.periodSpent, 50);
} finally {
pool.query = originalQuery;