Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

80 linhas
2.3 KiB

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