search.jest.ts 10 KB

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