import { mount } from "enzyme"; import Immutable from "immutable"; import React from "react"; import { selectors } from "@nteract/core"; import { mockAppState } from "@nteract/fixtures"; import { makeMapStateToProps, Cell } from "../../src/cells/cell"; describe("Cell", () => { it("picks the correct child component when it exists", () => { function ChosenOneCell(props) { return

ChosenOneCell

; } ChosenOneCell.defaultProps = { cell_type: "the_one" }; function NotTheOneCell(props) { return

NotTheOneCell

; } NotTheOneCell.defaultProps = { cell_type: "not_the_one" }; const component = mount( ); expect(component.html()).toBe( '

ChosenOneCell

' ); }); it("returns null when no valid child component exists", () => { function ChosenOneCell(props) { return

ChosenOneCell

; } ChosenOneCell.defaultProps = { cell_type: "the_one" }; function NotTheOneCell(props) { return

NotTheOneCell

; } NotTheOneCell.defaultProps = { cell_type: "not_the_one" }; const component = mount( ); expect(component.children()).toHaveLength(0); }); it("only looks for the cell_type prop when matching", () => { function ChosenOneCell(props) { return

ChosenOneCell

; } ChosenOneCell.defaultProps = { not_cell_type: "the_one" }; function NotTheOneCell(props) { return

NotTheOneCell

; } NotTheOneCell.defaultProps = { cell_type: "not_the_one" }; const component = mount( ); expect(component.children()).toHaveLength(0); }); }); describe("makeMapStateToProps", () => { it("returns nothing if content is not a notebook", () => { const state = mockAppState({}); const ownProps = { id: "cellId", contentRef: "contentRef", children: [] }; const result = makeMapStateToProps(state, ownProps)(state); expect(result.selected).toBe(false); expect(result.cell).toBeUndefined(); }); it("returns nothing if there is no cell with an id", () => { const state = mockAppState({}); const contentRef = state.core.entities.contents.byRef.keySeq().first(); const ownProps = { id: "cellId", contentRef, children: [] }; const result = makeMapStateToProps(state, ownProps)(state); expect(result.selected).toBe(false); expect(result.cell).toBeUndefined(); }); it("returns correct info for currently focused cell", () => { const state = mockAppState({ codeCellCount: 3 }); const contentRef = state.core.entities.contents.byRef.keySeq().first(); const model = selectors.model(state, { contentRef }); const cellOrder = selectors.notebook.cellOrder(model); const ownProps = { id: cellOrder.last(), contentRef, children: [] }; const result = makeMapStateToProps(state, ownProps)(state); expect(result.selected).toBe(false); expect(result.cell).toBeDefined(); }); it("returns correct info for currently focused cell", () => { const state = mockAppState({ codeCellCount: 3 }); const contentRef = state.core.entities.contents.byRef.keySeq().first(); const model = selectors.model(state, { contentRef }); const cellOrder = selectors.notebook.cellOrder(model); const ownProps = { id: cellOrder.get(1), contentRef, children: [] }; const result = makeMapStateToProps(state, ownProps)(state); expect(result.selected).toBe(true); expect(result.cell).toBeDefined(); }); });