feat(web): las extensiones de cliente pueden ocultar campos y columnas y dejarlos de solo lectura (documentos y maestros)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f077a61d08
commit
8dc4a8eaab
20 files changed
+374
-38
No files matched your search
@@ -6,6 +6,7 @@ import { of } from 'rxjs';
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
||||
import { MasterFormPage } from './master-form.page';
|
||||
import { BASE_MASTER_SCREENS } from './master-screens';
|
||||
import { applyMasterExtensions } from './master-extensions';
|
||||
|
||||
const customer = (over: Record<string, unknown> = {}) => ({
|
||||
'odata.etag': 'W/"3"',
|
||||
@@ -257,4 +258,25 @@ describe('MasterFormPage', () => {
|
||||
await tick();
|
||||
expect(el().querySelector('.status')?.textContent).toContain('El registro no existe');
|
||||
});
|
||||
|
||||
it('un campo oculto no aparece y uno de solo lectura se ve pero no se escribe', async () => {
|
||||
const screen = applyMasterExtensions(BASE_MASTER_SCREENS, {
|
||||
'/socios/clientes': { hideFields: ['Website'], readOnlyFields: ['EmailAddress'] },
|
||||
}).find((s) => s.path === '/socios/clientes')!;
|
||||
const route = { snapshot: { data: { screen, title: 'Cliente' }, paramMap: convertToParamMap({ key: 'C100' }) }, paramMap: of(convertToParamMap({ key: 'C100' })) };
|
||||
await TestBed.configureTestingModule({
|
||||
imports: [MasterFormPage],
|
||||
providers: [provideRouter([]), provideHttpClient(), provideHttpClientTesting(), { provide: ActivatedRoute, useValue: route }],
|
||||
}).compileComponents();
|
||||
ctrl = TestBed.inject(HttpTestingController);
|
||||
fixture = TestBed.createComponent(MasterFormPage);
|
||||
await tick();
|
||||
ctrl.expectOne('/api/sl/BusinessPartners/C100').flush(customer());
|
||||
await tick();
|
||||
expect(labels()).not.toContain('Sitio web');
|
||||
const email = [...el().querySelectorAll<HTMLInputElement>('input')].find((i) => i.value === 'ventas@acme.cl')!;
|
||||
expect(email.readOnly).toBe(true);
|
||||
const phone = [...el().querySelectorAll<HTMLInputElement>('input')].find((i) => i.value === '2 2345 6789')!;
|
||||
expect(phone.readOnly).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user