hostsFn.test.ts 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. /**
  2. * hostsFn.test.ts
  3. * @author: oldj
  4. * @homepage: https://oldj.net
  5. */
  6. import assert = require('assert')
  7. import { IHostsListObject } from '@root/common/data'
  8. import { findItemById, setOnStateOfItem } from '@root/common/hostsFn'
  9. describe('hostsFn test', function () {
  10. const makeAList = (): IHostsListObject[] => {
  11. return [
  12. { id: '1' },
  13. {
  14. id: '2', type: 'folder', folder_mode: 0, children: [
  15. { id: '2.1' },
  16. { id: '2.2' },
  17. { id: '2.3' },
  18. ],
  19. },
  20. {
  21. id: '3', type: 'folder', folder_mode: 1, children: [
  22. { id: '3.1' },
  23. { id: '3.2' },
  24. { id: '3.3' },
  25. {
  26. id: '3.4', type: 'folder', folder_mode: 2, children: [
  27. { id: '3.4.1' },
  28. { id: '3.4.2' },
  29. { id: '3.4.3' },
  30. ],
  31. },
  32. ],
  33. },
  34. {
  35. id: '4', type: 'folder', folder_mode: 2, children: [
  36. { id: '4.1' },
  37. { id: '4.2' },
  38. { id: '4.3' },
  39. {
  40. id: '4.4', type: 'folder', folder_mode: 1, children: [
  41. { id: '4.4.1' },
  42. { id: '4.4.2' },
  43. { id: '4.4.3' },
  44. ],
  45. },
  46. ],
  47. },
  48. { id: '5' },
  49. { id: '6' },
  50. ]
  51. }
  52. const getItem = (list: IHostsListObject[], id: string): any => findItemById(list, id) || {}
  53. it('updateOneItem top level test', () => {
  54. let list: IHostsListObject[] = [
  55. { id: '1' },
  56. ]
  57. list = setOnStateOfItem(list, '1', true, 0)
  58. assert(list[0].on)
  59. list = [
  60. { id: '1' },
  61. { id: '2' },
  62. ]
  63. list = setOnStateOfItem(list, '1', true, 0)
  64. assert(list[0].on)
  65. assert(!list[1].on)
  66. list = setOnStateOfItem(list, '2', true, 0)
  67. assert(list[0].on)
  68. assert(list[1].on)
  69. // 单选
  70. list = [
  71. { id: '1' },
  72. { id: '2', on: true },
  73. { id: '3', on: true },
  74. ]
  75. list = setOnStateOfItem(list, '1', true, 1)
  76. assert(list[0].on)
  77. assert(!list[1].on)
  78. assert(!list[2].on)
  79. // 多选
  80. list = [
  81. { id: '1' },
  82. { id: '2', on: true },
  83. { id: '3', on: true },
  84. ]
  85. list = setOnStateOfItem(list, '1', true, 2)
  86. assert(list[0].on)
  87. assert(list[1].on)
  88. assert(list[2].on)
  89. })
  90. it('updateOneItem folder test', () => {
  91. // default
  92. let list = makeAList()
  93. list = setOnStateOfItem(list, '1', true, 1)
  94. assert(list[0].on)
  95. assert(!list[1].on)
  96. assert(!list[2].on)
  97. assert(!list[3].on)
  98. list = setOnStateOfItem(list, '2', true, 1)
  99. assert(!list[0].on)
  100. assert(list[1].on)
  101. assert(!list[2].on)
  102. assert(!list[3].on)
  103. list = setOnStateOfItem(list, '2.1', true, 0)
  104. assert(getItem(list, '2.1').on)
  105. assert(!getItem(list, '2.2').on)
  106. assert(!getItem(list, '2.3').on)
  107. list = setOnStateOfItem(list, '2.2', true, 0)
  108. assert(getItem(list, '2.1').on)
  109. assert(getItem(list, '2.2').on)
  110. assert(!getItem(list, '2.3').on)
  111. list = setOnStateOfItem(list, '2.3', true, 1)
  112. assert(!getItem(list, '2.1').on)
  113. assert(!getItem(list, '2.2').on)
  114. assert(getItem(list, '2.3').on)
  115. list = setOnStateOfItem(list, '2.1', true, 1)
  116. assert(getItem(list, '2.1').on)
  117. assert(!getItem(list, '2.2').on)
  118. assert(!getItem(list, '2.3').on)
  119. list = setOnStateOfItem(list, '2.2', true, 2)
  120. assert(getItem(list, '2.1').on)
  121. assert(getItem(list, '2.2').on)
  122. assert(!getItem(list, '2.3').on)
  123. list = setOnStateOfItem(list, '3.1', true, 0)
  124. assert(getItem(list, '3.1').on)
  125. assert(!getItem(list, '3.2').on)
  126. assert(!getItem(list, '3.3').on)
  127. list = setOnStateOfItem(list, '3.2', true, 0)
  128. assert(!getItem(list, '3.1').on)
  129. assert(getItem(list, '3.2').on)
  130. assert(!getItem(list, '3.3').on)
  131. list = setOnStateOfItem(list, '3.3', true, 1)
  132. assert(!getItem(list, '3.1').on)
  133. assert(!getItem(list, '3.2').on)
  134. assert(getItem(list, '3.3').on)
  135. list = setOnStateOfItem(list, '3.1', true, 2)
  136. assert(getItem(list, '3.1').on)
  137. assert(!getItem(list, '3.2').on)
  138. assert(!getItem(list, '3.3').on)
  139. assert(!getItem(list, '3.4').on)
  140. list = setOnStateOfItem(list, '3.4.1', true, 0)
  141. assert(getItem(list, '3.4.1').on)
  142. assert(!getItem(list, '3.4.2').on)
  143. assert(!getItem(list, '3.4.3').on)
  144. list = setOnStateOfItem(list, '3.4.2', true, 0)
  145. assert(getItem(list, '3.4.1').on)
  146. assert(getItem(list, '3.4.2').on)
  147. assert(!getItem(list, '3.4.3').on)
  148. list = setOnStateOfItem(list, '3.4.3', true, 1)
  149. assert(getItem(list, '3.4.1').on)
  150. assert(getItem(list, '3.4.2').on)
  151. assert(getItem(list, '3.4.3').on)
  152. list = setOnStateOfItem(list, '3.4.3', false, 2)
  153. assert(getItem(list, '3.4.1').on)
  154. assert(getItem(list, '3.4.2').on)
  155. assert(!getItem(list, '3.4.3').on)
  156. list = setOnStateOfItem(list, '4.1', true, 0)
  157. assert(getItem(list, '4.1').on)
  158. assert(!getItem(list, '4.2').on)
  159. assert(!getItem(list, '4.3').on)
  160. list = setOnStateOfItem(list, '4.2', true, 1)
  161. assert(getItem(list, '4.1').on)
  162. assert(getItem(list, '4.2').on)
  163. assert(!getItem(list, '4.3').on)
  164. list = setOnStateOfItem(list, '4.3', true, 2)
  165. assert(getItem(list, '4.1').on)
  166. assert(getItem(list, '4.2').on)
  167. assert(getItem(list, '4.3').on)
  168. list = setOnStateOfItem(list, '4.4.1', true, 0)
  169. assert(getItem(list, '4.4.1').on)
  170. assert(!getItem(list, '4.4.2').on)
  171. assert(!getItem(list, '4.4.3').on)
  172. list = setOnStateOfItem(list, '4.4.2', true, 1)
  173. assert(!getItem(list, '4.4.1').on)
  174. assert(getItem(list, '4.4.2').on)
  175. assert(!getItem(list, '4.4.3').on)
  176. list = setOnStateOfItem(list, '4.4.3', true, 2)
  177. assert(!getItem(list, '4.4.1').on)
  178. assert(!getItem(list, '4.4.2').on)
  179. assert(getItem(list, '4.4.3').on)
  180. list = setOnStateOfItem(list, '4.4.3', false, 2)
  181. assert(!getItem(list, '4.4.1').on)
  182. assert(!getItem(list, '4.4.2').on)
  183. assert(!getItem(list, '4.4.3').on)
  184. })
  185. })