mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 15:22:55 +01:00
Co-Authored-By: Eric Tuvesson <eric.tuvesson@gmail.com> Co-Authored-By: mikaeltellhed <2311083+mikaeltellhed@users.noreply.github.com> Co-Authored-By: kotte <14197736+mrtamagotchi@users.noreply.github.com> Co-Authored-By: Anders Larsson <64838990+anders-topp@users.noreply.github.com> Co-Authored-By: Johan <4934465+joolsus@users.noreply.github.com> Co-Authored-By: Tore Knudsen <18231882+torekndsn@users.noreply.github.com> Co-Authored-By: victoratndl <99176179+victoratndl@users.noreply.github.com>
156 lines
4.3 KiB
JavaScript
156 lines
4.3 KiB
JavaScript
var { diffProject } = require('@noodl-utils/projectmerger.diff');
|
|
var fs = require('fs');
|
|
var Process = require('process');
|
|
|
|
// Project settings
|
|
describe('Project merger diff', function () {
|
|
it('can diff two identical projects without reporting any changes', function () {
|
|
const base = JSON.parse(
|
|
fs.readFileSync(
|
|
Process.cwd() + '/tests/testfs/merge-tests/move-nodes/base-merge-project-Wed--03-Feb-2021-11-07-55-GMT.json'
|
|
)
|
|
);
|
|
const diff = diffProject(base, base);
|
|
|
|
expect(diff.components.changed.length).toBe(0, 'no changed components');
|
|
expect(diff.components.created.length).toBe(0, 'no created components');
|
|
expect(diff.components.deleted.length).toBe(0, 'no deleted components');
|
|
expect(diff.components.unchanged.length).toBe(base.components.length, 'all components unchanged');
|
|
});
|
|
|
|
it('can diff with one node changes', function () {
|
|
const base = JSON.parse(
|
|
fs.readFileSync(
|
|
Process.cwd() + '/tests/testfs/merge-tests/move-nodes/base-merge-project-Wed--03-Feb-2021-11-07-55-GMT.json'
|
|
)
|
|
);
|
|
const current = JSON.parse(JSON.stringify(base));
|
|
|
|
//modify a text node
|
|
current.components[0].graph.roots[0].children[0].parameters.text = 'Hello 2';
|
|
|
|
const diff = diffProject(base, current);
|
|
|
|
expect(diff.components.changed.length).toBe(1, 'should have one changed component');
|
|
expect(diff.components.created.length).toBe(0, 'no created components');
|
|
expect(diff.components.deleted.length).toBe(0, 'no deleted components');
|
|
expect(diff.components.unchanged.length).toBe(base.components.length - 1);
|
|
});
|
|
|
|
it('diff ignores metadata', function () {
|
|
const base = JSON.parse(
|
|
fs.readFileSync(
|
|
Process.cwd() + '/tests/testfs/merge-tests/move-nodes/base-merge-project-Wed--03-Feb-2021-11-07-55-GMT.json'
|
|
)
|
|
);
|
|
const current = JSON.parse(JSON.stringify(base));
|
|
|
|
// change metadata in component
|
|
current.components[0].metadata.canvasPos.x = 50;
|
|
current.components[0].graph.roots[0].dynamicports = [
|
|
{
|
|
name: 'testy',
|
|
type: 'string'
|
|
}
|
|
];
|
|
|
|
//change metadata in node
|
|
current.components[0].graph.roots[0].metadata = {
|
|
sourceCodePorts: ['test']
|
|
};
|
|
|
|
const diff = diffProject(base, current);
|
|
|
|
expect(diff.components.changed.length).toBe(0, 'no changed components');
|
|
expect(diff.components.created.length).toBe(0, 'no created components');
|
|
expect(diff.components.deleted.length).toBe(0, 'no deleted components');
|
|
expect(diff.components.unchanged.length).toBe(base.components.length, 'all components unchanged');
|
|
});
|
|
|
|
it('can diff variants', function () {
|
|
const base = {
|
|
components: [],
|
|
variants: [
|
|
{
|
|
name: 'A',
|
|
typename: 'A',
|
|
parameters: {
|
|
p1: 10
|
|
}
|
|
},
|
|
{
|
|
name: 'A',
|
|
typename: 'B',
|
|
parameters: {
|
|
p1: 'test'
|
|
}
|
|
},
|
|
{
|
|
name: 'C',
|
|
typename: 'C',
|
|
parameters: {
|
|
p1: 10
|
|
}
|
|
}
|
|
]
|
|
};
|
|
const current = {
|
|
components: [],
|
|
variants: [
|
|
{
|
|
name: 'A',
|
|
typename: 'A',
|
|
parameters: {
|
|
p2: 20
|
|
}
|
|
},
|
|
{
|
|
name: 'B',
|
|
typename: 'A',
|
|
parameters: {
|
|
p1: 'test'
|
|
}
|
|
},
|
|
{
|
|
name: 'C',
|
|
typename: 'C',
|
|
parameters: {
|
|
p1: 10
|
|
}
|
|
}
|
|
]
|
|
};
|
|
|
|
const diff = diffProject(base, current);
|
|
|
|
expect(diff.variants.changed.length).toBe(1);
|
|
expect(diff.variants.created.length).toBe(1);
|
|
expect(diff.variants.unchanged.length).toBe(1);
|
|
});
|
|
|
|
it('can diff settings', function () {
|
|
const base = {
|
|
components: [],
|
|
settings: {
|
|
htmlTitle: 'A',
|
|
headCode: 'lolol',
|
|
someSetting: 'abc'
|
|
}
|
|
};
|
|
const current = {
|
|
components: [],
|
|
settings: {
|
|
htmlTitle: 'B',
|
|
bodyScroll: true,
|
|
someSetting: 'abc'
|
|
}
|
|
};
|
|
const diff = diffProject(base, current);
|
|
|
|
expect(diff.settings.changed.length).toBe(1);
|
|
expect(diff.settings.created.length).toBe(1);
|
|
expect(diff.settings.deleted.length).toBe(1);
|
|
expect(diff.settings.unchanged.length).toBe(1);
|
|
});
|
|
});
|