Ctrl K
ComunidadGuías…

agents-manage-ui/cypress/e2e/components.cy.ts

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
/// <reference types="cypress" />

import { randomId } from '../support/utils';

describe('Components', () => {
  it('should create a new component when adding JSON schema properties with form builder and without `required` field', () => {
    cy.intercept('POST', '**/components**').as('createComponent');

    cy.visit('/default/projects/activities-planner/components/new');
    cy.get('input[name=name]').type(`test ${randomId()}`);
    cy.get('textarea[name=description]').type('test description');
    cy.contains('Add property').click();
    cy.get('[placeholder="Property name"]').type('foo');
    cy.get('[placeholder="Add description"]').type('bar');
    cy.get('button[type="submit"]').should('not.be.disabled').click();
    // Should redirect after successful creation
    cy.location('pathname', { timeout: 30_000 }).should(
      'eq',
      '/default/projects/activities-planner/components'
    );
  });

  it('should not override json schema when json mode is enabled by default', () => {
    cy.visit('/default/projects/activities-planner/components/activities');
    cy.get('[role=switch]').click();
    cy.reload();
    cy.contains('The type of event').should('exist');
  });

  describe('inPreview', () => {
    it('should not have `inPreview` flag', () => {
      cy.visit('/default/projects/activities-planner/components/new');
      cy.contains('Add property').should('exist');
      cy.contains('In Preview').should('not.exist');
    });

    it('should remove `inPreview` fields from editor', () => {
      cy.visit('/default/projects/activities-planner/components/new');
      cy.get('[role=switch]').click();

      const editorValue = {
        type: 'object',
        properties: {
          num: {
            type: 'number',
            inPreview: true,
          },
        },
      };
      cy.typeInMonaco('json-schema-data-component.json', JSON.stringify(editorValue));

      // Switch to form builder
      cy.get('[role=switch]').click();
      // Switch to JSON schema editor
      cy.get('[role=switch]').click();
      // Wait for updated editor value
      cy.contains('"additionalProperties": false').should('exist');

      cy.assertMonacoContent('json-schema-data-component.json', (content) => {
        const newEditorValue = {
          ...structuredClone(editorValue),
          additionalProperties: false,
        };
        delete newEditorValue.properties.num.inPreview;

        // To compare objects by value, deep equality
        expect(JSON.parse(content)).to.deep.equal(newEditorValue);
      });
    });
  });
});