github.com/replicatedhq/ship@v0.55.0/web/init/src/components/kustomize/HelmValuesEditor.spec.js (about) 1 import React from "react"; 2 import { shallow } from "enzyme"; 3 import HelmValuesEditor from "./HelmValuesEditor"; 4 5 const mockShipAppMetadata = { 6 values: "some: values", 7 readme: "a readme", 8 name: "test", 9 } 10 11 const mockGetStep = {}; 12 13 describe("HelmValuesEditor", () => { 14 describe("with invalid helm values", () => { 15 describe("saved and finalized", () => { 16 it("allows for the save button to be clicked after an error", async() => { 17 const mockSaveValues = jest.fn(); 18 mockSaveValues.mockImplementation(() => Promise.resolve({ errors: ["Test error"]})); 19 20 const mockSpecValue = "some: different values"; 21 const wrapper = shallow( 22 <HelmValuesEditor 23 shipAppMetadata={mockShipAppMetadata} 24 saveValues={mockSaveValues} 25 getStep={mockGetStep} 26 /> 27 ); 28 29 wrapper.setState({ specValue: mockSpecValue }); 30 await wrapper.instance().handleSaveValues(true); 31 32 expect(mockSaveValues.mock.calls).toHaveLength(1); 33 const elements = wrapper.find("button.hv-save"); 34 expect(elements).toHaveLength(2); 35 elements.forEach((element) => { 36 expect(element.prop("disabled")).toEqual(false); 37 }); 38 }); 39 }); 40 describe("saved", () => { 41 it("allows for the save button to be clicked after an error", async() => { 42 const mockSaveValues = jest.fn(); 43 mockSaveValues.mockImplementation(() => Promise.resolve({ errors: ["Test error"]})); 44 45 const mockSpecValue = "some: different values"; 46 const wrapper = shallow( 47 <HelmValuesEditor 48 shipAppMetadata={mockShipAppMetadata} 49 saveValues={mockSaveValues} 50 getStep={mockGetStep} 51 /> 52 ); 53 54 wrapper.setState({ specValue: mockSpecValue }); 55 await wrapper.instance().handleSaveValues(false); 56 57 expect(mockSaveValues.mock.calls).toHaveLength(1); 58 const elements = wrapper.find("button.hv-save"); 59 expect(elements).toHaveLength(2); 60 elements.forEach((element, i) => { 61 expect(element.prop("disabled")).toEqual(false); 62 }); 63 }); 64 }); 65 }); 66 });