Skip to content

Commit 36604c0

Browse files
committed
Fix: Tagged releases deploys only
Fix: Web worker working with jest
1 parent 633aa5e commit 36604c0

File tree

9 files changed

+75
-40
lines changed

9 files changed

+75
-40
lines changed

.github/workflows/gh-pages.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ on:
44
push:
55
branches:
66
- main
7-
pull_request:
8-
97
jobs:
108
deploy:
119
runs-on: ubuntu-20.04

__jest__/setup-after-env.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import '@testing-library/jest-dom/extend-expect';
22
import * as matchers from 'jest-extended';
3+
import Worker from './workerStub';
4+
5+
window.Worker = Worker;
6+
7+
jest.mock('../src/Stores/lintStore', () => require('../__mocks__/lintStore'));
8+
39
expect.extend(matchers);
410
//import {createSerializer} from 'enzyme-to-json';
511

__jest__/workerStub.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Worker {
2+
constructor(stringUrl) {
3+
this.url = stringUrl;
4+
this.onmessage = () => {};
5+
}
6+
7+
postMessage(msg) {
8+
this.onmessage(msg);
9+
}
10+
}
11+
12+
export default Worker;

__mocks__/lintStore.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
const LintStore = {
2+
__esModule: true,
3+
default: () => ({
4+
errors: [],
5+
warning: [],
6+
info: [],
7+
hints: [],
8+
spec: {},
9+
10+
lint: () => {},
11+
activate: () => {},
12+
handleWorkerMessage: () => {},
13+
}),
14+
};
15+
16+
module.exports = LintStore;

src/Stores/lintStore.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,19 @@ class LintStore {
3636
}
3737

3838
handleWorkerMessage({data}) {
39-
const results = data.results;
40-
this.errors = results.filter(
41-
(r) => r.severity === DiagnosticSeverity.Error,
42-
);
43-
this.warning = results.filter(
44-
(r) => r.severity === DiagnosticSeverity.Warning,
45-
);
46-
this.hints = results.filter((r) => r.severity === DiagnosticSeverity.Hint);
47-
this.info = results.filter((r) => r.severity === DiagnosticSeverity.Info);
39+
if (data && Object.prototype.hasOwnProperty.call(data, 'results')) {
40+
const results = data.results;
41+
this.errors = results.filter(
42+
(r) => r.severity === DiagnosticSeverity.Error,
43+
);
44+
this.warning = results.filter(
45+
(r) => r.severity === DiagnosticSeverity.Warning,
46+
);
47+
this.hints = results.filter(
48+
(r) => r.severity === DiagnosticSeverity.Hint,
49+
);
50+
this.info = results.filter((r) => r.severity === DiagnosticSeverity.Info);
51+
}
4852
}
4953
}
5054

