Some checks failed
Lock Threads / action (push) Has been cancelled
Mark stale issues and pull requests / stale (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot EE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot EE docker images / merge (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Publish Chatwoot CE docker images / build (linux/arm64, ubuntu-22.04-arm) (push) Has been cancelled
Publish Chatwoot CE docker images / merge (push) Has been cancelled
Run Chatwoot CE spec / lint-backend (push) Has been cancelled
Run Chatwoot CE spec / lint-frontend (push) Has been cancelled
Run Chatwoot CE spec / frontend-tests (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (0, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (1, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (10, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (11, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (12, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (13, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (14, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (15, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (2, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (3, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (4, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (5, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (6, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (7, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (8, 16) (push) Has been cancelled
Run Chatwoot CE spec / backend-tests (9, 16) (push) Has been cancelled
Run Linux nightly installer / nightly (push) Has been cancelled
- Add Logistics component with progress tracking - Add OrderDetail component for order information - Support data-driven steps and actions - Add blue color scale to widget SCSS - Fix node overflow and progress bar rendering issues - Add English translations for dashboard components Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
62 lines
2.0 KiB
JavaScript
62 lines
2.0 KiB
JavaScript
import { ref } from 'vue';
|
|
import { useReportMetrics } from '../useReportMetrics';
|
|
import { useMapGetter } from 'dashboard/composables/store';
|
|
import { summary, botSummary } from './fixtures/reportFixtures';
|
|
|
|
vi.mock('dashboard/composables/store');
|
|
vi.mock('@chatwoot/utils', () => ({
|
|
formatTime: vi.fn(time => `formatted_${time}`),
|
|
}));
|
|
|
|
describe('useReportMetrics', () => {
|
|
beforeEach(() => {
|
|
vi.clearAllMocks();
|
|
useMapGetter.mockReturnValue(ref(summary));
|
|
});
|
|
|
|
it('calculates trend correctly', () => {
|
|
const { calculateTrend } = useReportMetrics();
|
|
|
|
expect(calculateTrend('conversations_count')).toBe(124900);
|
|
expect(calculateTrend('incoming_messages_count')).toBe(0);
|
|
expect(calculateTrend('avg_first_response_time')).toBe(123);
|
|
});
|
|
|
|
it('returns 0 for trend when previous value is not available', () => {
|
|
const { calculateTrend } = useReportMetrics();
|
|
|
|
expect(calculateTrend('non_existent_key')).toBe(0);
|
|
});
|
|
|
|
it('identifies average metric types correctly', () => {
|
|
const { isAverageMetricType } = useReportMetrics();
|
|
|
|
expect(isAverageMetricType('avg_first_response_time')).toBe(true);
|
|
expect(isAverageMetricType('avg_resolution_time')).toBe(true);
|
|
expect(isAverageMetricType('reply_time')).toBe(true);
|
|
expect(isAverageMetricType('conversations_count')).toBe(false);
|
|
});
|
|
|
|
it('displays metrics correctly for account', () => {
|
|
const { displayMetric } = useReportMetrics();
|
|
|
|
expect(displayMetric('conversations_count')).toBe('5,000');
|
|
expect(displayMetric('incoming_messages_count')).toBe('5');
|
|
});
|
|
|
|
it('displays the metric for bot', () => {
|
|
const customKey = 'getBotSummary';
|
|
useMapGetter.mockReturnValue(ref(botSummary));
|
|
const { displayMetric } = useReportMetrics(customKey);
|
|
|
|
expect(displayMetric('bot_resolutions_count')).toBe('10');
|
|
expect(displayMetric('bot_handoffs_count')).toBe('20');
|
|
});
|
|
|
|
it('handles non-existent metrics', () => {
|
|
const { displayMetric } = useReportMetrics();
|
|
|
|
expect(displayMetric('non_existent_key')).toBe('0');
|
|
});
|
|
});
|