import React from "react" import expect from "expect" import { render } from "enzyme" import System from "core/system" describe("wrapComponents", () => { describe("should wrap a component and provide a reference to the original", () => { it("with stateless components", function(){ // Given const system = new System({ plugins: [ { components: { wow: ({ name }) =>
{name} component
} }, { wrapComponents: { wow: (OriginalComponent) => (props) => { return } } } ] }) // When var Component = system.getSystem().getComponents("wow") const wrapper = render() const container = wrapper.children().first() expect(container[0].name).toEqual("container") const children = container.children() expect(children.length).toEqual(2) expect(children.eq(0).text()).toEqual("Normal component") expect(children.eq(1).text()).toEqual("Wrapped component") }) it("with React classes", function(){ class MyComponent extends React.Component { render() { return
{this.props.name} component
} } // Given const system = new System({ plugins: [ { components: { wow: MyComponent } }, { wrapComponents: { wow: (OriginalComponent) => { return class WrapperComponent extends React.Component { render() { return } } } } } ] }) // When var Component = system.getSystem().getComponents("wow") const wrapper = render() const container = wrapper.children().first() expect(container[0].name).toEqual("container") const children = container.children() expect(children.length).toEqual(2) expect(children.eq(0).text()).toEqual("Normal component") expect(children.eq(1).text()).toEqual("Wrapped component") }) }) it("should provide a reference to the system to the wrapper", function(){ // Given const mySystem = new System({ plugins: [ { // Make a selector statePlugins: { doge: { selectors: { wow: () => () => { return "WOW much data" } } } } }, { // Create a component components: { wow: () =>
Original component
} }, { // Wrap the component and use the system wrapComponents: { wow: (OriginalComponent, system) => (props) => { return
{system.dogeSelectors.wow()}
} } } ] }) // Then var Component = mySystem.getSystem().getComponents("wow") const wrapper = render() const container = wrapper.children().first() expect(container[0].name).toEqual("container") const children = container.children() expect(children.length).toEqual(2) expect(children.eq(0).text()).toEqual("Original component") expect(children.eq(1).text()).toEqual("WOW much data") }) })