-
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 7cb1c00
Showing
50 changed files
with
431 additions
and
142 deletions.
There are no files selected for viewing
85 changes: 85 additions & 0 deletions
85
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,85 @@ | ||
/** | ||
* `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 | ||
// if the options are a string, set it as the snackbar text | ||
// and default autoDismiss to true | ||
if (typeof options === 'string') { | ||
set(mocks.snackbarOptions, { text: options, autoDismiss: true }); | ||
} else { | ||
set(mocks.snackbarOptions, options); | ||
} | ||
}; | ||
|
||
const clearSnackbar = () => { | ||
set(mocks.snackbarIsVisible, false); | ||
set(mocks.snackbarOptions, {}); | ||
}; | ||
|
||
const setSnackbarText = text => { | ||
set(mocks.snackbarOptions, { ...get(mocks.snackbarOptions), text }); | ||
}; | ||
|
||
return { | ||
createSnackbar, | ||
clearSnackbar, | ||
setSnackbarText, | ||
...mocks, | ||
}; | ||
} | ||
|
||
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,49 @@ | ||
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 | ||
// if the options are a string, set it as the snackbar text | ||
// and default autoDismiss to true | ||
if (typeof options === 'string') { | ||
set(snackbarOptions, { text: options, autoDismiss: true }); | ||
} else { | ||
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.