Skip to content

Commit

Permalink
feat(archiveTrackerReducer): add archive tracker reducer
Browse files Browse the repository at this point in the history
  • Loading branch information
Clm-Roig committed Apr 27, 2022
1 parent c170855 commit 614cbca
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/store/trackers/trackersSlice.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import { isSameDay } from 'date-fns';

import SliceStatus from '../../models/SliceStatus';
import TrackerStatus from '../../models/TrackerStatus';
import { testTracker1, testTracker1Id, testTracker2, testTracker2Id } from './FAKE_DATA';
import trackersReducer, {
archiveTracker,
completelyValidate,
createTracker,
customValidate,
Expand Down Expand Up @@ -112,4 +116,24 @@ describe('trackers reducer', () => {
expect(t2.dateHidden).toBeDefined();
});
});
describe('Archive a tracker', () => {
it('should archive a tracker and set its endDate', () => {
const finalState = trackersReducer(
{
error: {},
status: SliceStatus.idle,
trackers: [
{ ...testTracker1, status: TrackerStatus.active },
{ ...testTracker2, status: TrackerStatus.done }
]
},
archiveTracker(testTracker1.id)
);
const t1 = finalState.trackers.find((t) => t.id === testTracker1Id)!;
const t2 = finalState.trackers.find((t) => t.id === testTracker2Id)!;
expect(isSameDay(new Date(t1.endDate!), new Date())).toBeTruthy();
expect(t1.status).toBe(TrackerStatus.archived);
expect(t2.status).toBe(TrackerStatus.done);
});
});
});
9 changes: 9 additions & 0 deletions src/store/trackers/trackersSlice.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Completion from '../../models/Completion';
import SliceStatus from '../../models/SliceStatus';
import Tracker from '../../models/Tracker';
import TrackerEntry from '../../models/TrackerEntry';
import TrackerStatus from '../../models/TrackerStatus';

// ===== State

Expand Down Expand Up @@ -81,6 +82,13 @@ export const trackersSlice = createSlice({
if (idx !== -1) {
state.trackers[idx].dateHidden = undefined;
}
},
archiveTracker: (state, action: PayloadAction<Tracker['id']>) => {
const idx = state.trackers.findIndex((t) => t.id === action.payload);
if (idx !== -1) {
state.trackers[idx].endDate = new Date().toString();
state.trackers[idx].status = TrackerStatus.archived;
}
}
}
// The `extraReducers` field lets the slice handle actions defined elsewhere,
Expand All @@ -89,6 +97,7 @@ export const trackersSlice = createSlice({
});

export const {
archiveTracker,
createTracker,
completelyValidate,
customValidate,
Expand Down

0 comments on commit 614cbca

Please sign in to comment.