Skip to content

Commit

Permalink
fix(editor): Schema view shows checkbox in case of empty data (#4889)
Browse files Browse the repository at this point in the history
* fix(editor): Schema view show nothing in case of empty data

* fix(editor): Schema view test for empty data
  • Loading branch information
cstuncsik authored Dec 12, 2022
1 parent 07b2f76 commit b0c158c
Show file tree
Hide file tree
Showing 4 changed files with 74 additions and 48 deletions.
2 changes: 1 addition & 1 deletion packages/editor-ui/src/components/RunData.vue
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@
/>

<run-data-schema
v-else-if="hasNodeRun && displayMode === 'schema' && jsonData?.length > 0"
v-else-if="hasNodeRun && displayMode === 'schema'"
:data="jsonData"
:mappingEnabled="mappingEnabled"
:distanceFromActive="distanceFromActive"
Expand Down
100 changes: 55 additions & 45 deletions packages/editor-ui/src/components/RunDataSchema.test.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,69 @@
import { PiniaVuePlugin } from 'pinia';
import { createTestingPinia } from '@pinia/testing';
import { render } from '@testing-library/vue';
import { render, cleanup } from '@testing-library/vue';
import RunDataJsonSchema from '@/components/RunDataSchema.vue';
import { STORES } from "@/constants";

describe('RunDataJsonSchema.vue', () => {
it('renders json schema properly', () => {
const { container } = render(RunDataJsonSchema, {
pinia: createTestingPinia({
initialState: {
[STORES.SETTINGS]: {
settings: {
templates: {
enabled: true,
host: 'https://api.n8n.io/api/',
},
},
const renderOptions = {
pinia: createTestingPinia({
initialState: {
[STORES.SETTINGS]: {
settings: {
templates: {
enabled: true,
host: 'https://api.n8n.io/api/',
},
},
}),
stubs: ['font-awesome-icon'],
props: {
mappingEnabled: true,
distanceFromActive: 1,
runIndex: 1,
totalRuns: 2,
node: {
parameters: {
keepOnlySet: false,
values: {},
options: {},
},
id: '820ea733-d8a6-4379-8e73-88a2347ea003',
name: 'Set',
type: 'n8n-nodes-base.set',
typeVersion: 1,
position: [
380,
1060,
],
disabled: false,
},
data: [{ name: 'John', age: 22, hobbies: ['surfing', 'traveling'] }, { name: 'Joe', age: 33, hobbies: ['skateboarding', 'gaming'] }],
},
mocks: {
$locale: {
baseText() {
return '';
},
},
$store: {
getters: {},
},
},
}),
stubs: ['font-awesome-icon'],
props: {
mappingEnabled: true,
distanceFromActive: 1,
runIndex: 1,
totalRuns: 2,
node: {
parameters: {
keepOnlySet: false,
values: {},
options: {},
},
id: '820ea733-d8a6-4379-8e73-88a2347ea003',
name: 'Set',
type: 'n8n-nodes-base.set',
typeVersion: 1,
position: [
380,
1060,
],
disabled: false,
},
data: [{}],
},
mocks: {
$locale: {
baseText() {
return '';
},
},
},
};

beforeEach(cleanup);

it('renders schema for empty data', () => {
const { container } = render(RunDataJsonSchema, renderOptions,
vue => {
vue.use(PiniaVuePlugin);
});
expect(container).toMatchSnapshot();
});

it('renders schema for data', () => {
renderOptions.props.data = [{ name: 'John', age: 22, hobbies: ['surfing', 'traveling'] }, { name: 'Joe', age: 33, hobbies: ['skateboarding', 'gaming'] }];
const { container } = render(RunDataJsonSchema, renderOptions,
vue => {
vue.use(PiniaVuePlugin);
});
Expand Down
8 changes: 7 additions & 1 deletion packages/editor-ui/src/components/RunDataSchema.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { useWebhooksStore } from "@/stores/webhooks";
import { runExternalHook } from "@/mixins/externalHooks";
import { telemetry } from "@/plugins/telemetry";
import { IDataObject } from "n8n-workflow";
import { getSchema, mergeDeep } from "@/utils";
import { getSchema, isEmpty, mergeDeep } from "@/utils";
type Props = {
data: IDataObject[]
Expand All @@ -32,6 +32,10 @@ const schema = computed<Schema>(() => {
return getSchema(mergeDeep([head, ...tail, head]));
});
const isDataEmpty = computed(() => {
return isEmpty(props.data);
});
const onDragStart = (el: HTMLElement) => {
if (el && el.dataset?.path) {
draggingPath.value = el.dataset.path;
Expand Down Expand Up @@ -67,7 +71,9 @@ const onDragEnd = (el: HTMLElement) => {

<template>
<div :class="$style.schemaWrapper">
<div v-if="isDataEmpty" />
<draggable
v-else
type="mapping"
targetDataKey="mappable"
:disabled="!mappingEnabled"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// Vitest Snapshot v1

exports[`RunDataJsonSchema.vue > renders json schema properly 1`] = `
exports[`RunDataJsonSchema.vue > renders schema for data 1`] = `
<div>
<div
class="_schemaWrapper_1w572_1"
Expand Down Expand Up @@ -251,3 +251,13 @@ exports[`RunDataJsonSchema.vue > renders json schema properly 1`] = `
</div>
</div>
`;

exports[`RunDataJsonSchema.vue > renders schema for empty data 1`] = `
<div>
<div
class="_schemaWrapper_1w572_1"
>
<div />
</div>
</div>
`;

0 comments on commit b0c158c

Please sign in to comment.