import { actionCreators as ac } from "common/Actions.sys.mjs"; import { ContentSection } from "content-src/components/CustomizeMenu/ContentSection/ContentSection"; import { mount } from "enzyme"; import React from "react"; const DEFAULT_PROPS = { enabledSections: { pocketEnabled: true, topSitesEnabled: true, }, mayHaveSponsoredTopSites: true, mayHaveSponsoredStories: true, pocketRegion: true, dispatch: sinon.stub(), setPref: sinon.stub(), }; describe("ContentSection", () => { let wrapper; beforeEach(() => { wrapper = mount(); }); it("should render the component", () => { assert.ok(wrapper.exists()); }); it("should look for an eventSource attribute and dispatch an event for INPUT", () => { wrapper.instance().onPreferenceSelect({ target: { nodeName: "INPUT", checked: true, getAttribute: eventSource => eventSource === "eventSource" ? "foo" : null, }, }); assert.calledWith( DEFAULT_PROPS.dispatch, ac.UserEvent({ event: "PREF_CHANGED", source: "foo", value: { status: true, menu_source: "CUSTOMIZE_MENU" }, }) ); wrapper.unmount(); }); it("should have eventSource attributes on relevent pref changing inputs", () => { wrapper = mount(); assert.equal( wrapper.find("#shortcuts-toggle").prop("eventSource"), "TOP_SITES" ); assert.equal( wrapper.find("#sponsored-shortcuts").prop("eventSource"), "SPONSORED_TOP_SITES" ); assert.equal( wrapper.find("#pocket-toggle").prop("eventSource"), "TOP_STORIES" ); assert.equal( wrapper.find("#sponsored-pocket").prop("eventSource"), "POCKET_SPOCS" ); assert.equal( wrapper.find("#highlights-toggle").prop("eventSource"), "HIGHLIGHTS" ); }); });