mirror of
https://github.com/The-Low-Code-Foundation/OpenNoodl.git
synced 2026-01-12 23:32:55 +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:
178
packages/noodl-editor/tests/nodegraph/conflictwarnings.js
Normal file
178
packages/noodl-editor/tests/nodegraph/conflictwarnings.js
Normal file
@@ -0,0 +1,178 @@
|
||||
const { ProjectModel } = require('@noodl-models/projectmodel');
|
||||
const NodeLibrary = require('@noodl-models/nodelibrary').NodeLibrary;
|
||||
const WarningsModel = require('@noodl-models/warningsmodel').WarningsModel;
|
||||
|
||||
describe('Conflict warnings', function () {
|
||||
var p;
|
||||
|
||||
beforeEach(() => {
|
||||
window.NodeLibraryData = require('../nodegraph/nodelibrary');
|
||||
NodeLibrary.instance.loadLibrary();
|
||||
|
||||
p = ProjectModel.fromJSON(getProject());
|
||||
ProjectModel.instance = p;
|
||||
});
|
||||
|
||||
it('can load project', function () {
|
||||
expect(p).not.toBe(undefined);
|
||||
});
|
||||
|
||||
it('can count total number of conflicts', function () {
|
||||
p.getComponentWithName('comp1').graph.evaluateHealth();
|
||||
p.getComponentWithName('comp2').graph.evaluateHealth();
|
||||
p.getComponentWithName('comp3').graph.evaluateHealth();
|
||||
|
||||
expect(
|
||||
WarningsModel.instance.getTotalNumberOfWarningsMatching(
|
||||
(key, ref, warning) => warning.warning.type === 'conflict'
|
||||
)
|
||||
).toBe(4);
|
||||
});
|
||||
|
||||
it('can count warnings for a components', function () {
|
||||
const c = p.getComponentWithName('comp1');
|
||||
c.graph.evaluateHealth();
|
||||
let warnings = WarningsModel.instance.getNumberOfWarningsForComponent(c);
|
||||
expect(warnings).toBe(1);
|
||||
|
||||
//conflict warnings are global, so test counting all non-global conflicts as well
|
||||
warnings = WarningsModel.instance.getNumberOfWarningsForComponent(c, {
|
||||
excludeGlobal: true
|
||||
});
|
||||
expect(warnings).toBe(0);
|
||||
});
|
||||
|
||||
it('can detect param conflict warnings', function () {
|
||||
var c = p.getComponentWithName('comp1');
|
||||
c.graph.evaluateHealth();
|
||||
|
||||
var w = WarningsModel.instance.warnings['comp1'];
|
||||
expect(w['node/A']['node-param-conflict-A']).not.toBe(undefined);
|
||||
expect(WarningsModel.instance.getNumberOfWarningsForComponent(c)).toBe(1);
|
||||
});
|
||||
|
||||
it('can detect type conflict warnings', function () {
|
||||
var c = p.getComponentWithName('comp2');
|
||||
c.graph.evaluateHealth();
|
||||
|
||||
var w = WarningsModel.instance.warnings['comp2'];
|
||||
expect(w['node/B']['node-type-conflict']).not.toBe(undefined);
|
||||
expect(WarningsModel.instance.getNumberOfWarningsForComponent(c)).toBe(1);
|
||||
});
|
||||
|
||||
it('can clear warnings', function () {
|
||||
// Clear the warning
|
||||
var c = p.getComponentWithName('comp1');
|
||||
WarningsModel.instance.setWarning(
|
||||
{
|
||||
component: c,
|
||||
node: c.graph.roots[0],
|
||||
key: 'node-param-conflict-A'
|
||||
},
|
||||
undefined
|
||||
);
|
||||
expect(WarningsModel.instance.hasComponentWarnings(c)).toBe(false);
|
||||
|
||||
// Clear warnings
|
||||
var c = p.getComponentWithName('comp2');
|
||||
WarningsModel.instance.clearWarningsForRef({
|
||||
component: c,
|
||||
node: c.graph.roots[0]
|
||||
});
|
||||
expect(WarningsModel.instance.hasComponentWarnings(c)).toBe(false);
|
||||
});
|
||||
|
||||
it('can format warnings', function () {
|
||||
var c = p.getComponentWithName('comp3');
|
||||
c.graph.evaluateHealth();
|
||||
|
||||
var w = WarningsModel.instance.warnings['comp3'];
|
||||
expect(w['node/C']['node-param-conflict-alignX']).not.toBe(undefined);
|
||||
expect(w['node/C']['node-param-conflict-alignX'].warning.message).toEqual('Merge conflict at parameter AlignX');
|
||||
expect(w['node/C']['node-param-conflict-x']).not.toBe(undefined);
|
||||
expect(w['node/C']['node-param-conflict-x'].warning.message).toEqual('Merge conflict at parameter x');
|
||||
});
|
||||
|
||||
it('clear warnings when project is unloaded', function () {
|
||||
var c = p.getComponentWithName('comp1');
|
||||
c.graph.evaluateHealth();
|
||||
expect(WarningsModel.instance.hasComponentWarnings(c)).toBe(true);
|
||||
|
||||
ProjectModel.instance = undefined;
|
||||
expect(WarningsModel.instance.warnings).toEqual({});
|
||||
});
|
||||
|
||||
function getProject() {
|
||||
return {
|
||||
name: 'p',
|
||||
components: [
|
||||
{
|
||||
name: 'comp1',
|
||||
graph: {
|
||||
roots: [
|
||||
{
|
||||
type: 'group',
|
||||
id: 'A',
|
||||
conflicts: [
|
||||
{
|
||||
type: 'parameter',
|
||||
name: 'A',
|
||||
ours: 0,
|
||||
theirs: 1
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
connections: []
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'comp2',
|
||||
graph: {
|
||||
roots: [
|
||||
{
|
||||
type: 'group',
|
||||
id: 'B',
|
||||
conflicts: [
|
||||
{
|
||||
type: 'typename',
|
||||
ours: '/a',
|
||||
theirs: '/b'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
name: 'comp3',
|
||||
graph: {
|
||||
roots: [
|
||||
{
|
||||
type: 'group',
|
||||
id: 'C',
|
||||
conflicts: [
|
||||
{
|
||||
type: 'parameter',
|
||||
name: 'x',
|
||||
ours: {
|
||||
value: 10,
|
||||
unit: '%'
|
||||
},
|
||||
theirs: 10
|
||||
},
|
||||
{
|
||||
type: 'parameter',
|
||||
name: 'alignX',
|
||||
ours: 'left',
|
||||
theirs: 'right'
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
};
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user