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.
 
 
 
 
 
 

81 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.intercept('POST', '/api/method/frappe.desk.search.search_link').as('search_link');
  29. cy.get('.frappe-control[data-fieldname=link] input').focus().as('input');
  30. cy.wait('@search_link');
  31. cy.get('@input').type('todo for link', { delay: 200 });
  32. cy.wait('@search_link');
  33. cy.get('.frappe-control[data-fieldname=link] ul').should('be.visible');
  34. cy.get('.frappe-control[data-fieldname=link] input').type('{enter}', { delay: 100 });
  35. cy.get('.frappe-control[data-fieldname=link] input').blur();
  36. cy.get('@dialog').then(dialog => {
  37. cy.get('@todos').then(todos => {
  38. let value = dialog.get_value('link');
  39. expect(value).to.eq(todos[0]);
  40. });
  41. });
  42. });
  43. it('should unset invalid value', () => {
  44. get_dialog_with_link().as('dialog');
  45. cy.intercept('GET', '/api/method/frappe.desk.form.utils.validate_link*').as('validate_link');
  46. cy.get('.frappe-control[data-fieldname=link] input')
  47. .type('invalid value', { delay: 100 })
  48. .blur();
  49. cy.wait('@validate_link');
  50. cy.get('.frappe-control[data-fieldname=link] input').should('have.value', '');
  51. });
  52. it('should route to form on arrow click', () => {
  53. get_dialog_with_link().as('dialog');
  54. cy.intercept('GET', '/api/method/frappe.desk.form.utils.validate_link*').as('validate_link');
  55. cy.intercept('POST', '/api/method/frappe.desk.search.search_link').as('search_link');
  56. cy.get('@todos').then(todos => {
  57. cy.get('.frappe-control[data-fieldname=link] input').as('input');
  58. cy.get('@input').focus();
  59. cy.wait('@search_link');
  60. cy.get('@input').type(todos[0]).blur();
  61. cy.wait('@validate_link');
  62. cy.get('@input').focus();
  63. cy.get('.frappe-control[data-fieldname=link] .link-btn')
  64. .should('be.visible')
  65. .click();
  66. cy.location('pathname').should('eq', `/app/todo/${todos[0]}`);
  67. });
  68. });
  69. });