Skip to content

Commit

Permalink
test: move mockedLoader around
Browse files Browse the repository at this point in the history
  • Loading branch information
posva committed Feb 24, 2024
1 parent d9522a2 commit efbc34f
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 22 deletions.
2 changes: 1 addition & 1 deletion playground/src/pages/users/query.[id].vue
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<script lang="ts">
// FIXME: should be able to import from vue-router or auto import
import { defineQueryLoader } from 'unplugin-vue-router/runtime'
import { defineQueryLoader } from 'unplugin-vue-router/data-loaders/vue-query'
import {
type TypesConfig,
Expand Down
21 changes: 20 additions & 1 deletion src/data-loaders/defineLoader.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
*/
import { App, defineComponent } from 'vue'
import {
DefineDataLoaderOptions,
INITIAL_DATA_KEY,
SERVER_INITIAL_DATA_KEY,
defineBasicLoader,
Expand All @@ -19,16 +20,34 @@ import {
import {
DataLoaderPlugin,
DataLoaderPluginOptions,
NavigationResult,
UseDataLoader,
setCurrentContext,
} from 'unplugin-vue-router/runtime'
import { testDefineLoader } from '../../tests/data-loaders'
import { getRouter } from 'vue-router-mock'
import { enableAutoUnmount, mount } from '@vue/test-utils'
import RouterViewMock from '../../tests/data-loaders/RouterViewMock.vue'
import { mockedLoader } from '../../tests/utils'
import { mockPromise } from '../../tests/utils'
import { RouteLocationNormalizedLoaded } from 'vue-router'

function mockedLoader<T = string | NavigationResult>(
// boolean is easier to handle for router mock
options?: DefineDataLoaderOptions<boolean>
) {
const [spy, resolve, reject] = mockPromise<T, unknown>(
// not correct as T could be something else
'ok' as T,
new Error('ko')
)
return {
spy,
resolve,
reject,
loader: defineBasicLoader(async () => await spy(), options),
}
}

describe(
'defineBasicLoader',
// change it during dev while working on features
Expand Down
21 changes: 19 additions & 2 deletions src/data-loaders/navigation-guard.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* @vitest-environment happy-dom
*/
import { App, createApp, defineComponent } from 'vue'
import { defineBasicLoader } from './defineLoader'
import { DefineDataLoaderOptions, defineBasicLoader } from './defineLoader'
import {
afterAll,
afterEach,
Expand All @@ -20,13 +20,30 @@ import {
DataLoaderPlugin,
NavigationResult,
} from 'unplugin-vue-router/runtime'
import { mockedLoader } from '../../tests/utils'
import { mockPromise } from '../../tests/utils'
import {
useDataOne,
useDataTwo,
} from '../../tests/data-loaders/ComponentWithLoader.vue'
import type { NavigationFailure } from 'vue-router'

function mockedLoader<T = string | NavigationResult>(
// boolean is easier to handle for router mock
options?: DefineDataLoaderOptions<boolean>
) {
const [spy, resolve, reject] = mockPromise<T, unknown>(
// not correct as T could be something else
'ok' as T,
new Error('ko')
)
return {
spy,
resolve,
reject,
loader: defineBasicLoader(async () => await spy(), options),
}
}

describe('navigation-guard', () => {
let globalApp: App | undefined

Expand Down
18 changes: 0 additions & 18 deletions tests/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,21 +38,3 @@ export function mockPromise<Resolved, Err>(resolved: Resolved, rejected?: Err) {

return [spy, resolve, reject] as const
}

// FIXME: shouldn't be using defineBasicLoader
export function mockedLoader<T = string | NavigationResult>(
// boolean is easier to handle for router mock
options?: DefineDataLoaderOptions<boolean>
) {
const [spy, resolve, reject] = mockPromise<T, unknown>(
// not correct as T could be something else
'ok' as T,
new Error('ko')
)
return {
spy,
resolve,
reject,
loader: defineBasicLoader(async () => await spy(), options),
}
}

0 comments on commit efbc34f

Please sign in to comment.