Skip to content

Commit 3346071

Browse files
authored
Merge pull request #11 from platform-mesh/feat/organization-initializer
feat: add organization initializer
2 parents 5b6b4f4 + d4ca31e commit 3346071

File tree

10 files changed

+6191
-4254
lines changed

10 files changed

+6191
-4254
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ yarn-error.log
3232
/libpeerconnection.log
3333
testem.log
3434
/typings
35+
.yalc
36+
yalc.lock
3537

3638
# System files
3739
.DS_Store

package-lock.json

Lines changed: 6102 additions & 4240 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,32 +5,36 @@
55
"ng": "ng",
66
"start": "ng serve",
77
"build": "ng build",
8-
"watch": "ng build --watch --configuration development",
8+
"build:watch": "mkdirp dist && nodemon --ignore dist --ext js,yml,yaml,ts,html,css,scss,json,md --exec \"rimraf dist && npm run build && cd dist && yalc publish --push --sig\"",
99
"test": "ng test"
1010
},
1111
"prettier": "@openmfp/config-prettier",
1212
"dependencies": {
1313
"tslib": "^2.3.0"
1414
},
1515
"devDependencies": {
16-
"@angular-builders/jest": "^19.0.0 || ^20.0.0",
17-
"@angular-devkit/build-angular": "^19.2.15",
18-
"@angular/build": "^19.2.15",
19-
"@angular/cli": "^19.2.15",
20-
"@angular/compiler-cli": "^19.2.14",
21-
"@angular/localize": "^19.0.0 || ^20.0.0",
16+
"@angular-builders/jest": "^20.0.0",
17+
"@angular-devkit/build-angular": "^20.0.0",
18+
"@angular-eslint/builder": "^20.2.0",
19+
"@angular/cli": "^20.2.0",
20+
"@angular/build": "^20.2.1",
21+
"@angular/compiler-cli": "^20.2.1",
22+
"@angular/localize": "^20.2.1",
2223
"@briebug/jest-schematic": "^6.0.0",
24+
"@openmfp/portal-ui-lib": "0.174.2",
2325
"@types/jest": "^30.0.0",
2426
"@types/jmespath": "0.15.2",
25-
"@openmfp/portal-ui-lib": "^0.172.0",
26-
"@ui5/webcomponents-ngx": "^0.4.8",
27+
"@ui5/webcomponents-ngx": "^0.5.0",
2728
"jest": "^29.7.0",
2829
"jest-jasmine2": "29.7.0",
2930
"jest-junit": "16.0.0",
3031
"jest-mock-extended": "3.0.7",
3132
"jmespath": "0.16.0",
32-
"ng-packagr": "^19.2.0",
33+
"ng-packagr": "^20.2.0",
3334
"ts-jest": "29.3.2",
34-
"typescript": "~5.5.2"
35+
"typescript": "~5.8.0",
36+
"rimraf": "6.0.1",
37+
"mkdirp": "^3.0.1",
38+
"nodemon": "3.1.10"
3539
}
3640
}

projects/lib/jest.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ module.exports = {
66
coverageThreshold: {
77
global: {
88
branches: 67,
9-
functions: 90,
9+
functions: 95,
1010
lines: 91,
1111
statements: -16,
1212
},
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { TestBed } from '@angular/core/testing';
2+
import { ApplicationInitStatus } from '@angular/core';
3+
import { Router } from '@angular/router';
4+
import { EnvConfigService } from '@openmfp/portal-ui-lib';
5+
import { organizationInitializer } from './organization-initializer';
6+
7+
describe('organizationInitializer', () => {
8+
let envMock: jest.Mocked<EnvConfigService>;
9+
let routerMock: jest.Mocked<Router>;
10+
11+
beforeEach(() => {
12+
envMock = {
13+
getEnvConfig: jest.fn(),
14+
} as unknown as jest.Mocked<EnvConfigService>;
15+
16+
routerMock = {
17+
navigate: jest.fn(),
18+
} as unknown as jest.Mocked<Router>;
19+
20+
TestBed.configureTestingModule({
21+
providers: [
22+
organizationInitializer(),
23+
{ provide: EnvConfigService, useValue: envMock },
24+
{ provide: Router, useValue: routerMock },
25+
],
26+
});
27+
});
28+
29+
it('should call getEnvConfig and not navigate on success', async () => {
30+
envMock.getEnvConfig.mockResolvedValueOnce(undefined as any);
31+
32+
await TestBed.inject(ApplicationInitStatus).donePromise;
33+
34+
expect(envMock.getEnvConfig).toHaveBeenCalledTimes(1);
35+
expect(routerMock.navigate).not.toHaveBeenCalled();
36+
});
37+
38+
it('should navigate to "welcome" when getEnvConfig throws', async () => {
39+
envMock.getEnvConfig.mockRejectedValueOnce(new Error('fail'));
40+
41+
await TestBed.inject(ApplicationInitStatus).donePromise;
42+
43+
expect(envMock.getEnvConfig).toHaveBeenCalledTimes(1);
44+
expect(routerMock.navigate).toHaveBeenCalledWith(['welcome']);
45+
});
46+
});
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import { inject, provideAppInitializer } from '@angular/core';
2+
import { Router } from '@angular/router';
3+
import { EnvConfigService } from '@openmfp/portal-ui-lib';
4+
5+
export const organizationInitializer = () => {
6+
return provideAppInitializer(async () => {
7+
const envService = inject(EnvConfigService)
8+
const router = inject(Router)
9+
10+
try {
11+
await envService.getEnvConfig()
12+
} catch {
13+
router.navigate(['welcome']);
14+
}
15+
});
16+
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"$schema": "../../../node_modules/ng-packagr/ng-package.schema.json",
3+
"lib": {
4+
"entryFile": "./public-api.ts"
5+
}
6+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './initializers/organization-initializer';

projects/lib/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"tslib": "^2.3.0"
66
},
77
"peerDependencies": {
8-
"@openmfp/portal-ui-lib": "^0.172.0",
8+
"@openmfp/portal-ui-lib": "0.174.2",
99
"@angular/common": "^19.0.0 || ^20.0.0",
1010
"@angular/compiler": "^19.0.0 || ^20.0.0",
1111
"@angular/core": "^19.0.0 || ^20.0.0",

projects/lib/portal-options/services/header-bar-renderers/namespace-selection-renderer.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@ import {
44
AuthService,
55
FieldDefinition,
66
LuigiCoreService,
7+
LuigiNode,
78
PortalConfig,
89
Resource,
910
ResourceNodeContext,
1011
ResourceService,
1112
generateGraphQLFields,
1213
} from '@openmfp/portal-ui-lib';
13-
import { LuigiNode } from '@openmfp/portal-ui-lib/lib/models';
1414
import '@ui5/webcomponents/dist/ComboBox.js';
1515
import { Observable, of } from 'rxjs';
1616
import { shareReplay } from 'rxjs/operators';

0 commit comments

Comments
 (0)