Event cases
Sometimes you want to test your system with a variety of different values. For example, you might be testing a payment system where you can pay with many different currencies, and you need to ensure that GBP
, EUR
and USD
all work.
You can use eventCases
to test with these different values:
ts
const machine = createTestMachine({initial: "onPaymentPage",states: {onPaymentPage: {on: {SUBMIT_PAYMENT_FORM: "submitted",},},submitted: {},},});const model = createTestModel({eventCases: {SUBMIT_PAYMENT_FORM: [{currency: "GBP",},{currency: "USD",},{currency: "EUR",},],},});model.getPaths().forEach((path) => {it(path.description, () => {path.testSync({events: ({ event }) => {/*** Select the currency from the event.currency*/cy.findByLabelText("Currency").select(event.currency,);/*** Submit the form*/cy.findByRole("button", {name: "Submit",}).click();},});});});
ts
const machine = createTestMachine({initial: "onPaymentPage",states: {onPaymentPage: {on: {SUBMIT_PAYMENT_FORM: "submitted",},},submitted: {},},});const model = createTestModel({eventCases: {SUBMIT_PAYMENT_FORM: [{currency: "GBP",},{currency: "USD",},{currency: "EUR",},],},});model.getPaths().forEach((path) => {it(path.description, () => {path.testSync({events: ({ event }) => {/*** Select the currency from the event.currency*/cy.findByLabelText("Currency").select(event.currency,);/*** Submit the form*/cy.findByRole("button", {name: "Submit",}).click();},});});});
Using eventCases
will create a different path for each case. In the example above, the test model will test that each currency can be submitted.