|
| 1 | +import { render, screen } from "@testing-library/react"; |
| 2 | +import "@testing-library/jest-dom"; |
| 3 | +import TransactionCertificationBreadcrumb from "#/CertifyCardanoTransactionsModal/TransactionCertificationBreadcrumb"; |
| 4 | +import { validationSteps } from "#/CertifyCardanoTransactionsModal"; |
| 5 | + |
| 6 | +function setup(currentStep, isProofValid, isCertificateChainValid) { |
| 7 | + const utils = [ |
| 8 | + render( |
| 9 | + <TransactionCertificationBreadcrumb |
| 10 | + currentStep={currentStep} |
| 11 | + isProofValid={isProofValid} |
| 12 | + isCertificateChainValid={isCertificateChainValid} |
| 13 | + />, |
| 14 | + ), |
| 15 | + ]; |
| 16 | + |
| 17 | + const tabs = new Map(); |
| 18 | + tabs.set(validationSteps.fetchingProof, screen.getByText(/Fetching Transactions Proof/i)); |
| 19 | + tabs.set(validationSteps.validatingProof, screen.getByText(/Verifying Transactions Proof/i)); |
| 20 | + tabs.set( |
| 21 | + validationSteps.validatingCertificateChain, |
| 22 | + screen.getByText(/Validating Certificate Chain/i), |
| 23 | + ); |
| 24 | + tabs.set(validationSteps.done, screen.getByText(/Finish/i)); |
| 25 | + |
| 26 | + return { |
| 27 | + tabs: tabs, |
| 28 | + ...utils, |
| 29 | + }; |
| 30 | +} |
| 31 | + |
| 32 | +const classForVariant = (variant) => `list-group-item-${variant}`; |
| 33 | + |
| 34 | +describe("TransactionCertificationBreadcrumb", () => { |
| 35 | + it("The tab variant are light when default", () => { |
| 36 | + const { tabs } = setup(validationSteps.ready, false, false); |
| 37 | + |
| 38 | + for (const [_key, tab] of tabs) { |
| 39 | + expect(tab).toHaveClass(classForVariant("light")); |
| 40 | + } |
| 41 | + }); |
| 42 | + |
| 43 | + it.each([ |
| 44 | + ["fetchingProof", validationSteps.fetchingProof], |
| 45 | + ["validatingProof", validationSteps.validatingProof], |
| 46 | + ["validatingCertificateChain", validationSteps.validatingCertificateChain], |
| 47 | + ])("The tab variant is primary when current and checks are valid : %s", (stepName, stepIndex) => { |
| 48 | + const { tabs } = setup(stepIndex, true, true); |
| 49 | + |
| 50 | + expect(tabs.get(stepIndex)).toHaveClass(classForVariant("primary")); |
| 51 | + }); |
| 52 | + |
| 53 | + it("Current step is done and checks are valid then tabs are light except done step tab that is success", () => { |
| 54 | + const { tabs } = setup(validationSteps.done, true, true); |
| 55 | + |
| 56 | + expect(tabs.get(validationSteps.fetchingProof)).toHaveClass(classForVariant("light")); |
| 57 | + expect(tabs.get(validationSteps.validatingProof)).toHaveClass(classForVariant("light")); |
| 58 | + expect(tabs.get(validationSteps.validatingCertificateChain)).toHaveClass( |
| 59 | + classForVariant("light"), |
| 60 | + ); |
| 61 | + expect(tabs.get(validationSteps.done)).toHaveClass(classForVariant("success")); |
| 62 | + }); |
| 63 | + |
| 64 | + it("Current step is done and proof check is invalid then tabs are danger except tabs before proof validation", () => { |
| 65 | + const { tabs } = setup(validationSteps.done, false, true); |
| 66 | + |
| 67 | + expect(tabs.get(validationSteps.fetchingProof)).toHaveClass(classForVariant("light")); |
| 68 | + expect(tabs.get(validationSteps.validatingProof)).toHaveClass(classForVariant("danger")); |
| 69 | + expect(tabs.get(validationSteps.validatingCertificateChain)).toHaveClass( |
| 70 | + classForVariant("danger"), |
| 71 | + ); |
| 72 | + expect(tabs.get(validationSteps.done)).toHaveClass(classForVariant("danger")); |
| 73 | + }); |
| 74 | + |
| 75 | + it("Current step is done and certificate chain check is invalid then tabs are danger except tabs before certificate chain validation", () => { |
| 76 | + const { tabs } = setup(validationSteps.done, true, false); |
| 77 | + |
| 78 | + expect(tabs.get(validationSteps.fetchingProof)).toHaveClass(classForVariant("light")); |
| 79 | + expect(tabs.get(validationSteps.validatingProof)).toHaveClass(classForVariant("light")); |
| 80 | + expect(tabs.get(validationSteps.validatingCertificateChain)).toHaveClass( |
| 81 | + classForVariant("danger"), |
| 82 | + ); |
| 83 | + expect(tabs.get(validationSteps.done)).toHaveClass(classForVariant("danger")); |
| 84 | + }); |
| 85 | +}); |
0 commit comments