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"));
});
});