96 lines
4.1 KiB
TypeScript
96 lines
4.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { extractActaLookupDictionary, extractFields } from "@/lib/extraction/extractFields";
|
|
|
|
describe("extractFields", () => {
|
|
it("extracts legal fields from mixed capitalization and punctuation", () => {
|
|
const text = `
|
|
Razon social: Treisole S.A. de C.V.
|
|
R.F.C.: TRE-240101-AB1
|
|
Fecha de constitucion: 15 de Marzo de 2019
|
|
Escritura publica No. 12345
|
|
Representante legal: Ana Torres Ramirez
|
|
Notario Publico: Lic. Carlos Mendoza
|
|
Domicilio fiscal:
|
|
Av. Juarez 123, Centro, Monterrey, Nuevo Leon
|
|
Objeto social:
|
|
Comercializacion de alimentos y bebidas, importacion y distribucion.
|
|
Entidad federativa: Nuevo Leon
|
|
`;
|
|
|
|
const result = extractFields(text);
|
|
|
|
expect(result.name).toBe("Treisole S.A. de C.V");
|
|
expect(result.rfc).toBeNull();
|
|
expect(result.legalRepresentative).toContain("Ana Torres");
|
|
expect(result.incorporationDate).toContain("15 de Marzo de 2019");
|
|
expect(result.deedNumber).toBe("12345");
|
|
expect(result.notaryName).toContain("Carlos Mendoza");
|
|
expect(result.fiscalAddress).toContain("Monterrey");
|
|
expect(result.businessPurpose).toContain("Comercializacion");
|
|
expect(result.stateOfIncorporation).toContain("Nuevo Leon");
|
|
});
|
|
|
|
it("avoids overcapturing legal name on sas contract headers and keeps RFC empty", () => {
|
|
const text = `
|
|
SAS2025858008 Denominación- TREISOLE Contrato Social de Sociedad por Acciones Simplificada
|
|
Contrato Social de Sociedad por Acciones Simplificada que celebran MARCELO DARES BALLI.
|
|
Primera. Denominación. La sociedad se denominará TREISOLE.
|
|
Tercera. Domicilio. El domicilio de la sociedad será el ubicado en CALLE LAZARO GARZA AYALA NÚMERO EXTERIOR 205
|
|
COLONIA TAMPIQUITO LOCALIDAD SAN PEDRO GARZA GARCIA MUNICIPIO SAN PEDRO GARZA GARCIA ENTIDAD FEDERATIVA NUEVO LEÓN.
|
|
Cuarta. Duración. La duración de la sociedad será Indefinida.
|
|
Quinta. Capital social El capital social fijo es la cantidad de 960 pesos.
|
|
La porción variable del capital social es la cantidad de 40 pesos.
|
|
Fecha de constitución: 25-04-04
|
|
RFC del socio: DABM030731AU7
|
|
`;
|
|
|
|
const result = extractFields(text);
|
|
const dictionary = extractActaLookupDictionary(text);
|
|
|
|
expect(result.name).toBe("TREISOLE");
|
|
expect(result.rfc).toBeNull();
|
|
expect(result.incorporationDate).toContain("25-04-04");
|
|
expect(result.deedNumber).toBe("SAS2025858008");
|
|
expect(result.fiscalAddress).toContain("SAN PEDRO GARZA GARCIA");
|
|
expect(result.stateOfIncorporation).toContain("NUEVO LEÓN");
|
|
expect(dictionary.capitalFixed).toContain("960");
|
|
expect(dictionary.capitalVariable).toContain("40");
|
|
});
|
|
|
|
it("builds an extended lookup dictionary for company profile storage", () => {
|
|
const text = `
|
|
Escritura publica numero 7789.
|
|
Tomo: 44.
|
|
En la ciudad de Monterrey, Nuevo Leon, a los 12 de abril de 2022.
|
|
La denominacion social sera: Comercializadora Delta S.A. de C.V.
|
|
Duracion: indefinida.
|
|
Capital social asciende a $100,000.00 M.N.
|
|
Capital fijo: $50,000.00
|
|
Capital variable: $50,000.00
|
|
Valor nominal: $1,000.00
|
|
Objeto social:
|
|
Comercializacion e importacion de equipo industrial.
|
|
Notario Publico numero 10 del estado de Nuevo Leon, Lic. Carlos Mendoza.
|
|
Clausula de extranjeros: se consideraran como nacionales y no invocar la proteccion de su gobierno.
|
|
`;
|
|
|
|
const result = extractActaLookupDictionary(text);
|
|
|
|
expect(result.instrumentNumber).toBe("7789");
|
|
expect(result.protocolVolumeBook).toBe("44");
|
|
expect(result.placeOfGranting).toContain("Monterrey");
|
|
expect(result.companyType).toBe("SA_DE_CV");
|
|
expect(result.capitalTotal).toContain("100,000.00");
|
|
expect(result.notaryNumber).toBe("10");
|
|
expect(result.foreignersClause).toBe("CLAUSULA_CALVO");
|
|
expect(result.derivedFields.isCompanyValidlyConstituted).toBe(true);
|
|
});
|
|
|
|
it("leaves missing fields as null", () => {
|
|
const result = extractFields("Acta sin datos suficientes");
|
|
|
|
expect(result.rfc).toBeNull();
|
|
expect(result.notaryName).toBeNull();
|
|
});
|
|
});
|