search.jest.ts 10 KB

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