Skip to content

Commit

Permalink
chore: split count reset function in two
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanlescure committed Oct 14, 2021
1 parent 3f8917b commit 5737855
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 5 deletions.
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,9 @@ Then, simply call `MonoContext`'s static functions:

```ts
MonoContext.count('myCount');
MonoContext.getCount('myCount');
MonoContext.count('myOtherCount');

MonoContext.getCount('myCount'); // 1

MonoContext.setState({
some: 'data',
Expand All @@ -208,10 +210,15 @@ MonoContext.setState({
}
});

MonoContext.getStateValue('some'); // data

const {
some,
that,
} = MonoContext.getState();
} = MonoContext.getState(); // that == { is: 'useful' }

MonoContext.resetState();
MonoContext.resetCount('myOtherCount');
MonoContext.resetAllCounts();
```

## Type-safe states
Expand Down
9 changes: 8 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,13 @@ export default class MonoContext {

static getCount = (key: string): number => MonoContext._counts[key] || 0;

static resetCount = () => {
static resetCount = (key: string) => {
if (MonoContext._counts[key]) {
MonoContext._counts[key] = 0;
}
}

static resetAllCounts = () => {
MonoContext._counts = {};
}

Expand Down Expand Up @@ -84,6 +90,7 @@ export default class MonoContext {
count = MonoContext.count;
getCount = MonoContext.getCount;
resetCount = MonoContext.resetCount;
resetAllCounts = MonoContext.resetAllCounts;
setState = MonoContext.setState;
getState = MonoContext.getState;
getStateValue = MonoContext.getStateValue;
Expand Down
19 changes: 18 additions & 1 deletion src/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,32 @@ describe('MonoContext class', () => {
expect(MonoContext.getCount('resetMe')).toBe(0);

MonoContext.count('resetMe');
MonoContext.count('resetMeAfter');

MonoContext.resetState();

expect(MonoContext.getStateValue('reset')).toBeUndefined();
expect(MonoContext.getCount('resetMe')).toBe(1);

MonoContext.resetCount();
MonoContext.resetCount('resetMe');

expect(MonoContext.getStateValue('reset')).toBeUndefined();
expect(MonoContext.getCount('resetMe')).toBe(0);
expect(MonoContext.getCount('resetMeAfter')).toBe(1);

MonoContext.setState({
setMe: 'again',
});

expect(MonoContext.getStateValue('setMe')).toBe('again');
expect(MonoContext.getCount('resetMe')).toBe(0);
expect(MonoContext.getCount('resetMeAfter')).toBe(1);

MonoContext.resetAllCounts();

expect(MonoContext.getStateValue('setMe')).toBe('again');
expect(MonoContext.getCount('resetMe')).toBe(0);
expect(MonoContext.getCount('resetMeAfter')).toBe(0);
});

it('refuses to override reserved keys in the state and warns about it', () => {
Expand Down

0 comments on commit 5737855

Please sign in to comment.