-
Notifications
You must be signed in to change notification settings - Fork 647
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
creating useSnackbar composable and replacing existing logic with it
- Loading branch information
1 parent
6e61470
commit 24627da
Showing
20 changed files
with
248 additions
and
54 deletions.
There are no files selected for viewing
79 changes: 79 additions & 0 deletions
79
kolibri/core/assets/src/composables/__mocks__/useSnackbar.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
/** | ||
* `useSnackbar` composable function mock. | ||
* | ||
* If default values are sufficient for tests, | ||
* you only need call `jest.mock('<useSnackbar file path>')` | ||
* at the top of a test file. | ||
* | ||
* If you need to override some default values for some tests, | ||
* or if you need to inspect the state of the refs during tests, | ||
* you can import a helper function `useSnackbarMock` that accepts | ||
* an object with values to be overriden and use it together | ||
* with `mockImplementation` as follows: | ||
* | ||
* ``` | ||
* // eslint-disable-next-line import/named | ||
* import useSnackbar, { useSnackbarMock } from '<useSnackbar file path>'; | ||
* | ||
* jest.mock('<useSnackbar file path>') | ||
* describe('describe test', function () { | ||
* let snackbar = { snackbarIsVisible: ref(false) } | ||
* | ||
* beforeAll(() => { | ||
* useSnackbar.mockImplementation(() => useSnackbarMock(snackbar) | ||
* }) | ||
* | ||
* it('the test', () => { | ||
* expect(get(snackbar.snackbarIsVisible)).toEqual(false); | ||
* ) | ||
* }) | ||
* ``` | ||
*/ | ||
import { ref } from 'kolibri.lib.vueCompositionApi'; | ||
import { get, set } from '@vueuse/core'; | ||
|
||
const MOCK_DEFAULTS = { | ||
snackbarIsVisible: ref(false), | ||
snackbarOptions: ref({ | ||
text: '', | ||
autoDismiss: true, | ||
}), | ||
}; | ||
|
||
export function useSnackbarMock(overrides = {}) { | ||
const mocks = { | ||
...MOCK_DEFAULTS, | ||
...overrides, | ||
}; | ||
|
||
const createSnackbar = (options = {}) => { | ||
// reset | ||
set(mocks.snackbarIsVisible, false); | ||
set(mocks.snackbarOptions, {}); | ||
|
||
// set new options | ||
set(mocks.snackbarIsVisible, true); | ||
|
||
// options include text, autoDismiss, duration, actionText, actionCallback, | ||
// hideCallback, bottomPosition | ||
set(mocks.snackbarOptions, options); | ||
}; | ||
|
||
const clearSnackbar = () => { | ||
set(mocks.snackbarIsVisible, false); | ||
set(mocks.snackbarOptions, {}); | ||
}; | ||
|
||
const setSnackbarText = text => { | ||
set(mocks.snackbarOptions, { ...get(mocks.snackbarOptions), text }); | ||
}; | ||
|
||
return { | ||
...mocks, | ||
createSnackbar, | ||
clearSnackbar, | ||
setSnackbarText, | ||
}; | ||
} | ||
|
||
export default jest.fn(() => useSnackbarMock()); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
import { ref } from 'kolibri.lib.vueCompositionApi'; | ||
import { get, set } from '@vueuse/core'; | ||
|
||
const snackbarIsVisible = ref(false); | ||
const snackbarOptions = ref({ | ||
text: '', | ||
autoDismiss: true, | ||
}); | ||
|
||
export default function useSnackbar() { | ||
const createSnackbar = (options = {}) => { | ||
// reset | ||
set(snackbarIsVisible, false); | ||
set(snackbarOptions, {}); | ||
|
||
// set new options | ||
set(snackbarIsVisible, true); | ||
|
||
// options include text, autoDismiss, duration, actionText, actionCallback, | ||
// hideCallback, bottomPosition | ||
set(snackbarOptions, options); | ||
}; | ||
|
||
const clearSnackbar = () => { | ||
set(snackbarIsVisible, false); | ||
set(snackbarOptions, {}); | ||
}; | ||
|
||
const setSnackbarText = text => { | ||
set(snackbarOptions, { ...get(snackbarOptions), text }); | ||
}; | ||
|
||
return { | ||
// state | ||
snackbarIsVisible, | ||
snackbarOptions, | ||
|
||
// mutators | ||
createSnackbar, | ||
clearSnackbar, | ||
setSnackbarText, | ||
}; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.