UNPKG

@digitalproductpassport/smartcontracts

Version:

Public project for Digital Product Passport with the idea to create an EIP

118 lines (105 loc) 4 kB
import { expect } from "chai"; require("hardhat"); describe("ProductPassport", function () { let ProductPassport; let productPassport; let owner; let addr1; beforeEach(async function () { [owner, addr1] = await ethers.getSigners(); ProductPassport = await ethers.getContractFactory("ProductPassport"); productPassport = await ProductPassport.deploy(owner.address); await productPassport.waitForDeployment(); await productPassport.authorizeEntity(owner.address); }); it("Should set and retrieve product data correctly", async function () { const productId = 1; const description = "Product description"; const manuals = ["Manual 1", "Manual 2"]; const specifications = ["Spec 1", "Spec 2"]; const batchNumber = "Batch-001"; const productionDate = "2023-01-01"; const expiryDate = "2025-01-01"; const certifications = "Cert-123"; const warrantyInfo = "2 years"; const materialComposition = "Material 1, Material 2"; const complianceInfo = "Compliant with standard XYZ"; await productPassport.setProductData( productId, description, manuals, specifications, batchNumber, productionDate, expiryDate, certifications, warrantyInfo, materialComposition, complianceInfo ); const productData = await productPassport.getProductData(productId); expect(productData.description).to.equal(description); expect(productData.manuals).to.eql(manuals); expect(productData.specifications).to.eql(specifications); expect(productData.batchNumber).to.equal(batchNumber); expect(productData.productionDate).to.equal(productionDate); expect(productData.expiryDate).to.equal(expiryDate); expect(productData.certifications).to.equal(certifications); expect(productData.warrantyInfo).to.equal(warrantyInfo); expect(productData.materialComposition).to.equal(materialComposition); expect(productData.complianceInfo).to.equal(complianceInfo); }); it("Should only allow authorized entities to set product data", async function () { const productId = 1; const description = "Product description"; const manuals = ["Manual 1", "Manual 2"]; const specifications = ["Spec 1", "Spec 2"]; const batchNumber = "Batch-001"; const productionDate = "2023-01-01"; const expiryDate = "2025-01-01"; const certifications = "Cert-123"; const warrantyInfo = "2 years"; const materialComposition = "Material 1, Material 2"; const complianceInfo = "Compliant with standard XYZ"; await expect( productPassport.connect(addr1).setProductData( productId, description, manuals, specifications, batchNumber, productionDate, expiryDate, certifications, warrantyInfo, materialComposition, complianceInfo ) ).to.be.revertedWith("Not authorized"); await productPassport.authorizeEntity(addr1.address); await productPassport.connect(addr1).setProductData( productId, description, manuals, specifications, batchNumber, productionDate, expiryDate, certifications, warrantyInfo, materialComposition, complianceInfo ); const productData = await productPassport.getProductData(productId); expect(productData.description).to.equal(description); expect(productData.manuals).to.eql(manuals); expect(productData.specifications).to.eql(specifications); expect(productData.batchNumber).to.equal(batchNumber); expect(productData.productionDate).to.equal(productionDate); expect(productData.expiryDate).to.equal(expiryDate); expect(productData.certifications).to.equal(certifications); expect(productData.warrantyInfo).to.equal(warrantyInfo); expect(productData.materialComposition).to.equal(materialComposition); expect(productData.complianceInfo).to.equal(complianceInfo); }); });