mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 07:12:54 +01:00
Initial commit
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>
This commit is contained in:
155
packages/noodl-editor/tests/projectmerger/projectmerger-diff.js
Normal file
155
packages/noodl-editor/tests/projectmerger/projectmerger-diff.js
Normal file
@@ -0,0 +1,155 @@
|
||||
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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user