import { mount } from "enzyme"; import Immutable from "immutable"; import React from "react"; import { selectors } from "@nteract/core"; import { mockAppState } from "@nteract/fixtures"; import { RichMedia } from "@nteract/outputs"; import { makeMapStateToProps, Pagers } from "../../src/outputs/pagers"; describe("makeMapStateToProps", () => { it("returns an empty set of pagers for non-notebook files", () => { const state = mockAppState(); const ownProps = { contentRef: "anyContentRef", id: "nonExistantCell", children: [] }; const mapStateToProps = makeMapStateToProps(state, ownProps); expect(mapStateToProps(state)).toEqual({ pagers: Immutable.List() }); }); it("returns an empty set of pagers for non-existant cells", () => { const state = mockAppState(); const contentRef = state.core.entities.contents.byRef.keySeq().first(); const ownProps = { contentRef, id: "nonExistantCell", children: [] }; const mapStateToProps = makeMapStateToProps(state, ownProps); expect(mapStateToProps(state)).toEqual({ pagers: Immutable.List() }); }); it("returns a set of pagers for existant cells", () => { // Generate mock state with single cell const mockState = mockAppState({ codeCellCount: 1 }); // Extract pre-generated content ref and cell ID const contentRef = mockState.core.entities.contents.byRef.keySeq().first(); const model = selectors.model(mockState, { contentRef }); const id = selectors.notebook.cellOrder(model).first(); // Update pagers for testing const pagers = Immutable.List(["test"]); const state = { ...mockState, core: mockState.core.setIn( ["entities", "contents", "byRef", contentRef, "model", "cellPagers"], Immutable.Map({ [id]: pagers }) ) }; const ownProps = { contentRef, id, children: [] }; const mapStateToProps = makeMapStateToProps(state, ownProps); expect(mapStateToProps(state)).toEqual({ pagers }); }); }); describe("Pagers", () => { it("renders nothing for empty list of pagers", () => { const component = mount( ); expect(component.find(RichMedia)).toHaveLength(0); }); it("renders RichMedia for each pager", () => { const component = mount( ); expect(component.find(RichMedia)).toHaveLength(2); }); });