You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

84 lines
2.3 KiB

  1. context('Control Link', () => {
  2. before(() => {
  3. cy.login();
  4. cy.visit('/app/website');
  5. });
  6. beforeEach(() => {
  7. cy.visit('/app/website');
  8. cy.create_records({
  9. doctype: 'ToDo',
  10. description: 'this is a test todo for link'
  11. }).as('todos');
  12. });
  13. function get_dialog_with_link() {
  14. return cy.dialog({
  15. title: 'Link',
  16. fields: [
  17. {
  18. 'label': 'Select ToDo',
  19. 'fieldname': 'link',
  20. 'fieldtype': 'Link',
  21. 'options': 'ToDo'
  22. }
  23. ]
  24. });
  25. }
  26. it('should set the valid value', () => {
  27. get_dialog_with_link().as('dialog');
  28. cy.server();
  29. cy.route('POST', '/api/method/frappe.desk.search.search_link').as('search_link');
  30. cy.get('.frappe-control[data-fieldname=link] input').focus().as('input');
  31. cy.wait('@search_link');
  32. cy.get('@input').type('todo for link', { delay: 200 });
  33. cy.wait('@search_link');
  34. cy.get('.frappe-control[data-fieldname=link] ul').should('be.visible');
  35. cy.get('.frappe-control[data-fieldname=link] input').type('{enter}', { delay: 100 });
  36. cy.get('.frappe-control[data-fieldname=link] input').blur();
  37. cy.get('@dialog').then(dialog => {
  38. cy.get('@todos').then(todos => {
  39. let value = dialog.get_value('link');
  40. expect(value).to.eq(todos[0]);
  41. });
  42. });
  43. });
  44. it('should unset invalid value', () => {
  45. get_dialog_with_link().as('dialog');
  46. cy.server();
  47. cy.route('GET', '/api/method/frappe.desk.form.utils.validate_link*').as('validate_link');
  48. cy.get('.frappe-control[data-fieldname=link] input')
  49. .type('invalid value', { delay: 100 })
  50. .blur();
  51. cy.wait('@validate_link');
  52. cy.get('.frappe-control[data-fieldname=link] input').should('have.value', '');
  53. });
  54. it('should route to form on arrow click', () => {
  55. get_dialog_with_link().as('dialog');
  56. cy.server();
  57. cy.route('GET', '/api/method/frappe.desk.form.utils.validate_link*').as('validate_link');
  58. cy.route('POST', '/api/method/frappe.desk.search.search_link').as('search_link');
  59. cy.get('@todos').then(todos => {
  60. cy.get('.frappe-control[data-fieldname=link] input').as('input');
  61. cy.get('@input').focus();
  62. cy.wait('@search_link');
  63. cy.get('@input').type(todos[0]).blur();
  64. cy.wait('@validate_link');
  65. cy.get('@input').focus();
  66. cy.get('.frappe-control[data-fieldname=link] .link-btn')
  67. .should('be.visible')
  68. .click();
  69. cy.location('pathname').should('eq', `/app/todo/${todos[0]}`);
  70. });
  71. });
  72. });