src/components/Content/__tests__/content.test.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import React from 'react';
22
import userEvent from '@testing-library/user-event';
3-
import {Classes} from '@blueprintjs/core';
43
import {Classes as PopoverClasses} from '@blueprintjs/popover2';
54
import {
65
act,
@@ -10,7 +9,7 @@ import {
109
within,
1110
} from '../../../../test-utils';
1211
import Content from '../index';
13-
import {fireEvent, prettyDOM} from '@testing-library/dom';
12+
import {fireEvent} from '@testing-library/dom';
1413

1514
describe('Content tests', () => {
1615
describe('Schema tests', () => {

src/components/Sidebar/__tests__/Sidebar.test.js

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ describe('Sidebar tests', () => {
2424
};
2525

2626
beforeEach(() => {
27+
console.warn = jest.fn();
2728
const popover = getPopover();
2829
expect(popover).toBeNull();
2930
});
@@ -271,7 +272,7 @@ describe('Sidebar tests', () => {
271272
await act(async () => {
272273
await fireEvent.contextMenu(childNode);
273274
});
274-
const menuItems = getContextMenuItems();
275+
const menuItems = getContextMenuItems(`tree-ctxmenu-${childName}`);
275276
await act(async () => {
276277
await userEvent.click(menuItems[0].querySelector('a'));
277278
});
@@ -368,13 +369,15 @@ describe('Sidebar tests', () => {
368369
await act(async () => {
369370
fireEvent.contextMenu(childNode);
370371
});
371-
const menuItems = getContextMenuItems();
372+
const menuItems = getContextMenuItems(`tree-ctxmenu-/users`);
372373
// Delete path
373374
act(() => {
374375
userEvent.click(menuItems[0].querySelector('a'));
375376
});
376377

377-
const editItem = getNodeFromSidebar(NodeTypes.Path).querySelector('input');
378+
const editItem = screen
379+
.getByLabelText(NodeTypes.Path)
380+
.querySelector('input');
378381
expect(editItem).toHaveValue(`/users`);
379382
await act(async () => {
380383
await userEvent.type(editItem, `/abc{Enter}`);
@@ -444,7 +447,7 @@ describe('Sidebar tests', () => {
444447
await act(async () => {
445448
await fireEvent.contextMenu(childNode);
446449
});
447-
const menuItems = getContextMenuItems();
450+
const menuItems = getContextMenuItems(`tree-ctxmenu-/users`);
448451
// Delete operation
449452
act(() => {
450453
userEvent.click(menuItems[2].querySelector('a'));
@@ -496,21 +499,6 @@ function getChildNodeType(parentNodeType) {
496499
}
497500
}
498501

499-
async function addChildNode(nodeType, name) {
500-
const parentNode = await getNodeFromSidebar(nodeType);
501-
const addNewBtnLabel = getAddButtonLabel(nodeType);
502-
await clickAddNewItem(parentNode, addNewBtnLabel);
503-
504-
const editableItem = await screen.getAllByRole(/edititem/);
505-
expect(editableItem).toHaveLength(1);
506-
const editableInput = getEditableInput(editableItem[0]);
507-
await act(async () => {
508-
// Enter the new item name and press enter
509-
await userEvent.type(editableInput, `${name}{Enter}`);
510-
});
511-
return getNodeFromSidebar(getChildNodeType(nodeType));
512-
}
513-
514502
async function clickAddNewItem(menuItem, addBtnLabel) {
515503
await act(async () => {
516504
await fireEvent.contextMenu(menuItem);
@@ -529,8 +517,8 @@ function getNodeFromSidebar(nodeType) {
529517
return screen.getByLabelText(nodeType);
530518
}
531519

532-
function getContextMenuItems() {
533-
const popover = getPopover();
520+
function getContextMenuItems(name) {
521+
const popover = getPopover(name);
534522
return within(popover).queryAllByRole('listitem');
535523
}
536524

@@ -541,7 +529,10 @@ function getEditableInput(containerElem, shouldRaiseException = false) {
541529
: within(containerElem).queryByRole(/textbox/);
542530
}
543531

544-
function getPopover() {
532+
function getPopover(name) {
533+
if (name) {
534+
return document.querySelector(`ul[data-testid="${name}"]`);
535+
}
545536
return document.querySelector(
546537
`.${PopoverClasses.POPOVER2}.${Classes.MINIMAL}`,
547538
);

src/components/Tree/TreeRow.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ const getItems = (items) =>
2424
}
2525
});
2626

27-
const SidebarContextMenu = ({items}) => {
28-
return <Menu>{getItems(items)}</Menu>;
27+
const SidebarContextMenu = ({items, ...props}) => {
28+
return <Menu {...props}>{getItems(items)}</Menu>;
2929
};
3030

3131
SidebarContextMenu.propTypes = {
@@ -108,7 +108,13 @@ const TreeRow = observer((props) => {
108108
const menuItems = node ? generateContextMenu(node) : undefined;
109109
if (menuItems !== undefined && menuItems.length > 0) {
110110
return (
111-
<ContextMenu2 content={<SidebarContextMenu items={menuItems} />}>
111+
<ContextMenu2
112+
content={
113+
<SidebarContextMenu
114+
items={menuItems}
115+
data-testid={`tree-ctxmenu-${node.name}`}
116+
/>
117+
}>
112118
<div
113119
key={node.id}
114120
data-testid={`tree-row-${node.id}`}

src/worker/lint.worker.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,17 @@ const {Spectral} = require('@stoplight/spectral-core');
22
const {oas} = require('@stoplight/spectral-rulesets');
33

44
self.onmessage = async ({data}) => {
5-
const results = await lintSpec(data.spec);
6-
self.postMessage({msg: 'worker', spec: data.spec, results});
5+
if (Object.prototype.hasOwnProperty.call(data, 'spec') && data.spec) {
6+
const results = await lintSpec(data.spec);
7+
self.postMessage({msg: 'worker', spec: data.spec, results});
8+
}
79
};
810

911
const lintSpec = (spec) => {
1012
const spectral = new Spectral();
1113
spectral.setRuleset({
1214
extends: oas,
1315
});
16+
console.log('worker11', spec);
1417
return spectral.run(spec);
1518
};

0 commit comments

Comments
 (0)