Skip to content

Commit 70f0400

Browse files
committed
merged dev into my branch
2 parents 154425a + 41d0128 commit 70f0400

File tree

82 files changed

+3206
-2830
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

82 files changed

+3206
-2830
lines changed

.coderabbit.yaml

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# .coderabbit.yaml
2+
language: 'en-US'
3+
early_access: false
4+
5+
chat:
6+
auto_reply: true
7+
8+
reviews:
9+
poem: false
10+
profile: 'chill' # not too strict
11+
high_level_summary: true
12+
review_status: true
13+
commit_status: true
14+
collapse_walkthrough: false
15+
16+
# Scope: review code, skip docs/config/assets
17+
path_filters:
18+
- '**/*'
19+
- '!.github/**'
20+
- '!**/*.svg'
21+
22+
# Repo-specific guidance
23+
instructions: |
24+
Focus on correctness, readability, and maintainability over cosmetic nitpicks.
25+
- Avoid reviewing README, config, or asset files.
26+
- Prioritize identifying bugs, performance issues, and architectural concerns.
27+
- For Angular, check for OnPush strategy, unsubscribe patterns, proper RxJS usage,
28+
and template accessibility (labels, roles, tab order).
29+
- For TypeScript, enforce strong typing and minimal use of `any`.
30+
- Point out missing tests only when changes are medium/high risk.
31+
32+
# Use path + instructions
33+
path_instructions:
34+
- path: 'src/app/**'
35+
instructions: |
36+
For Angular code: verify component separation, trackBy on *ngFor,
37+
strict type safety, and clean observable patterns.
38+
- path: '**/*.spec.ts'
39+
instructions: |
40+
For tests: encourage clear Arrange-Act-Assert structure,
41+
stable selectors, and minimal brittle timing dependencies.
42+
43+
auto_review:
44+
enabled: true
45+
auto_incremental_review: true
46+
drafts: false
47+
base_branches: ['dev']
48+
ignore_title_keywords: ['WIP', 'Draft']
49+
labels: ['!skip-ai-review']
50+
ignore_usernames: ['dependabot', 'renovate[bot]']
51+
52+
finishing_touches:
53+
docstrings:
54+
enabled: true
55+
unit_tests:
56+
enabled: true
57+
58+
# Valid schema: turn off gates entirely
59+
pre_merge_checks:
60+
mode: 'off'

.dockerignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ npm-debug.log
33
Dockerfile*
44
docker-compose*
55
.dockerignore
6-
.git
76
.gitignore
87
README.md
98
LICENSE

README.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Mifos X Web App is a modern single-page application (SPA) built on top of the Mi
1212

1313
## Quick Links
1414

