Skip to content

Commit

Permalink
fix: add more test coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
shanejonas committed Jul 3, 2019
1 parent b418474 commit 1f58fd8
Show file tree
Hide file tree
Showing 7 changed files with 126 additions and 8 deletions.
39 changes: 37 additions & 2 deletions __mocks__/monaco-editor.js
@@ -1,9 +1,44 @@
const MonacoEditorMock = {
class Selection {
//
};

const monaco = {
Uri: {
parse(f) {
return f;
}
},
get editor() {
return this;
},
languages: {
json: {
jsonDefaults: {
setDiagnosticsOptions() {
}
}
}
},
setSelection() {

},
focus() {

},
Selection,
onDidChangeModelContent() {

},
setModel() {

},
createModel() {
return {
updateOptions() {

}
}
},
create() {
return this;
},
Expand All @@ -13,4 +48,4 @@ const MonacoEditorMock = {
}
};

export default MonacoEditorMock;
module.exports = monaco;
9 changes: 9 additions & 0 deletions src/App.test.tsx
@@ -0,0 +1,9 @@
import React from "react";
import ReactDOM from "react-dom";
import App from "./App";

it("renders without crashing", () => {
const div = document.createElement("div");
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});
26 changes: 26 additions & 0 deletions src/JSONValidationErrorList.test.tsx
@@ -0,0 +1,26 @@
import React from "react";
import ReactDOM from "react-dom";
import JSONValidationErrorList from "./JSONValidationErrorList";
import * as monaco from "monaco-editor";

it("renders without crashing", () => {
const div = document.createElement("div");
ReactDOM.render(<JSONValidationErrorList markers={[]}/>, div);
ReactDOM.unmountComponentAtNode(div);
});

it("renders validation error list with markers", () => {
const div = document.createElement("div");
const markers: monaco.editor.IMarker[] = [
{
startLineNumber: 2,
startColumn: 10,
message: "bad thing",
} as monaco.editor.IMarker,
];
ReactDOM.render(<JSONValidationErrorList markers={markers} />, div);
expect(div.innerHTML.includes("2")).toBe(true);
expect(div.innerHTML.includes("10")).toBe(true);
expect(div.innerHTML.includes("bad thing")).toBe(true);
ReactDOM.unmountComponentAtNode(div);
});
49 changes: 49 additions & 0 deletions src/PlaygroundSplitPane.test.tsx
@@ -0,0 +1,49 @@
import React from "react";
import ReactDOM from "react-dom";
import PlaygroundSplitPane from "./PlaygroundSplitPane";
import * as monaco from "monaco-editor";

it("renders without crashing", () => {
const div = document.createElement("div");
ReactDOM.render(<PlaygroundSplitPane
left={
<div>Foo</div>
}
right={
<div>Bar</div>
}
/>, div);
ReactDOM.unmountComponentAtNode(div);
});

it("renders playground with left and right with split true", () => {
const div = document.createElement("div");
ReactDOM.render(<PlaygroundSplitPane
split={true}
left={
<div>Foo</div>
}
right={
<div>Bar</div>
}
/>, div);
expect(div.innerHTML.includes("Foo")).toBe(true);
expect(div.innerHTML.includes("Bar")).toBe(true);
ReactDOM.unmountComponentAtNode(div);
});

it("renders playground without left when split is false", () => {
const div = document.createElement("div");
ReactDOM.render(<PlaygroundSplitPane
split={false}
left={
<div>Foo</div>
}
right={
<div>Bar</div>
}
/>, div);
expect(div.innerHTML.includes("Foo")).toBe(false);
expect(div.innerHTML.includes("Bar")).toBe(true);
ReactDOM.unmountComponentAtNode(div);
});
5 changes: 2 additions & 3 deletions src/PlaygroundSplitPane.tsx
Expand Up @@ -6,7 +6,7 @@ interface IProps {
onChange?: (size: number) => any;
left: JSX.Element;
right: JSX.Element;
split: boolean;
split?: boolean | undefined;
}

const PlaygroundSplitPane: React.FC<IProps> = (props) => {
Expand All @@ -25,8 +25,7 @@ const PlaygroundSplitPane: React.FC<IProps> = (props) => {
}

return (
<SplitPane
split="vertical"
<SplitPane split="vertical"
minSize={100}
maxSize={-100}
defaultSize={window.innerWidth / 2}
Expand Down
4 changes: 2 additions & 2 deletions src/SearchBar/SearchBar.test.tsx
Expand Up @@ -4,13 +4,13 @@ import SearchBar from "./SearchBar";

it("renders without crashing", () => {
const div = document.createElement("div");
ReactDOM.render(<SearchBar />, div);
ReactDOM.render(<SearchBar searchBarUrl={undefined}/>, div);
ReactDOM.unmountComponentAtNode(div);
});

it("renders uiSchema inputPlaceholder", () => {
const div = document.createElement("div");
ReactDOM.render(<SearchBar uiSchema={{
ReactDOM.render(<SearchBar searchBarUrl={undefined} uiSchema={{
appBar: {
"ui:inputPlaceholder": "enter url",
},
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/useMonacoModel.tsx
Expand Up @@ -28,7 +28,7 @@ const useMonacoModel = (
editor.setModel(m);
const [selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn] = position;
editor.setSelection(
new monaco.Selection(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn)
new monaco.Selection(selectionStartLineNumber, selectionStartColumn, positionLineNumber, positionColumn),
);
editor.focus();
}
Expand Down

0 comments on commit 1f58fd8

Please sign in to comment.