UNPKG

@patchworkdev/common

Version:

Patchwork Development Kit

63 lines (62 loc) 3.26 kB
"use strict"; 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); }); });