@patchworkdev/common
Version:
Patchwork Development Kit
63 lines (62 loc) • 3.26 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 project_config_1 = __importDefault(require("../codegen/test_data/project_configs/project-config"));
const project_config_contract_config_1 = __importDefault(require("../codegen/test_data/project_configs/project-config-contract-config"));
const jsonProjectConfigLoader_1 = require("./jsonProjectConfigLoader");
// Custom function to compare ContractConfigs while ignoring certain fields
function compareContractConfigs(actual, expected) {
const simplifyField = (field) => {
const { arrayLength, permissionId, visibility, ...rest } = field;
return rest;
};
const simplifyContractConfig = (config) => ({
...config,
fields: config.fields.map(simplifyField)
});
expect(simplifyContractConfig(actual)).toEqual(simplifyContractConfig(expected));
}
// Custom function to compare ProjectConfigs with ContractConfig
function compareProjectConfigsWithContractConfig(actual, expected) {
expect(actual.name).toEqual(expected.name);
expect(actual.scopes).toEqual(expected.scopes);
// Compare contracts separately
expect(actual.contracts.size).toEqual(expected.contracts.size);
Object.entries(actual.contracts).forEach((kv) => {
const expectedValue = expected.contracts[kv[0]];
if (typeof kv[1] === 'string' || typeof expectedValue === 'string') {
expect(kv[1]).toEqual(expectedValue);
}
else {
compareContractConfigs(kv[1], expectedValue);
}
});
}
describe("JSONProjectConfigLoader", () => {
describe("JSONProjectConfigLoader", () => {
it("should load a project config matching project-config.json", async () => {
const projectConfigPath = path_1.default.join(__dirname, '../codegen/test_data/project_configs/project-config.json');
const projectJson = fs_1.default.readFileSync(projectConfigPath, 'utf-8');
const loadedConfig = new jsonProjectConfigLoader_1.JSONProjectConfigLoader().load(projectJson);
// Build the expected config by merging in default plugins if they're missing.
const expectedConfig = {
...project_config_1.default,
plugins: project_config_1.default.plugins || [
{ name: 'ponder' },
{ name: 'react' }
]
};
expect(loadedConfig).toEqual(expectedConfig);
});
});
it("should load a project config matching project-config-contract-config.json", async () => {
const projectConfigPath = path_1.default.join(__dirname, '../codegen/test_data/project_configs/project-config-contract-config.json');
const projectJson = fs_1.default.readFileSync(projectConfigPath, 'utf-8');
const loadedConfig = new jsonProjectConfigLoader_1.JSONProjectConfigLoader().load(projectJson);
compareProjectConfigsWithContractConfig(loadedConfig, project_config_contract_config_1.default);
});
});