Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[cascading] from release/11.5 to main #2649

Merged
merged 25 commits into from
Jan 7, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
669b2ea
fix: jsonpath-plus audit update
mrednic-1A Dec 18, 2024
1e86195
fix: jsonpath-plus audit update (#2611)
mrednic-1A Dec 18, 2024
34b19de
fix(core): add support for "null" type
kpanot Dec 18, 2024
ea8cac4
fix: reset actions emitted when no rulesets remains activated
mrednic-1A Dec 18, 2024
0ecee22
Merge branch 'release/11.0' into cascading/10.4.0-11.0.0
mrednic-1A Dec 18, 2024
6ee3692
fix: reset actions emitted when no rulesets remains activated (#2610)
mrednic-1A Dec 18, 2024
6dcaeb9
Merge release/10.4 into cascading/10.4.0-11.0.0
otter-cascading[bot] Dec 18, 2024
e4d9d0e
Merge branch 'release/10.4' into bugfix/deep-fill-null-support
kpanot Dec 19, 2024
c8477e3
fix(core): add support for "null" type (#2608)
kpanot Dec 19, 2024
43cef8d
Merge release/10.4 into cascading/10.4.0-11.0.0
otter-cascading[bot] Dec 19, 2024
56a6694
[cascading] from release/10.4 to release/11.0 (#2614)
mrednic-1A Dec 19, 2024
d1e2985
Merge branch 'release/11.1' of https://github.com/AmadeusITGroup/otte…
fpaul-1A Dec 20, 2024
c343340
[cascading] from release/11.0 to release/11.1 (#2632)
fpaul-1A Dec 20, 2024
9abd742
chore(design): increase peerDependencies supported range to prepare n…
kpanot Dec 23, 2024
a8afff0
chore(design): increase peerDependencies supported range (#2644)
kpanot Dec 23, 2024
0e90992
Merge branch 'release/11.2' into cascading/11.1.0-11.2.0
vscaiceanu-1a Dec 26, 2024
942e03a
[cascading] from release/11.1 to release/11.2 (#2643)
matthieu-crouzet Dec 30, 2024
4d1052c
Merge branch 'release/11.3' of https://github.com/AmadeusITGroup/otte…
matthieu-crouzet Dec 30, 2024
137e9dd
[cascading] from release/11.2 to release/11.3 (#2653)
matthieu-crouzet Jan 6, 2025
94bb575
Merge branch 'release/11.4' of https://github.com/AmadeusITGroup/otte…
matthieu-crouzet Jan 6, 2025
e3e9b4e
[cascading] from release/11.3 to release/11.4 (#2659)
kpanot Jan 6, 2025
6f5eca5
Merge branch 'release/11.5' into cascading/11.4.0-11.5.0
matthieu-crouzet Jan 6, 2025
1668f71
[cascading] from release/11.4 to release/11.5 (#2661)
matthieu-crouzet Jan 6, 2025
1bddf92
Merge release/11.5 into cascading/11.5.0-main
otter-cascading[bot] Jan 6, 2025
664173b
Merge branch 'main' of https://github.com/AmadeusITGroup/otter into HEAD
matthieu-crouzet Jan 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions packages/@o3r/core/src/utils/deep-fill/deep-fill.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,20 @@ describe('Deep fill function', () => {
expect(deepFill(base, source)).toEqual(base);
});

it('should support "null" value in source', () => {
const base = { selection: { field: 'test-field' }, a: 'string' };
const source = { selection: null } as any;

expect(deepFill(base, source)).toEqual({ selection: null, a: 'string' });
});

it('should support "null" value in base', () => {
const base = { selection: null, a: 'string' } as any;
const source = { selection: { field: 'test-field' } };

expect(deepFill(base, source)).toEqual({ selection: { field: 'test-field' }, a: 'string' });
});

it('should keep properties from base not present in the source', () => {
const base = Object.freeze({ a: 1, b: '2', c: true });
const source = Object.freeze({ c: false, a: 3 });
Expand Down
6 changes: 4 additions & 2 deletions packages/@o3r/core/src/utils/deep-fill/deep-fill.ts
Original file line number Diff line number Diff line change
Expand Up @@ -65,9 +65,11 @@ export function deepFill<T extends { [x: string]: any }>(base: T, source?: { [x:
}
const newObj = { ...base };
for (const key in base) {
if (key in source && typeof base[key] === typeof source[key]) {
if (source[key] === null) {
newObj[key] = immutablePrimitive(null, additionalMappers);
} else if (key in source && typeof base[key] === typeof source[key]) {
const keyOfSource = source[key];
newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], source[key], additionalMappers);
newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], keyOfSource, additionalMappers);
} else {
newObj[key] = immutablePrimitive(base[key], additionalMappers);
}
Expand Down
4 changes: 2 additions & 2 deletions packages/@o3r/design/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,8 @@
"tslib": "^2.6.2"
},
"peerDependencies": {
"@angular-devkit/architect": "^0.1802.0",
"@angular-devkit/schematics": "^18.2.0",
"@angular-devkit/architect": "~0.1802.0 || >=0.1900.0",
"@angular-devkit/schematics": "^18.2.0 || >=19.0.0",
"@o3r/core": "workspace:^",
"@o3r/schematics": "workspace:^",
"@o3r/styling": "workspace:^",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
/* eslint-disable id-denylist -- `any` is a conditional keyword enforced by the rule interface */
import {
BehaviorSubject,
firstValueFrom,
of,
} from 'rxjs';
import {
Expand All @@ -13,7 +14,6 @@ import {
RulesetExecutor,
} from '../ruleset-executor';
import {
ActionBlock,
Ruleset,
} from '../structure';
import {
Expand Down Expand Up @@ -154,56 +154,28 @@ describe('Filter rulesets event operator', () => {

const rulesetsMapSubject$ = new BehaviorSubject<Record<string, RulesetExecutor>>(firstValue);

// eslint-disable-next-line jest/no-done-callback -- eventually rewrite the test
test('should consider only first ruleset', (done) => {
rulesetsMapSubject$.pipe(
filterRulesetsEventStream(['ruleset1'])
).subscribe((data) => {
expect(data.length).toBe(2);
done();
});
test('should consider only first ruleset', async () => {
const data = await firstValueFrom(rulesetsMapSubject$.pipe(filterRulesetsEventStream(['ruleset1'])));
expect(data.length).toBe(2);
});

// eslint-disable-next-line jest/no-done-callback -- eventually rewrite the test
test('should consider only second ruleset', (done) => {
rulesetsMapSubject$.pipe(
filterRulesetsEventStream(['ruleset2'])
).subscribe((data) => {
expect(data.length).toBe(1);
done();
});
test('should consider only second ruleset', async () => {
const data = await firstValueFrom(rulesetsMapSubject$.pipe(filterRulesetsEventStream(['ruleset2'])));
expect(data.length).toBe(1);
});

// eslint-disable-next-line jest/no-done-callback -- eventually rewrite the test
test('should consider all rulesets by not passing any filter', (done) => {
rulesetsMapSubject$.pipe(
filterRulesetsEventStream()
).subscribe((data) => {
expect(data.length).toBe(3);
done();
});
test('should consider all rulesets by not passing any filter', async () => {
const data = await firstValueFrom(rulesetsMapSubject$.pipe(filterRulesetsEventStream()));
expect(data.length).toBe(3);
});

// eslint-disable-next-line jest/no-done-callback -- eventually rewrite the test
test('should consider all rulesets ids passed', (done) => {
rulesetsMapSubject$.pipe(
filterRulesetsEventStream(['ruleset1', 'ruleset2'])
).subscribe((data) => {
expect(data.length).toBe(3);
done();
});
test('should consider all rulesets ids passed', async () => {
const data = await firstValueFrom(rulesetsMapSubject$.pipe(filterRulesetsEventStream(['ruleset1', 'ruleset2'])));
expect(data.length).toBe(3);
});

test('should not emit if ruleset id does not match any registered ruleset', async () => {
let emittedActions: ActionBlock[] | undefined;

rulesetsMapSubject$.pipe(
filterRulesetsEventStream(['ruleset3'])
).subscribe((data) => {
emittedActions = data;
});

await jest.advanceTimersByTimeAsync(500);
expect(emittedActions).toBe(undefined);
test('should emit an empty array when no rulesets remain active', async () => {
const data = await firstValueFrom(rulesetsMapSubject$.pipe(filterRulesetsEventStream(['ruleset3'])));
expect(data.length).toBe(0);
});
});
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import {
combineLatest,
Observable,
of,
} from 'rxjs';
import {
map,
Expand All @@ -23,11 +24,13 @@ export function filterRulesetsEventStream(restrictiveRuleSets?: string[]) {
? Object.values(rulesets).filter((ruleSet) => restrictiveRuleSets.includes(ruleSet.id))
: Object.values(rulesets);

return combineLatest(activeRulesets.map((ruleset) => ruleset.rulesResultsSubject$)).pipe(
map((item) => item.reduce((acc, currentValue) => {
acc.push(...currentValue);
return acc;
}, [])));
return activeRulesets?.length > 0
? combineLatest(activeRulesets.map((ruleset) => ruleset.rulesResultsSubject$)).pipe(
map((item) => item.reduce((acc, currentValue) => {
acc.push(...currentValue);
return acc;
}, [])))
: of([]);
}),
shareReplay(1)
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ describe('Rules engine service', () => {
next: (value) => nextFn(value)
});
// should output no actions as all rulesets are on demand
expect(nextFn).not.toHaveBeenCalled();
expect(nextFn).toHaveBeenCalledWith([]);
sub.unsubscribe();

// activate ruleset 1 via his own linked component
Expand Down
4 changes: 2 additions & 2 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8544,8 +8544,8 @@ __metadata:
typescript-eslint: "npm:~8.19.0"
zone.js: "npm:~0.14.2"
peerDependencies:
"@angular-devkit/architect": ^0.1802.0
"@angular-devkit/schematics": ^18.2.0
"@angular-devkit/architect": ~0.1802.0 || >=0.1900.0
"@angular-devkit/schematics": ^18.2.0 || >=19.0.0
"@o3r/core": "workspace:^"
"@o3r/schematics": "workspace:^"
"@o3r/styling": "workspace:^"
Expand Down
Loading