@patchworkdev/common
Version:
Patchwork Development Kit
44 lines (43 loc) • 2.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const contractSchema_1 = require("../codegen/contractSchema");
const contractSchemaJsonParser_1 = require("../codegen/contractSchemaJsonParser");
const jsonContractConfigGen_1 = require("./jsonContractConfigGen");
describe("JSONContractConfigGen", () => {
const testDirectory = "./src/codegen/test_data";
const files = fs_1.default.readdirSync(testDirectory);
const jsonFiles = files.filter((file) => file.endsWith(".json"));
const solFiles = files.filter((file) => file.endsWith(".sol"));
const groupedFiles = jsonFiles.reduce((acc, jsonFile) => {
const baseName = path_1.default.basename(jsonFile, ".json");
acc[baseName] = {
json: path_1.default.join(testDirectory, jsonFile),
sol: path_1.default.join(testDirectory, baseName + ".sol"),
};
return acc;
}, {});
for (const [baseName, files] of Object.entries(groupedFiles)) {
if (solFiles.includes(baseName + ".sol")) {
it(`should generate matching JSON for ${baseName}`, () => {
// 1. Construct ContractSchema from JSON
const originalJsonString = fs_1.default.readFileSync(files.json, "utf8");
const originalJson = JSON.parse(originalJsonString);
const contractConfig = (0, contractSchemaJsonParser_1.parseJson)(originalJson);
// 2. Call JSONContractConfigGen with the ContractSchema
const generator = new jsonContractConfigGen_1.JSONContractConfigGen();
const generatedJsonString = generator.gen(new contractSchema_1.ContractSchemaImpl(contractConfig));
// 3. Compare generated JSON with original JSON
const generatedJson = JSON.parse(generatedJsonString);
// Remove whitespace and newlines for comparison
const normalizedOriginal = JSON.stringify(originalJson).replace(/\s/g, '');
const normalizedGenerated = JSON.stringify(generatedJson).replace(/\s/g, '');
expect(normalizedGenerated).toEqual(normalizedOriginal);
});
}
}
});