Skip to content

Commit

Permalink
test: add test cases for isDeepRef
Browse files Browse the repository at this point in the history
  • Loading branch information
Evobaso-J committed Mar 19, 2024
1 parent 83a47ca commit a2948f7
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions tests/isDeepRef.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import { isDeepRef } from '../src/utils/isDeepRef'
import { describe, expect, it } from 'vitest'
import { ref } from 'vue'

describe('isDeepRef', () => {
it('should return true for a Ref value', () => {
const testRef = ref(1)

expect(isDeepRef(testRef)).toBe(true)
})
it('should return false for a non-object, non-Ref value', () => {
const nonObject = 1

expect(isDeepRef(nonObject)).toBe(false)
})
it('should return true for an object with a Ref value', () => {
const testObject = { ref: ref(1) }

expect(isDeepRef(testObject)).toBe(true)
})
it('should return false for an object without a Ref value', () => {
const testObject = { nonRef: 1 }

expect(isDeepRef(testObject)).toBe(false)
})
it('should return true for an array with a Ref value', () => {
const arrayWithRef = [ref(1)]

expect(isDeepRef(arrayWithRef)).toBe(true)
})
it('should return false for an array without a Ref value', () => {
const arrayWithoutRef = [1]

expect(isDeepRef(arrayWithoutRef)).toBe(false)
})
it('should return true for a nested object with a Ref value', () => {
const nestedObject = { nested: { ref: ref(1) } }

expect(isDeepRef(nestedObject)).toBe(true)
})
it('should return false for a nested object without a Ref value', () => {
const nestedObject = { nested: { nonRef: 1 } }

expect(isDeepRef(nestedObject)).toBe(false)
})
it('should return true for a nested array with a Ref value', () => {
const nestedArray = [[ref(1)]]

expect(isDeepRef(nestedArray)).toBe(true)
})
it('should return false for a nested array without a Ref value', () => {
const nestedArray = [[1]]

expect(isDeepRef(nestedArray)).toBe(false)
})
it('should return false for an object that has already been visited and does not contain a Ref', () => {
const item = { parent: null as any }
const parentItem = { children: [item] }
item.parent = parentItem

expect(isDeepRef(item)).toBe(false)
})
it('should return true for an object that has already been visited and contains a Ref', () => {
const item = { parent: ref<any>(null) }
const parentItem = { children: [ref(item)] }
item.parent.value = parentItem

expect(isDeepRef(item)).toBe(true)
})
})

0 comments on commit a2948f7

Please sign in to comment.