snapshot of https://github.com/frappe/crm.git (develop, 2026-09-18; blobs > 131072B omitted)
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
Some checks failed
Frontend / Unit Tests & Coverage (push) Has been skipped
Regenerate POT file (translatable strings) / Regenerate POT file (develop) (push) Failing after 1m13s
Regenerate POT file (translatable strings) / Regenerate POT file (main-hotfix) (push) Failing after 6s
Server / Tests (frappe ${{ matrix.frappe-branch }}) (push) Has been skipped
Server / Resolve frappe matrix (push) Failing after 1s
Frontend / Lint (push) Failing after 1s
Frontend / Production Build (push) Failing after 1s
Server / Coverage Wrap Up (push) Has been skipped
Frontend / Coverage Wrap Up (push) Has been skipped
This commit is contained in:
69
frontend/tests/unit/viewsStoreDefaultView.test.js
Normal file
69
frontend/tests/unit/viewsStoreDefaultView.test.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
||||
import { createPinia, setActivePinia } from 'pinia'
|
||||
|
||||
let serverViews = []
|
||||
|
||||
vi.mock('frappe-ui', () => ({
|
||||
createResource(options) {
|
||||
const resource = { data: [], promise: Promise.resolve() }
|
||||
resource.reload = async () => {
|
||||
resource.data = options.transform(serverViews)
|
||||
}
|
||||
resource.reload()
|
||||
return resource
|
||||
},
|
||||
}))
|
||||
|
||||
function defaultView(route_name, name) {
|
||||
return { name, route_name, type: 'list', is_default: 1 }
|
||||
}
|
||||
|
||||
async function storeWithViews(views) {
|
||||
serverViews = views
|
||||
const { viewsStore } = await import('@/stores/views')
|
||||
return viewsStore()
|
||||
}
|
||||
|
||||
describe('viewsStore.getDefaultView', () => {
|
||||
beforeEach(() => {
|
||||
vi.resetModules()
|
||||
setActivePinia(createPinia())
|
||||
})
|
||||
|
||||
it('returns the default for the requested route', async () => {
|
||||
const store = await storeWithViews([
|
||||
defaultView('Deals', 'My Deals'),
|
||||
defaultView('Leads', 'My Leads'),
|
||||
])
|
||||
|
||||
expect(store.getDefaultView('Deals').name).toBe('My Deals')
|
||||
expect(store.getDefaultView('Contacts')).toBeNull()
|
||||
})
|
||||
|
||||
it('picks the home default by fixed route priority, not response order', async () => {
|
||||
const store = await storeWithViews([
|
||||
defaultView('Tasks', 'My Tasks'),
|
||||
defaultView('Deals', 'My Deals'),
|
||||
defaultView('Leads', 'My Leads'),
|
||||
])
|
||||
|
||||
expect(store.getDefaultView().name).toBe('My Leads')
|
||||
})
|
||||
|
||||
it('falls back to sorted custom routes when no known route has a default', async () => {
|
||||
const store = await storeWithViews([
|
||||
defaultView('Zeta', 'Zeta View'),
|
||||
defaultView('Alpha', 'Alpha View'),
|
||||
])
|
||||
|
||||
expect(store.getDefaultView().name).toBe('Alpha View')
|
||||
})
|
||||
|
||||
it('returns null when no default exists', async () => {
|
||||
const store = await storeWithViews([
|
||||
{ name: 'Plain', route_name: 'Leads', type: 'list', is_default: 0 },
|
||||
])
|
||||
|
||||
expect(store.getDefaultView()).toBeNull()
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user