search.jest.ts 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323
  1. import { SearchCtrl } from '../components/search/search';
  2. import { SearchSrv } from '../services/search_srv';
  3. describe('SearchCtrl', () => {
  4. const searchSrvStub = {
  5. search: (options: any) => {},
  6. getDashboardTags: () => {},
  7. };
  8. let ctrl = new SearchCtrl({ $on: () => {} }, {}, {}, <SearchSrv>searchSrvStub);
  9. describe('Given an empty result', () => {
  10. beforeEach(() => {
  11. ctrl.results = [];
  12. });
  13. describe('When navigating down one step', () => {
  14. beforeEach(() => {
  15. ctrl.selectedIndex = 0;
  16. ctrl.moveSelection(1);
  17. });
  18. it('should not navigate', () => {
  19. expect(ctrl.selectedIndex).toBe(0);
  20. });
  21. });
  22. describe('When navigating up one step', () => {
  23. beforeEach(() => {
  24. ctrl.selectedIndex = 0;
  25. ctrl.moveSelection(-1);
  26. });
  27. it('should not navigate', () => {
  28. expect(ctrl.selectedIndex).toBe(0);
  29. });
  30. });
  31. });
  32. describe('Given a result of one selected collapsed folder with no dashboards and a root folder with 2 dashboards', () => {
  33. beforeEach(() => {
  34. ctrl.results = [
  35. {
  36. id: 1,
  37. title: 'folder',
  38. items: [],
  39. selected: true,
  40. expanded: false,
  41. toggle: i => (i.expanded = !i.expanded),
  42. },
  43. {
  44. id: 0,
  45. title: 'Root',
  46. items: [{ id: 3, selected: false }, { id: 5, selected: false }],
  47. selected: false,
  48. expanded: true,
  49. toggle: i => (i.expanded = !i.expanded),
  50. },
  51. ];
  52. });
  53. describe('When navigating down one step', () => {
  54. beforeEach(() => {
  55. ctrl.selectedIndex = 0;
  56. ctrl.moveSelection(1);
  57. });
  58. it('should select first dashboard in root folder', () => {
  59. expect(ctrl.results[0].selected).toBeFalsy();
  60. expect(ctrl.results[1].selected).toBeFalsy();
  61. expect(ctrl.results[1].items[0].selected).toBeTruthy();
  62. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  63. });
  64. });
  65. describe('When navigating down two steps', () => {
  66. beforeEach(() => {
  67. ctrl.selectedIndex = 0;
  68. ctrl.moveSelection(1);
  69. ctrl.moveSelection(1);
  70. });
  71. it('should select last dashboard in root folder', () => {
  72. expect(ctrl.results[0].selected).toBeFalsy();
  73. expect(ctrl.results[1].selected).toBeFalsy();
  74. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  75. expect(ctrl.results[1].items[1].selected).toBeTruthy();
  76. });
  77. });
  78. describe('When navigating down three steps', () => {
  79. beforeEach(() => {
  80. ctrl.selectedIndex = 0;
  81. ctrl.moveSelection(1);
  82. ctrl.moveSelection(1);
  83. ctrl.moveSelection(1);
  84. });
  85. it('should select first folder', () => {
  86. expect(ctrl.results[0].selected).toBeTruthy();
  87. expect(ctrl.results[1].selected).toBeFalsy();
  88. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  89. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  90. });
  91. });
  92. describe('When navigating up one step', () => {
  93. beforeEach(() => {
  94. ctrl.selectedIndex = 0;
  95. ctrl.moveSelection(-1);
  96. });
  97. it('should select last dashboard in root folder', () => {
  98. expect(ctrl.results[0].selected).toBeFalsy();
  99. expect(ctrl.results[1].selected).toBeFalsy();
  100. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  101. expect(ctrl.results[1].items[1].selected).toBeTruthy();
  102. });
  103. });
  104. describe('When navigating up two steps', () => {
  105. beforeEach(() => {
  106. ctrl.selectedIndex = 0;
  107. ctrl.moveSelection(-1);
  108. ctrl.moveSelection(-1);
  109. });
  110. it('should select first dashboard in root folder', () => {
  111. expect(ctrl.results[0].selected).toBeFalsy();
  112. expect(ctrl.results[1].selected).toBeFalsy();
  113. expect(ctrl.results[1].items[0].selected).toBeTruthy();
  114. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  115. });
  116. });
  117. });
  118. describe('Given a result of one selected collapsed folder with 2 dashboards and a root folder with 2 dashboards', () => {
  119. beforeEach(() => {
  120. ctrl.results = [
  121. {
  122. id: 1,
  123. title: 'folder',
  124. items: [{ id: 2, selected: false }, { id: 4, selected: false }],
  125. selected: true,
  126. expanded: false,
  127. toggle: i => (i.expanded = !i.expanded),
  128. },
  129. {
  130. id: 0,
  131. title: 'Root',
  132. items: [{ id: 3, selected: false }, { id: 5, selected: false }],
  133. selected: false,
  134. expanded: true,
  135. toggle: i => (i.expanded = !i.expanded),
  136. },
  137. ];
  138. });
  139. describe('When navigating down one step', () => {
  140. beforeEach(() => {
  141. ctrl.selectedIndex = 0;
  142. ctrl.moveSelection(1);
  143. });
  144. it('should select first dashboard in root folder', () => {
  145. expect(ctrl.results[0].selected).toBeFalsy();
  146. expect(ctrl.results[1].selected).toBeFalsy();
  147. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  148. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  149. expect(ctrl.results[1].items[0].selected).toBeTruthy();
  150. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  151. });
  152. });
  153. describe('When navigating down two steps', () => {
  154. beforeEach(() => {
  155. ctrl.selectedIndex = 0;
  156. ctrl.moveSelection(1);
  157. ctrl.moveSelection(1);
  158. });
  159. it('should select last dashboard in root folder', () => {
  160. expect(ctrl.results[0].selected).toBeFalsy();
  161. expect(ctrl.results[1].selected).toBeFalsy();
  162. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  163. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  164. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  165. expect(ctrl.results[1].items[1].selected).toBeTruthy();
  166. });
  167. });
  168. describe('When navigating down three steps', () => {
  169. beforeEach(() => {
  170. ctrl.selectedIndex = 0;
  171. ctrl.moveSelection(1);
  172. ctrl.moveSelection(1);
  173. ctrl.moveSelection(1);
  174. });
  175. it('should select first folder', () => {
  176. expect(ctrl.results[0].selected).toBeTruthy();
  177. expect(ctrl.results[1].selected).toBeFalsy();
  178. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  179. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  180. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  181. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  182. });
  183. });
  184. describe('When navigating up one step', () => {
  185. beforeEach(() => {
  186. ctrl.selectedIndex = 0;
  187. ctrl.moveSelection(-1);
  188. });
  189. it('should select last dashboard in root folder', () => {
  190. expect(ctrl.results[0].selected).toBeFalsy();
  191. expect(ctrl.results[1].selected).toBeFalsy();
  192. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  193. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  194. expect(ctrl.results[1].items[0].selected).toBeFalsy();
  195. expect(ctrl.results[1].items[1].selected).toBeTruthy();
  196. });
  197. });
  198. describe('When navigating up two steps', () => {
  199. beforeEach(() => {
  200. ctrl.selectedIndex = 0;
  201. ctrl.moveSelection(-1);
  202. ctrl.moveSelection(-1);
  203. });
  204. it('should select first dashboard in root folder', () => {
  205. expect(ctrl.results[0].selected).toBeFalsy();
  206. expect(ctrl.results[1].selected).toBeFalsy();
  207. expect(ctrl.results[1].items[0].selected).toBeTruthy();
  208. expect(ctrl.results[1].items[1].selected).toBeFalsy();
  209. });
  210. });
  211. });
  212. describe('Given a result of a search with 2 dashboards where the first is selected', () => {
  213. beforeEach(() => {
  214. ctrl.results = [
  215. {
  216. hideHeader: true,
  217. items: [{ id: 3, selected: true }, { id: 5, selected: false }],
  218. selected: false,
  219. expanded: true,
  220. toggle: i => (i.expanded = !i.expanded),
  221. },
  222. ];
  223. });
  224. describe('When navigating down one step', () => {
  225. beforeEach(() => {
  226. ctrl.selectedIndex = 1;
  227. ctrl.moveSelection(1);
  228. });
  229. it('should select last dashboard', () => {
  230. expect(ctrl.results[0].selected).toBeFalsy();
  231. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  232. expect(ctrl.results[0].items[1].selected).toBeTruthy();
  233. });
  234. });
  235. describe('When navigating down two steps', () => {
  236. beforeEach(() => {
  237. ctrl.selectedIndex = 1;
  238. ctrl.moveSelection(1);
  239. ctrl.moveSelection(1);
  240. });
  241. it('should select first dashboard', () => {
  242. expect(ctrl.results[0].selected).toBeFalsy();
  243. expect(ctrl.results[0].items[0].selected).toBeTruthy();
  244. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  245. });
  246. });
  247. describe('When navigating down three steps', () => {
  248. beforeEach(() => {
  249. ctrl.selectedIndex = 1;
  250. ctrl.moveSelection(1);
  251. ctrl.moveSelection(1);
  252. ctrl.moveSelection(1);
  253. });
  254. it('should select last dashboard', () => {
  255. expect(ctrl.results[0].selected).toBeFalsy();
  256. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  257. expect(ctrl.results[0].items[1].selected).toBeTruthy();
  258. });
  259. });
  260. describe('When navigating up one step', () => {
  261. beforeEach(() => {
  262. ctrl.selectedIndex = 1;
  263. ctrl.moveSelection(-1);
  264. });
  265. it('should select last dashboard', () => {
  266. expect(ctrl.results[0].selected).toBeFalsy();
  267. expect(ctrl.results[0].items[0].selected).toBeFalsy();
  268. expect(ctrl.results[0].items[1].selected).toBeTruthy();
  269. });
  270. });
  271. describe('When navigating up two steps', () => {
  272. beforeEach(() => {
  273. ctrl.selectedIndex = 1;
  274. ctrl.moveSelection(-1);
  275. ctrl.moveSelection(-1);
  276. });
  277. it('should select first dashboard', () => {
  278. expect(ctrl.results[0].selected).toBeFalsy();
  279. expect(ctrl.results[0].items[0].selected).toBeTruthy();
  280. expect(ctrl.results[0].items[1].selected).toBeFalsy();
  281. });
  282. });
  283. });
  284. });