menu.cy.ts 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import {
  2. closeModal,
  3. intercept,
  4. loginIntercept,
  5. loginSetup,
  6. menuIntercept,
  7. menuTrigger,
  8. successIntercept,
  9. tableBtnClick,
  10. validateDelete,
  11. validatePut,
  12. validateTableList,
  13. validateTableSearch,
  14. } from './utils';
  15. describe('菜单管理', function() {
  16. beforeEach(function() {
  17. loginIntercept();
  18. menuIntercept();
  19. loginSetup();
  20. menuTrigger(3, 0);
  21. });
  22. beforeEach(function() {
  23. intercept('/menu/getPage', function({reply, url: reqUrl}) {
  24. const url = new URL(reqUrl);
  25. const search = new URLSearchParams(url.search);
  26. if (search.get('pId') !== '0') {
  27. if (search.has('name') && search.get('name').length)
  28. return reply({fixture: 'menu/childSearchList'});
  29. const page = search.get('page');
  30. return reply({fixture: `menu/childList${page}`});
  31. }
  32. if (search.has('name') && search.get('name').length)
  33. return reply({fixture: 'menu/searchList'});
  34. const page = search.get('page');
  35. return reply({fixture: `menu/list${page}`});
  36. });
  37. successIntercept('/menu/addMenu');
  38. successIntercept('/menu/updateMenu');
  39. successIntercept('/menu/delMenu');
  40. });
  41. const TABLE_NAME = 'menu_table',
  42. MODAL_NAME = 'menu_modal',
  43. LABEL = '菜单';
  44. const CHILD_TALBE_NAME = 'child_menu_table',
  45. CHILD_MODAL_NAME = 'child_menu_modal',
  46. CHILD_LABEL = '菜单';
  47. it('表格', function() {
  48. validateTableList(TABLE_NAME);
  49. const validate = validateTableSearch(TABLE_NAME, '菜单搜索');
  50. cy.get('#filter_menuName').type('name');
  51. validate();
  52. });
  53. it('列表操作', function() {
  54. const {validateAdd, validateEdit} = validatePut(MODAL_NAME, LABEL);
  55. validateAdd(function() {
  56. cy.getTestId('field_menuName').type('菜单名称');
  57. cy.getTestId('field_menuUrl').type('/test');
  58. cy.getTestId('field_menuOrderBy').clear().type('8');
  59. });
  60. validateEdit(TABLE_NAME, function() {
  61. cy.getTestId('field_menuName').should('have.value', '用户设置');
  62. cy.getTestId('field_menuUrl').should('have.value', '.');
  63. cy.getTestId('field_menuOrderBy').should('have.value', '1');
  64. });
  65. validateDelete(TABLE_NAME, LABEL);
  66. // #region 子菜单
  67. tableBtnClick(TABLE_NAME, 2);
  68. cy.getTestId('child_menu').should('exist').and('be.visible');
  69. validateTableList(CHILD_TALBE_NAME);
  70. cy.getTestId('child_menu').should('exist').and('be.visible');
  71. closeModal();
  72. cy.getTestId('child_menu').should('not.exist');
  73. // #endregion
  74. });
  75. it('子菜单操作', function() {
  76. tableBtnClick(TABLE_NAME, 2);
  77. // #region 搜索
  78. const validate = validateTableSearch(
  79. CHILD_TALBE_NAME,
  80. 'childMenuSearch',
  81. {btnTestId: 'child_menu_search_btn'},
  82. );
  83. cy.get('#filter_childMenuName').type('子菜单名称');
  84. validate();
  85. // #endregion
  86. const {
  87. validateAdd: childValidateAdd,
  88. validateEdit: childValidateEdit,
  89. } = validatePut(
  90. CHILD_MODAL_NAME,
  91. CHILD_LABEL,
  92. {addBtnTestId: 'child_menu_add_btn'},
  93. );
  94. childValidateAdd(function() {
  95. cy.getTestId('field_menuName').type('菜单名称');
  96. cy.getTestId('field_menuUrl').type('/test');
  97. cy.getTestId('field_menuOrderBy').clear().type('8');
  98. });
  99. childValidateEdit(CHILD_TALBE_NAME, function() {
  100. cy.getTestId('field_menuName').should('have.value', '用户管理');
  101. cy.getTestId('field_menuUrl').should('have.value', '/user');
  102. cy.getTestId('field_menuOrderBy').should('have.value', '0');
  103. });
  104. validateDelete(CHILD_TALBE_NAME, CHILD_LABEL);
  105. });
  106. });