15-
- [Live Demo](https://sandbox.mifos.community/#/login) (Updated nightly)
15+
- [Live Demo](https://sandbox.mifos.community/#/login) (Updated nightly ** System is restored every 6 hours **)
1616
- [GitHub Repository](https://github.com/openMF/web-app)
1717
- [Slack Channel](https://app.slack.com/client/T0F5GHE8Y/CJJGJLN10)
1818
- [Jira Board of Mifos](https://mifosforge.jira.com/jira/your-work)
@@ -185,10 +185,29 @@ Available languages:
185185

186186
#### UI Display Settings
187187

188-
| Variable | Description | Default Value |
189-
| ----------------------------- | ------------------------------------- | ------------- |
190-
| MIFOS_DISPLAY_TENANT_SELECTOR | Display tenant selector in Login view | true |
191-
| MIFOS_DISPLAY_BACKEND_INFO | Display backend info in footer | true |
188+
| Variable | Description | Default Value |
189+
| ---------------------------------- | ------------------------------------- | ------------- |
190+
| MIFOS_DISPLAY_TENANT_SELECTOR | Display tenant selector in Login view | true |
191+
| MIFOS_DISPLAY_BACKEND_INFO | Display backend info in footer | true |
192+
| MIFOS_ALLOW_SERVER_SWITCH_SELECTOR | Display DNS server list | true |
193+
194+
#### OAUTH Settings
195+
196+
| Variable | Description | Default Value |
197+
| -------------------------- | ------------------------------ | ------------- |
198+
| MIFOS_OAUTH_SERVER_ENABLED | Enable the use of Oauth server | false |
199+
| MIFOS_OAUTH_SERVER_URL | Set the Oauth server URL | |
200+
| MIFOS_OAUTH_CLIENT_ID | Set the Client Id | |
201+
202+
#### OIDC Settings
203+
204+
| Variable | Description | Default Value |
205+
| --------------------------------- | ------------------------------ | ------------- |
206+
| FINERACT_PLUGIN_OIDC_ENABLED | Enable the use of Oidc server | false |
207+
| FINERACT_PLUGIN_OIDC_BASE_URL | Set the Oidc server URL | |
208+
| FINERACT_PLUGIN_OIDC_CLIENT_ID | Set the Client Id | |
209+
| FINERACT_PLUGIN_OIDC_API_URL | Set the Client API URL | |
210+
| FINERACT_PLUGIN_OIDC_FRONTEND_URL | Set the Front End URL callback | |
192211

193212
For more detailed configuration options, refer to the `env.sample` file in the root directory of the project.
194213

docker-compose.yml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,5 @@ services:
2323
- MIFOS_DEFAULT_LANGUAGE=en-US
2424
- MIFOS_SUPPORTED_LANGUAGES=cs-CS,de-DE,en-US,es-MX,es-CL,fr-FR,it-IT,ko-KO,lt-LT,lv-LV,ne-NE,pt-PT,sw-SW
2525
- MIFOS_SESSION_IDLE_TIMEOUT=300000
26-
- MIFOS_OAUTH_SERVER_ENABLED=false
27-
- FINERACT_PLUGIN_OIDC_ENABLED=false
28-
- FINERACT_PLUGIN_OIDC_BASE_URL=${FINERACT_PLUGIN_OIDC_BASE_URL}
29-
- FINERACT_PLUGIN_OIDC_CLIENT_ID=${FINERACT_PLUGIN_OIDC_CLIENT_ID}
30-
- FINERACT_PLUGIN_OIDC_API_URL=${FINERACT_PLUGIN_OIDC_API_URL}
31-
- FINERACT_PLUGIN_OIDC_FRONTEND_URL=${FINERACT_PLUGIN_OIDC_FRONTEND_URL}
26+
- MIFOS_PRELOAD_CLIENTS=true
27+
- MIFOS_DEFAULT_CHAR_DELIMITER=,

e2e/cypress/integration/spec.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

jest.config.ts

Lines changed: 44 additions & 157 deletions
Original file line numberDiff line numberDiff line change
@@ -1,199 +1,86 @@
1-
/**
1+
/**
2+
* Jest configuration in TypeScript with full type safety
23
* For a detailed explanation regarding each configuration property, visit:
34
* https://jestjs.io/docs/configuration
45
*/
56

67
import type { Config } from 'jest';
78

89
const config: Config = {
9-
// All imported modules in your tests should be mocked automatically
10-
// automock: false,
11-
12-
// Stop running tests after `n` failures
13-
// bail: 0,
14-
15-
// The directory where Jest should store its cached dependency information
16-
// cacheDirectory: "C:\\Users\\felix\\AppData\\Local\\Temp\\jest",
17-
1810
// Automatically clear mock calls, instances, contexts and results before every test
1911
clearMocks: true,
2012

2113
// Indicates whether the coverage information should be collected while executing the test
2214
collectCoverage: true,
2315

2416
// An array of glob patterns indicating a set of files for which coverage information should be collected
25-
// collectCoverageFrom: undefined,
17+
collectCoverageFrom: [
18+
'src/app/**/*.ts',
19+
'!src/app/**/*.spec.ts',
20+
'!src/app/**/*.module.ts',
21+
'!src/app/**/*.interface.ts',
22+
'!src/app/**/*.model.ts'
23+
],
2624

2725
// The directory where Jest should output its coverage files
2826
coverageDirectory: 'coverage',
2927

30-
// An array of regexp pattern strings used to skip coverage collection
31-
// coveragePathIgnorePatterns: [
32-
// "\\\\node_modules\\\\"
33-
// ],
34-
3528
// Indicates which provider should be used to instrument code for coverage
3629
coverageProvider: 'v8',
3730

38-
// A list of reporter names that Jest uses when writing coverage reports
39-
// coverageReporters: [
40-
// "json",
41-
// "text",
42-
// "lcov",
43-
// "clover"
44-
// ],
45-
46-
// An object that configures minimum threshold enforcement for coverage results
47-
// coverageThreshold: undefined,
48-
49-
// A path to a custom dependency extractor
50-
// dependencyExtractor: undefined,
51-
52-
// Make calling deprecated APIs throw helpful error messages
53-
// errorOnDeprecated: false,
54-
55-
// The default configuration for fake timers
56-
// fakeTimers: {
57-
// "enableGlobally": false
58-
// },
59-
60-
// Force coverage collection from ignored files using an array of glob patterns
61-
// forceCoverageMatch: [],
62-
6331
// A path to a module which exports an async function that is triggered once before all test suites
64-
// globalSetup: undefined,
32+
globalSetup: 'jest-preset-angular/global-setup',
6533

66-
// A path to a module which exports an async function that is triggered once after all test suites
67-
// globalTeardown: undefined,
68-
69-
// A set of global variables that need to be available in all test environments
70-
// globals: {},
71-
72-
// The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
73-
// maxWorkers: "50%",
34+
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
35+
moduleNameMapper: {
36+
'^app/(.*)$': '<rootDir>/src/app/$1',
37+
'^@/(.*)$': '<rootDir>/src/$1',
38+
'^@pipes/(.*)$': '<rootDir>/src/app/pipes/$1'
39+
},
7440

7541
// An array of directory names to be searched recursively up from the requiring module's location
76-
// moduleDirectories: [
77-
// "node_modules"
78-
// ],
42+
moduleDirectories: [
43+
'node_modules',
44+
'src'
45+
],
7946

8047
// An array of file extensions your modules use
81-
// moduleFileExtensions: [
82-
// "js",
83-
// "mjs",
84-
// "cjs",
85-
// "jsx",
86-
// "ts",
87-
// "tsx",
88-
// "json",
89-
// "node"
90-
// ],
91-
92-
// A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
93-
// moduleNameMapper: {},
94-
95-
// An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
96-
// modulePathIgnorePatterns: [],
97-
98-
// Activates notifications for test results
99-
// notify: false,
100-
101-
// An enum that specifies notification mode. Requires { notify: true }
102-
// notifyMode: "failure-change",
48+
moduleFileExtensions: [
49+
'ts',
50+
'html',
51+
'js',
52+
'json',
53+
'mjs'
54+
],
10355

10456
// A preset that is used as a base for Jest's configuration
105-
// preset: undefined,
106-
107-
// Run tests from one or more projects
108-
// projects: undefined,
109-
110-
// Use this configuration option to add custom reporters to Jest
111-
// reporters: undefined,
112-
113-
// Automatically reset mock state before every test
114-
// resetMocks: false,
115-
116-
// Reset the module registry before running each individual test
117-
// resetModules: false,
118-
119-
// A path to a custom resolver
120-
// resolver: undefined,
121-
122-
// Automatically restore mock state and implementation before every test
123-
// restoreMocks: false,
124-
125-
// The root directory that Jest should scan for tests and modules within
126-
// rootDir: undefined,
127-
128-
// A list of paths to directories that Jest should use to search for files in
129-
// roots: [
130-
// "<rootDir>"
131-
// ],
132-
133-
// Allows you to use a custom runner instead of Jest's default test runner
134-
// runner: "jest-runner",
135-
136-
// The paths to modules that run some code to configure or set up the testing environment before each test
137-
// setupFiles: [],
57+
preset: 'jest-preset-angular',
13858

13959
// A list of paths to modules that run some code to configure or set up the testing framework before each test
140-
// setupFilesAfterEnv: [],
141-
142-
// The number of seconds after which a test is considered as slow and reported as such in the results.
143-
// slowTestThreshold: 5,
144-
145-
// A list of paths to snapshot serializer modules Jest should use for snapshot testing
146-
// snapshotSerializers: [],
60+
setupFilesAfterEnv: ['<rootDir>/src/setup-jest.ts'],
14761

14862
// The test environment that will be used for testing
149-
testEnvironment: 'jsdom'
150-
151-
// Options that will be passed to the testEnvironment
152-
// testEnvironmentOptions: {},
153-
154-
// Adds a location field to test results
155-
// testLocationInResults: false,
63+
testEnvironment: 'jsdom',
15664

15765
// The glob patterns Jest uses to detect test files
158-
// testMatch: [
159-
// "**/__tests__/**/*.[jt]s?(x)",
160-
// "**/?(*.)+(spec|test).[tj]s?(x)"
161-
// ],
162-
163-
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
164-
// testPathIgnorePatterns: [
165-
// "\\\\node_modules\\\\"
166-
// ],
167-
168-
// The regexp pattern or array of patterns that Jest uses to detect test files
169-
// testRegex: [],
170-
171-
// This option allows the use of a custom results processor
172-
// testResultsProcessor: undefined,
173-
174-
// This option allows use of a custom test runner
175-
// testRunner: "jest-circus/runner",
66+
testMatch: [
67+
'<rootDir>/src/app/**/*.spec.ts',
68+
'<rootDir>/src/app/**/*.test.ts'
69+
],
17670

17771
// A map from regular expressions to paths to transformers
178-
// transform: undefined,
72+
transform: {
73+
'^.+\\.(ts|js|mjs|html|svg)$': [
74+
'jest-preset-angular',
75+
{
76+
tsconfig: '<rootDir>/src/tsconfig.spec.json',
77+
stringifyContentPathRegex: '\\.(html|svg)$'
78+
}
79+
]
80+
},
17981

18082
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
181-
// transformIgnorePatterns: [
182-
// "\\\\node_modules\\\\",
183-
// "\\.pnp\\.[^\\\\]+$"
184-
// ],
185-
186-
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
187-
// unmockedModulePathPatterns: undefined,
188-
189-
// Indicates whether each individual test should be reported during the run
190-
// verbose: undefined,
191-
192-
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
193-
// watchPathIgnorePatterns: [],
194-
195-
// Whether to use watchman for file crawling
196-
// watchman: true,
83+
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$|@angular|@fortawesome)']
19784
};
19885

19986
export default config;

0 commit comments

Comments
 (0)