array.test.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { getValue, setValue } from '../array'
  2. const testUser1 = {
  3. name: 'Test User 1',
  4. age: 27,
  5. interests: ['food']
  6. }
  7. const testUser2 = {
  8. name: 'Test User 2',
  9. age: 23,
  10. interests: ['party', 'facebook']
  11. }
  12. const newUser = {
  13. name: 'Test User 3',
  14. age: 31,
  15. interests: ['work', 'life']
  16. }
  17. const testMe = {
  18. users: [
  19. testUser1,
  20. testUser2
  21. ]
  22. }
  23. describe('get item', () => {
  24. it('gets first level element', () => {
  25. const result = getValue(testMe, 'users')
  26. expect(result.length).toBe(2)
  27. })
  28. it('extracts elements from an array', () => {
  29. const result = getValue(testMe, 'users[1]')
  30. expect(result).toEqual(testUser2)
  31. })
  32. it('gets second order elements', () => {
  33. const result = getValue(testMe, 'users[1].interests[0]')
  34. expect(result).toEqual('party')
  35. })
  36. })
  37. describe('set item', () => {
  38. it('sets first level element', () => {
  39. const result = setValue(testMe, 'users', [newUser])
  40. expect(result).toEqual({ users: [newUser] })
  41. })
  42. it('sets array elements', () => {
  43. const result = setValue(testMe, 'users[1]', newUser)
  44. expect(result).toEqual({ users: [testUser1, newUser] })
  45. })
  46. it('sets object elements', () => {
  47. const result = setValue(testMe, 'users[0].age', 76)
  48. expect(result).toEqual({ users: [{ ...testUser1, age: 76 }, testUser2] })
  49. })
  50. })
  51. export default true