Make nodes editable: norms, goals and keyword triggers
This commit is contained in:
committed by
Gerla, J. (Justin)
parent
f534f0cefa
commit
aeaf526797
@@ -457,6 +457,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}]
|
||||
},
|
||||
{
|
||||
@@ -472,6 +473,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-2',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -483,6 +485,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-3',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -494,6 +497,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}]
|
||||
},
|
||||
{
|
||||
@@ -509,6 +513,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-2',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -525,6 +530,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -541,6 +547,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}]
|
||||
},
|
||||
{
|
||||
@@ -561,6 +568,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -583,6 +591,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
},
|
||||
{
|
||||
phaseNode: {
|
||||
@@ -605,6 +614,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}]
|
||||
},
|
||||
{
|
||||
@@ -732,6 +742,7 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}
|
||||
const output = defaultPhaseReducer(input);
|
||||
expect(output).toEqual({
|
||||
@@ -740,7 +751,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -760,6 +772,7 @@ describe('Graph Reducer Tests', () => {
|
||||
data: {label: 'Generic Norm', value: "generic"},
|
||||
}],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [],
|
||||
}
|
||||
const output = defaultPhaseReducer(input);
|
||||
expect(output).toEqual({
|
||||
@@ -772,7 +785,8 @@ describe('Graph Reducer Tests', () => {
|
||||
name: 'Generic Norm',
|
||||
value: "generic"
|
||||
}],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -790,8 +804,9 @@ describe('Graph Reducer Tests', () => {
|
||||
id: 'goal-1',
|
||||
type: 'goal',
|
||||
position: {x: 0, y: 150},
|
||||
data: {label: 'Generic Goal', value: "generic"},
|
||||
data: {label: 'Generic Goal', description: "generic", achieved: false},
|
||||
}],
|
||||
connectedTriggers: [],
|
||||
}
|
||||
const output = defaultPhaseReducer(input);
|
||||
expect(output).toEqual({
|
||||
@@ -803,7 +818,50 @@ describe('Graph Reducer Tests', () => {
|
||||
goals: [{
|
||||
id: 'goal-1',
|
||||
name: 'Generic Goal',
|
||||
value: "generic"
|
||||
description: "generic",
|
||||
achieved: false,
|
||||
}],
|
||||
triggers: [],
|
||||
}
|
||||
});
|
||||
});
|
||||
test("defaultTriggerReducer reduces triggers correctly", () => {
|
||||
const input : PreparedPhase = {
|
||||
phaseNode: {
|
||||
id: 'phase-1',
|
||||
type: 'phase',
|
||||
position: {x: 0, y: 150},
|
||||
data: {label: 'Generic Phase', number: 1},
|
||||
},
|
||||
nextPhaseId: 'end',
|
||||
connectedNorms: [],
|
||||
connectedGoals: [],
|
||||
connectedTriggers: [{
|
||||
id: 'trigger-1',
|
||||
type: 'trigger',
|
||||
position: {x: 0, y: 150},
|
||||
data: {label: 'Keyword Trigger', type: "keywords", value: [
|
||||
{id: "some_id", keyword: "generic"},
|
||||
{id: "another_id", keyword: "another"},
|
||||
]},
|
||||
}],
|
||||
}
|
||||
const output = defaultPhaseReducer(input);
|
||||
expect(output).toEqual({
|
||||
id: 'phase-1',
|
||||
name: 'Generic Phase',
|
||||
nextPhaseId: 'end',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: [],
|
||||
triggers: [{
|
||||
id: 'trigger-1',
|
||||
label: 'Keyword Trigger',
|
||||
type: "keywords",
|
||||
value: [
|
||||
{id: "some_id", keyword: "generic"},
|
||||
{id: "another_id", keyword: "another"},
|
||||
]
|
||||
}]
|
||||
}
|
||||
});
|
||||
@@ -820,7 +878,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
}]
|
||||
},
|
||||
@@ -833,7 +892,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-2',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -842,7 +902,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-3',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -851,7 +912,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'end',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
}]
|
||||
},
|
||||
@@ -864,7 +926,8 @@ describe('Graph Reducer Tests', () => {
|
||||
nextPhaseId: 'phase-2',
|
||||
phaseData: {
|
||||
norms: [],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -879,7 +942,8 @@ describe('Graph Reducer Tests', () => {
|
||||
value: "generic"
|
||||
}
|
||||
],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -892,7 +956,8 @@ describe('Graph Reducer Tests', () => {
|
||||
name: 'Generic Norm',
|
||||
value: "generic"
|
||||
}],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
}]
|
||||
},
|
||||
@@ -909,7 +974,8 @@ describe('Graph Reducer Tests', () => {
|
||||
name: 'Generic Norm',
|
||||
value: "generic"
|
||||
}],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -929,7 +995,8 @@ describe('Graph Reducer Tests', () => {
|
||||
value: "generic"
|
||||
}
|
||||
],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -947,7 +1014,8 @@ describe('Graph Reducer Tests', () => {
|
||||
name: 'Generic Norm',
|
||||
value: "generic"
|
||||
}],
|
||||
goals: []
|
||||
goals: [],
|
||||
triggers: [],
|
||||
}
|
||||
}]
|
||||
},
|
||||
|
||||
22
test/utils/duplicateIndices.test.ts
Normal file
22
test/utils/duplicateIndices.test.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import duplicateIndices from "../../src/utils/duplicateIndices.ts";
|
||||
|
||||
describe("duplicateIndices (unit)", () => {
|
||||
it("returns an empty array for empty input", () => {
|
||||
expect(duplicateIndices<number>([])).toEqual([]);
|
||||
});
|
||||
|
||||
it("returns an empty array when no duplicates exist", () => {
|
||||
expect(duplicateIndices([1, 2, 3, 4])).toEqual([]);
|
||||
});
|
||||
|
||||
it("returns all positions for every duplicated value", () => {
|
||||
const result = duplicateIndices(["a", "b", "a", "c", "b", "b"]);
|
||||
expect(result.sort()).toEqual([0, 1, 2, 4, 5]);
|
||||
});
|
||||
|
||||
it("only treats identical references as duplicate objects", () => {
|
||||
const shared = { v: 1 };
|
||||
const result = duplicateIndices([shared, { v: 1 }, shared, shared]);
|
||||
expect(result.sort()).toEqual([0, 2, 3]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user