]> git.ipfire.org Git - thirdparty/vuejs/pinia.git/commitdiff
test: test cross usage of stores for getters
authorEduardo San Martin Morote <posva13@gmail.com>
Sat, 11 Sep 2021 16:50:14 +0000 (18:50 +0200)
committerEduardo San Martin Morote <posva13@gmail.com>
Sat, 11 Sep 2021 16:50:14 +0000 (18:50 +0200)
packages/pinia/__tests__/getters.spec.ts

index fca05ffb6721bd76ddd90ef9263e02f1e4c1885f..af46d2a2935fd2e9884e48d5ac6e2233bc8c6548 100644 (file)
@@ -1,5 +1,8 @@
+import { ref, computed } from 'vue'
 import { createPinia, defineStore, setActivePinia } from '../src'
 
+function expectType<T>(_value: T): void {}
+
 describe('Getters', () => {
   beforeEach(() => {
     setActivePinia(createPinia())
@@ -101,4 +104,63 @@ describe('Getters', () => {
     store.name = 'Ed'
     expect(store.upperCaseName).toBe('ED')
   })
+
+  describe('cross used stores', () => {
+    const useA = defineStore('a', () => {
+      const B = useB()
+
+      const n = ref(0)
+      const double = computed(() => n.value * 2)
+      const sum = computed(() => n.value + B.n)
+
+      function increment() {
+        return n.value++
+      }
+
+      function incrementB() {
+        return B.increment()
+      }
+
+      return { n, double, sum, increment, incrementB }
+    })
+
+    const useB = defineStore('b', () => {
+      const A = useA()
+
+      const n = ref(0)
+      const double = computed(() => n.value * 2)
+
+      function increment() {
+        return n.value++
+      }
+
+      function incrementA() {
+        return A.increment()
+      }
+
+      return { n, double, incrementA, increment }
+    })
+
+    it('keeps getters reactive', () => {
+      const a = useA()
+      const b = useB()
+
+      expectType<() => number>(a.increment)
+      expectType<() => number>(b.increment)
+      expectType<() => number>(a.incrementB)
+      expectType<() => number>(b.incrementA)
+
+      expect(a.double).toBe(0)
+      b.incrementA()
+      expect(a.double).toBe(2)
+      a.increment()
+      expect(a.double).toBe(4)
+
+      expect(b.double).toBe(0)
+      a.incrementB()
+      expect(b.double).toBe(2)
+      b.increment()
+      expect(b.double).toBe(4)
+    })
+  })
 })