PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.4.17
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.4.17
1.4.17 1.4.16 1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 1.3.49 1.3.48 All 180 releases
disco / backend / views / components / Analytics / __tests__ / utils / dateRangeSlice.test.js

dateRangeSlice.test.js in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.4.17, at backend/views/components/Analytics/__tests__/utils/dateRangeSlice.test.js

95 lines 2.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import dateRangeReducer, {
2 selectDateRange,
3 selectDateRangeParams,
4 setDateRange,
5 } from '../../features/dateRange/dateRangeSlice';
6
7 describe('dateRangeSlice', () => {
8 describe('Reducer', () => {
9 it('has correct initial state with defaults', () => {
10 const state = dateRangeReducer(undefined, { type: 'init' });
11
12 expect(state).toHaveProperty('startDate');
13 expect(state).toHaveProperty('endDate');
14 // Should be valid date strings
15 expect(state.startDate).toMatch(/^\d{4}-\d{2}-\d{2}$/);
16 expect(state.endDate).toMatch(/^\d{4}-\d{2}-\d{2}$/);
17 });
18
19 it('sets date range with setDateRange action', () => {
20 const state = dateRangeReducer(
21 undefined,
22 setDateRange({
23 startDate: '2025-01-01',
24 endDate: '2025-01-31',
25 })
26 );
27
28 expect(state.startDate).toBe('2025-01-01');
29 expect(state.endDate).toBe('2025-01-31');
30 });
31
32 it('overwrites previous date range', () => {
33 const state1 = dateRangeReducer(
34 undefined,
35 setDateRange({
36 startDate: '2025-01-01',
37 endDate: '2025-01-31',
38 })
39 );
40
41 const state2 = dateRangeReducer(
42 state1,
43 setDateRange({
44 startDate: '2025-06-01',
45 endDate: '2025-06-30',
46 })
47 );
48
49 expect(state2.startDate).toBe('2025-06-01');
50 expect(state2.endDate).toBe('2025-06-30');
51 });
52 });
53
54 describe('Selectors', () => {
55 const mockState = {
56 dateRange: {
57 startDate: '2025-03-01',
58 endDate: '2025-03-31',
59 },
60 };
61
62 it('selectDateRange returns the date range state', () => {
63 const result = selectDateRange(mockState);
64 expect(result).toEqual({
65 startDate: '2025-03-01',
66 endDate: '2025-03-31',
67 });
68 });
69
70 it('selectDateRangeParams returns API-formatted params', () => {
71 const result = selectDateRangeParams(mockState);
72 expect(result).toEqual({
73 date_from: '2025-03-01',
74 date_to: '2025-03-31',
75 });
76 });
77 });
78
79 describe('Default range', () => {
80 it('default end date is today', () => {
81 const state = dateRangeReducer(undefined, { type: 'init' });
82 const today = new Date().toISOString().split('T')[0];
83 expect(state.endDate).toBe(today);
84 });
85
86 it('default start date is 27 days before today', () => {
87 const state = dateRangeReducer(undefined, { type: 'init' });
88 const start = new Date();
89 start.setDate(start.getDate() - 27);
90 const expected = start.toISOString().split('T')[0];
91 expect(state.startDate).toBe(expected);
92 });
93 });
94 });
95