} from '../src'
function defineOptions<
- O extends DefineStoreOptions<string, StateTree, any, any>
+ O extends Omit<DefineStoreOptions<string, StateTree, any, any>, 'id'>
>(options: O): O {
return options
}
describe('HMR', () => {
const baseOptions = defineOptions({
- id: 'main',
state: () => ({
n: 0,
arr: [],
describe('state', () => {
it('adds new state properties', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
store.n++
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ newOne: 'hey', n: 0 }),
})(null, store)
expect(store.n).toBe(1)
expect(store.newOne).toBe('hey')
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ other: 'new', n: 0 }),
})(null, store)
})
it('patches nested objects', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ nested: { a: 'b', b: 'b' } }),
})(null, store)
expect(store.$state).toEqual({ nested: { a: 'a', b: 'b' } })
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ nested: { b: 'c' } }),
})(null, store)
})
it('skips arrays', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ arr: [2] }),
})(null, store)
expect(store.$state).toEqual({ arr: [] })
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ arr: [1] }),
})(null, store)
})
it('skips nested arrays', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ nestedArr: { arr: [2] } }),
})(null, store)
expect(store.$state).toEqual({ nestedArr: { arr: [] } })
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ nestedArr: { arr: [1] } }),
})(null, store)
})
it('keeps state reactive', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
const directSpy = jest.fn()
watch(() => store.$state.n, $stateSpy, { flush: 'sync' })
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ newOne: 'hey', n: 0 }),
})(null, store)
expect(directSpy).toHaveBeenCalledTimes(2)
expect($stateSpy).toHaveBeenCalledTimes(2)
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ other: 'new', n: 0 }),
})(null, store)
describe('actions', () => {
it('adds new actions', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
actions: {
...baseOptions.actions,
expect(store.n).toBe(0)
expect(store.$state.n).toBe(0)
- defineStore(baseOptions)(null, store)
+ defineStore('id', baseOptions)(null, store)
store.increment()
expect(store.n).toBe(1)
describe('getters', () => {
it('adds new getters properties', () => {
- const useStore = defineStore(baseOptions)
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
expect(store.double).toBe(0)
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
getters: {
...baseOptions.getters,
expect(store.double).toBe(6)
expect(store.triple).toBe(9)
- defineStore(baseOptions)(null, store)
+ defineStore('id', baseOptions)(null, store)
store.n = 4
expect(store.double).toBe(8)
expect(store).not.toHaveProperty('triple')
})
- // FIXME:
- it.skip('keeps getters reactive', () => {
- const useStore = defineStore(baseOptions)
+ it('keeps getters reactive', () => {
+ const useStore = defineStore('id', baseOptions)
const store: any = useStore()
const spy = jest.fn()
)
// simulate a hmr
- defineStore({
+ defineStore('id', {
...baseOptions,
state: () => ({ n: 2, newThing: true }),
})(null, store)
// expect(store.double).toBe(6)
expect(spy).toHaveBeenCalledTimes(1)
- defineStore(baseOptions)(null, store)
+ defineStore('id', baseOptions)(null, store)
store.n++
// expect(store.double).toBe(8)