Source code

Revision control

Copy as Markdown

Other Tools

/* eslint max-nested-callbacks: ["error", 7] */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at <http://mozilla.org/MPL/2.0/>. */
import React from "devtools/client/shared/vendor/react";
import { shallow } from "enzyme";
import SourceFooter from "../Footer";
import { createSourceObject } from "../../../utils/test-head";
import { setDocument } from "../../../utils/editor";
function createMockDocument(clear, position) {
const doc = {
getCursor: jest.fn(() => position),
};
return doc;
}
function generateDefaults(overrides) {
return {
editor: {
codeMirror: {
doc: {},
cursorActivity: jest.fn(),
on: jest.fn(),
},
},
endPanelCollapsed: false,
selectedSource: {
...createSourceObject("foo"),
content: null,
},
...overrides,
};
}
function render(overrides = {}, position = { line: 0, column: 0 }) {
const clear = jest.fn();
const props = generateDefaults(overrides);
const doc = createMockDocument(clear, position);
setDocument(props.selectedSource.id, doc);
const component = shallow(
React.createElement(SourceFooter.WrappedComponent, props),
{
lifecycleExperimental: true,
}
);
return { component, props, clear, doc };
}
describe("SourceFooter Component", () => {
describe("default case", () => {
it("should render", () => {
const { component } = render();
expect(component).toMatchSnapshot();
});
});
describe("move cursor", () => {
it("should render new cursor position", () => {
const { component } = render();
component.setState({ cursorPosition: { line: 5, column: 10 } });
expect(component).toMatchSnapshot();
});
});
});