import { _Base as Base, BaseContent, PrefsButton, } from "content-src/components/Base/Base"; import { ASRouterAdmin } from "content-src/components/ASRouterAdmin/ASRouterAdmin"; import { ErrorBoundary } from "content-src/components/ErrorBoundary/ErrorBoundary"; import React from "react"; import { Search } from "content-src/components/Search/Search"; import { shallow } from "enzyme"; import { actionCreators as ac } from "common/Actions.sys.mjs"; describe("", () => { let DEFAULT_PROPS = { store: { getState: () => {} }, App: { initialized: true }, Prefs: { values: {} }, Sections: [], DiscoveryStream: { config: { enabled: false } }, dispatch: () => {}, adminContent: { message: {}, }, }; it("should render Base component", () => { const wrapper = shallow(); assert.ok(wrapper.exists()); }); it("should render the BaseContent component, passing through all props", () => { const wrapper = shallow(); const props = wrapper.find(BaseContent).props(); assert.deepEqual( props, DEFAULT_PROPS, JSON.stringify([props, DEFAULT_PROPS], null, 3) ); }); it("should render an ErrorBoundary with class base-content-fallback", () => { const wrapper = shallow(); assert.equal( wrapper.find(ErrorBoundary).first().prop("className"), "base-content-fallback" ); }); it("should render an ASRouterAdmin if the devtools pref is true", () => { const wrapper = shallow( ); assert.lengthOf(wrapper.find(ASRouterAdmin), 1); }); it("should not render an ASRouterAdmin if the devtools pref is false", () => { const wrapper = shallow( ); assert.lengthOf(wrapper.find(ASRouterAdmin), 0); }); }); describe("", () => { let DEFAULT_PROPS = { store: { getState: () => {} }, App: { initialized: true }, Prefs: { values: {} }, Sections: [], DiscoveryStream: { config: { enabled: false } }, dispatch: () => {}, }; it("should render an ErrorBoundary with a Search child", () => { const searchEnabledProps = Object.assign({}, DEFAULT_PROPS, { Prefs: { values: { showSearch: true } }, }); const wrapper = shallow(); assert.isTrue(wrapper.find(Search).parent().is(ErrorBoundary)); }); it("should dispatch a user event when the customize menu is opened or closed", () => { const dispatch = sinon.stub(); const wrapper = shallow( ); wrapper.instance().openCustomizationMenu(); assert.calledWith(dispatch, { type: "SHOW_PERSONALIZE" }); assert.calledWith(dispatch, ac.UserEvent({ event: "SHOW_PERSONALIZE" })); wrapper.instance().closeCustomizationMenu(); assert.calledWith(dispatch, { type: "HIDE_PERSONALIZE" }); assert.calledWith(dispatch, ac.UserEvent({ event: "HIDE_PERSONALIZE" })); }); it("should render only search if no Sections are enabled", () => { const onlySearchProps = Object.assign({}, DEFAULT_PROPS, { Sections: [{ id: "highlights", enabled: false }], Prefs: { values: { showSearch: true } }, }); const wrapper = shallow(); assert.lengthOf(wrapper.find(".only-search"), 1); }); }); describe("", () => { it("should render icon-settings if props.icon is empty", () => { const wrapper = shallow(); assert.isTrue(wrapper.find("button").hasClass("icon-settings")); }); it("should render props.icon as a className", () => { const wrapper = shallow(); assert.isTrue(wrapper.find("button").hasClass("icon-happy")); }); });