{ "CI_job_history_included": false, "approvals": [], "diff_versions": [ { "commits": [ { "authored_date": null, "commit_author_id": null, "committed_date": null, "committer_id": null, "merge_request_commits_metadata_id": 227, "merge_request_diff_id": 119, "message": null, "project_id": null, "relative_order": 0, "sha": null, "trailers": {} }, { "authored_date": null, "commit_author_id": null, "committed_date": null, "committer_id": null, "merge_request_commits_metadata_id": 228, "merge_request_diff_id": 119, "message": null, "project_id": null, "relative_order": 1, "sha": null, "trailers": {} } ], "files": [ { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -2,10 +2,12 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';\n import { provideZonelessChangeDetection } from '@angular/core';\n import { UserInput } from './user-input';\n import { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\n+import { UserInputService } from '../../services/user-input-service';\n \n describe('UserInput', () => {\n \tlet component: UserInput;\n \tlet fixture: ComponentFixture;\n+\tlet userInputService: UserInputService;\n \n \tbeforeEach(async () => {\n \t\tawait TestBed.configureTestingModule({\n@@ -15,6 +17,7 @@ describe('UserInput', () => {\n \n \t\tfixture = TestBed.createComponent(UserInput);\n \t\tcomponent = fixture.componentInstance;\n+\t\tuserInputService = TestBed.inject(UserInputService);\n \t\tfixture.detectChanges();\n \t});\n \n@@ -22,20 +25,22 @@ describe('UserInput', () => {\n \t\texpect(component).toBeTruthy();\n \t});\n \n-\tit('should initialize form with values from service', () => {\n-\t\texpect(component.userInputForm).toBeDefined();\n-\t\texpect(component.userInputForm.get('CP')).toBeDefined();\n-\t\texpect(component.userInputForm.get('RTT')).toBeDefined();\n-\t\texpect(component.userInputForm.get('Others')).toBeDefined();\n+\tit('should initialize with vacation days from service', () => {\n+\t\tconst vacationDays = userInputService.vacationNumberSignal();\n+\t\texpect(vacationDays).toBeDefined();\n+\t\texpect(Array.isArray(vacationDays)).toBe(true);\n+\t\texpect(vacationDays.length).toBeGreaterThan(0);\n \t});\n \n-\tit('should have valid form controls', () => {\n-\t\tconst cpControl = component.userInputForm.get('CP');\n-\t\tconst rttControl = component.userInputForm.get('RTT');\n-\t\tconst othersControl = component.userInputForm.get('Others');\n+\tit('should add a new vacation day', () => {\n+\t\tconst initialLength = userInputService.vacationNumberSignal().length;\n+\t\tcomponent.addDay();\n+\t\texpect(userInputService.vacationNumberSignal().length).toBe(initialLength + 1);\n+\t});\n \n-\t\texpect(cpControl).toBeTruthy();\n-\t\texpect(rttControl).toBeTruthy();\n-\t\texpect(othersControl).toBeTruthy();\n+\tit('should remove a vacation day', () => {\n+\t\tconst initialLength = userInputService.vacationNumberSignal().length;\n+\t\tcomponent.removeFromList(0);\n+\t\texpect(userInputService.vacationNumberSignal().length).toBe(initialLength - 1);\n \t});\n });\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": false, "merge_request_diff_id": 119, "new_file": false, "new_path": null, "old_path": "src/app/components/user-input/user-input.spec.ts", "project_id": 35, "relative_order": 0, "renamed_file": false, "too_large": false }, { "a_mode": "100644", "b_mode": "100644", "binary": false, "deleted_file": false, "diff": "@@ -1,8 +1,9 @@\n import { TestBed } from '@angular/core/testing';\n import { provideZonelessChangeDetection } from '@angular/core';\n import { UserInputService } from './user-input-service';\n+import { SelectableDayType, VacDay } from './calendar-service';\n \n-describe('UserInput', () => {\n+describe('UserInputService', () => {\n \tlet service: UserInputService;\n \n \tbeforeEach(() => {\n@@ -16,19 +17,41 @@ describe('UserInput', () => {\n \t\texpect(service).toBeTruthy();\n \t});\n \n-\tit('should initialize with random vacation numbers', () => {\n+\tit('should initialize with vacation days array', () => {\n \t\tconst vacations = service.vacationNumberSignal();\n-\t\texpect(vacations.cp).toBeGreaterThanOrEqual(1);\n-\t\texpect(vacations.cp).toBeLessThanOrEqual(9);\n-\t\texpect(vacations.rtt).toBeGreaterThanOrEqual(1);\n-\t\texpect(vacations.rtt).toBeLessThanOrEqual(9);\n-\t\texpect(vacations.other).toBeGreaterThanOrEqual(1);\n-\t\texpect(vacations.other).toBeLessThanOrEqual(9);\n+\t\texpect(Array.isArray(vacations)).toBe(true);\n+\t\texpect(vacations.length).toBeGreaterThan(0);\n+\t});\n+\n+\tit('should have vacation days with valid properties', () => {\n+\t\tconst vacations = service.vacationNumberSignal();\n+\t\tvacations.forEach((day) => {\n+\t\t\texpect(day.id).toBeDefined();\n+\t\t\texpect(day.type).toBeDefined();\n+\t\t\texpect(day.numberOfDays).toBeGreaterThanOrEqual(1);\n+\t\t\texpect(day.numberOfDays).toBeLessThanOrEqual(9);\n+\t\t\texpect(day.expiryDate).toBeInstanceOf(Date);\n+\t\t});\n \t});\n \n \tit('should update vacation number signal', () => {\n-\t\tconst newVacations = { cp: 5, rtt: 3, other: 2 };\n+\t\tconst newVacations: VacDay[] = [\n+\t\t\t{\n+\t\t\t\tid: 'test-id',\n+\t\t\t\ttype: SelectableDayType.CP,\n+\t\t\t\tnumberOfDays: 5,\n+\t\t\t\texpiryDate: new Date(),\n+\t\t\t},\n+\t\t];\n \t\tservice.vacationNumberSignal.set(newVacations);\n \t\texpect(service.vacationNumberSignal()).toEqual(newVacations);\n \t});\n+\n+\tit('should create a new vacation day', () => {\n+\t\tconst newDay = service.createVacationDay();\n+\t\texpect(newDay.id).toBeDefined();\n+\t\texpect(newDay.type).toBe(SelectableDayType.CP);\n+\t\texpect(newDay.numberOfDays).toBe(1);\n+\t\texpect(newDay.expiryDate).toBeInstanceOf(Date);\n+\t});\n });\n", "encoded_file_path": false, "external_diff_offset": null, "external_diff_size": null, "generated": false, "merge_request_diff_id": 119, "new_file": false, "new_path": null, "old_path": "src/app/services/user-input-service.spec.ts", "project_id": 35, "relative_order": 1, "renamed_file": false, "too_large": false } ], "metadata": { "base_commit_sha": "480bcc897e79b456741454b6a098a1901ece326b", "commits_count": 2, "created_at": "2026-05-03T16:00:01.043942", "diff_type": 1, "files_count": 2, "head_commit_sha": "118066dbdd89bfa79eb8516c3907e601040c3893", "id": 119, "merge_request_id": 119, "project_id": 35, "start_commit_sha": "480bcc897e79b456741454b6a098a1901ece326b", "state": "collected", "stored_externally": null, "updated_at": "2026-05-03T16:00:01.588693" } } ], "discussions": [ { "id": "88c666a6a5f7bcf500eaad4c9da64a53dbbddfff", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "assigned to `@Copilot`", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:06:33.000Z", "id": 563, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": true, "type": null, "updated_at": "2025-11-30T02:06:33.000Z" } ], "resolvable": false }, { "id": "256ac2e1d28260a325091adabcc2123719052d6d", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "assigned to `@THoguet`", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:06:33.000Z", "id": 564, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": true, "type": null, "updated_at": "2025-11-30T02:06:33.000Z" } ], "resolvable": false }, { "id": "d8e89cdc4487e1791bfca0bc8c4262c9c8577658", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "mentioned in merge request !61", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:06:36.000Z", "id": 567, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": true, "type": null, "updated_at": "2026-05-03T16:02:50.623Z" } ], "resolvable": false }, { "id": "da229caf06e5b42a450f8ae1922a5ba1c13892cc", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.\n\n> [!WARNING]\n>\n>
\n> Firewall rules blocked me from connecting to one or more addresses (expand for details)\n>\n> #### I tried to connect to the following addresses, but was blocked by firewall rules:\n>\n> - `accounts.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `clients2.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `clientservices.googleapis.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `redirector.gvt1.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `safebrowsingohttpgateway.googleapis.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `www.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n>\n> If you need me to access, download, or install something from one of these locations, you can either:\n>\n> - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled\n> - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/THoguet/vac-optimizer/settings/copilot/coding_agent) (admins only)\n>\n>
\n\n", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:12:23.000Z", "id": 566, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": false, "type": null, "updated_at": "2025-11-30T02:12:23.000Z" } ], "resolvable": false }, { "id": "950ee275aa068af03ae58d18053ebf585d7b3ee0", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "changed title from **{-[WIP] Refact-}or {-v-}ac{-ation management system with day tracking-}** to **{+Fix unit tests f+}or {+V+}ac{+Day[] type migration+}**", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:12:24.000Z", "id": 568, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": true, "type": null, "updated_at": "2025-11-30T02:12:24.000Z" } ], "resolvable": false }, { "id": "72d962edbfd647ff2dea2c104b615b13a8b6f81a", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "requested review from `@THoguet`", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:12:36.000Z", "id": 569, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": true, "type": null, "updated_at": "2025-11-30T02:12:36.000Z" } ], "resolvable": false }, { "id": "29230e9890bd10a430fe06df8a3c7118cfa7cc7f", "individual_note": true, "notes": [ { "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "body": "*Merged by: THoguet at 2025-11-30 02:12:58 UTC*", "commands_changes": {}, "confidential": false, "created_at": "2025-11-30T02:12:58.000Z", "id": 570, "imported": true, "imported_from": "github", "internal": false, "noteable_id": 119, "noteable_iid": 64, "noteable_type": "MergeRequest", "project_id": 35, "resolvable": false, "system": false, "type": null, "updated_at": "2026-05-03T16:02:50.970Z" } ], "resolvable": false } ], "format_version": 1, "notes": [ { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:06:33", "discussion_id": "88c666a6a5f7bcf500eaad4c9da64a53dbbddfff", "id": 563, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "assigned to `@Copilot`", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": true, "type": null, "updated_at": "2025-11-30T02:06:33", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:06:33", "discussion_id": "256ac2e1d28260a325091adabcc2123719052d6d", "id": 564, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "assigned to `@THoguet`", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": true, "type": null, "updated_at": "2025-11-30T02:06:33", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:06:36", "discussion_id": "d8e89cdc4487e1791bfca0bc8c4262c9c8577658", "id": 567, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "mentioned in merge request !61", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": true, "type": null, "updated_at": "2026-05-03T16:02:50.623977", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:12:23", "discussion_id": "da229caf06e5b42a450f8ae1922a5ba1c13892cc", "id": 566, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details.\n\n> [!WARNING]\n>\n>
\n> Firewall rules blocked me from connecting to one or more addresses (expand for details)\n>\n> #### I tried to connect to the following addresses, but was blocked by firewall rules:\n>\n> - `accounts.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `clients2.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `clientservices.googleapis.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `redirector.gvt1.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `safebrowsingohttpgateway.googleapis.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n> - `www.google.com`\n> - Triggering command: `/proc/self/exe /proc/self/exe --type=utility --utility-sub-type=network.mojom.NetworkService --lang=en-US --service-sandbox-type=none --disable-dev-shm-usage --use-angle=swiftshader-webgl --crashpad-handler-pid=3626 --enable-crash-reporter=, --noerrdialogs --user-data-dir=/tmp/karma-4634782 --change-stack-guard-on-fork=enable --shared-files=v8_context_snapshot_data:100 --field-trial-handle=3,i,4115905472836938781,18327784655836221968,262144 --disable-features=PaintHolding --variations-seed-version --trace-process-track-uuid=3190708989122997041` (dns block)\n> - Triggering command: `/opt/google/chrome/chrome /usr/bin/google-chrome --user-data-dir=/tmp/karma-4634782 --enable-automation --no-default-browser-check --no-first-run --disable-default-apps --disable-popup-blocking --disable-translate --disable-REDACTED-timer-throttling --disable-renderer-REDACTEDing --disable-device-discovery-notifications http://localhost:9876/?id=4634782 --headless --disable-gpu --disable-dev-shm-usage --remote-debugging-port=9222` (dns block)\n>\n> If you need me to access, download, or install something from one of these locations, you can either:\n>\n> - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled\n> - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/THoguet/vac-optimizer/settings/copilot/coding_agent) (admins only)\n>\n>
\n\n", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": false, "type": null, "updated_at": "2025-11-30T02:12:23", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:12:24", "discussion_id": "950ee275aa068af03ae58d18053ebf585d7b3ee0", "id": 568, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "changed title from **{-[WIP] Refact-}or {-v-}ac{-ation management system with day tracking-}** to **{+Fix unit tests f+}or {+V+}ac{+Day[] type migration+}**", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": true, "type": null, "updated_at": "2025-11-30T02:12:24", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:12:36", "discussion_id": "72d962edbfd647ff2dea2c104b615b13a8b6f81a", "id": 569, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "requested review from `@THoguet`", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": true, "type": null, "updated_at": "2025-11-30T02:12:36", "updated_by_id": null }, { "author_id": 3, "change_position": null, "commit_id": null, "confidential": null, "created_at": "2025-11-30T02:12:58", "discussion_id": "29230e9890bd10a430fe06df8a3c7118cfa7cc7f", "id": 570, "imported_from": 4, "internal": false, "last_edited_at": null, "line_code": null, "namespace_id": null, "note": "*Merged by: THoguet at 2025-11-30 02:12:58 UTC*", "noteable_id": 119, "noteable_type": "MergeRequest", "organization_id": null, "original_position": null, "position": null, "project_id": 35, "resolved_at": null, "resolved_by_id": null, "resolved_by_push": null, "review_id": null, "source_iid": 64, "source_item_project_id": 35, "st_diff": null, "system": false, "type": null, "updated_at": "2026-05-03T16:02:50.970085", "updated_by_id": null } ], "preexisting_missing_alternate_head": false, "source_assignees": [], "source_author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "source_created_at": "2025-11-30T02:06:33.000Z", "source_discussion_locked": null, "source_id": 119, "source_iid": 64, "source_item_metadata": { "assignee": null, "assignees": [], "author": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "blocking_discussions_resolved": true, "closed_at": null, "closed_by": null, "created_at": "2025-11-30T02:06:33.000Z", "description": "Unit tests were failing after migrating from `VacationsNumber` (object with `cp`, `rtt`, `other` properties) to `VacDay[]` array structure.\n\n### Changes\n\n- **user-input.spec.ts**: Replaced obsolete `userInputForm` tests with tests for `addDay()` and `removeFromList()` methods\n- **user-input-service.spec.ts**: Updated tests to validate `VacDay[]` array structure and properties (`id`, `type`, `numberOfDays`, `expiryDate`); fixed test suite name\n\n### Before/After\n\n```typescript\n// Before - old VacationsNumber type\nexpect(vacations.cp).toBeGreaterThanOrEqual(1);\nexpect(vacations.rtt).toBeGreaterThanOrEqual(1);\n\n// After - new VacDay[] structure\nexpect(Array.isArray(vacations)).toBe(true);\nvacations.forEach((day) => {\n expect(day.numberOfDays).toBeGreaterThanOrEqual(1);\n expect(day.expiryDate).toBeInstanceOf(Date);\n});\n```\n\n\n---\n\n💬 We'd love your input! Share your thoughts on Copilot coding agent in our [2 minute survey](https://gh.io/copilot-coding-agent-survey).\n", "detailed_merge_status": "unchecked", "discussion_locked": null, "downvotes": 0, "draft": false, "force_remove_source_branch": null, "has_conflicts": false, "id": 119, "iid": 64, "imported": true, "imported_from": "github", "labels": [], "merge_after": null, "merge_commit_sha": null, "merge_status": "unchecked", "merge_user": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "merge_when_pipeline_succeeds": false, "merged_at": "2025-11-30T02:12:58.000Z", "merged_by": { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" }, "milestone": null, "prepared_at": null, "project_id": 35, "reference": "!64", "references": { "full": "nessar/vac-optimizer!64", "relative": "!64", "short": "!64" }, "reviewers": [ { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" } ], "sha": "118066dbdd89bfa79eb8516c3907e601040c3893", "should_remove_source_branch": null, "source_branch": "copilot/sub-pr-61-another-one", "source_project_id": 35, "squash": false, "squash_commit_sha": null, "squash_on_merge": false, "state": "merged", "target_branch": "THoguet/issue16", "target_project_id": 35, "task_completion_status": { "completed_count": 0, "count": 0 }, "time_stats": { "human_time_estimate": null, "human_total_time_spent": null, "time_estimate": 0, "total_time_spent": 0 }, "title": "Fix unit tests for VacDay[] type migration", "updated_at": "2025-11-30T02:12:58.000Z", "upvotes": 0, "user_notes_count": 2, "web_url": "https://gitlab.nessar.fr/nessar/vac-optimizer/-/merge_requests/64", "work_in_progress": false }, "source_kind": "MergeRequest", "source_path": "nessar/vac-optimizer", "source_project_id": 35, "source_reviewers": [ { "avatar_url": "https://secure.gravatar.com/avatar/5e51e115b51304582ee7b2cd8f249fe3ee71b46510e381f74c032e6de81d2757?s=80&d=identicon", "id": 3, "locked": false, "name": "admin", "public_email": null, "state": "active", "username": "admin-backup", "web_url": "https://gitlab.nessar.fr/admin-backup" } ], "source_updated_at": "2025-11-30T02:12:58.000Z", "state_events": [ { "close_after_error_tracking_resolve": false, "close_auto_resolve_prometheus_alert": false, "created_at": "2025-11-30T02:12:58+00:00", "epic_id": null, "id": 289, "imported_from": 4, "issue_id": null, "merge_request_id": 119, "namespace_id": 38, "source_commit": null, "source_merge_request_id": null, "state": 2, "user_id": 3 }, { "close_after_error_tracking_resolve": false, "close_auto_resolve_prometheus_alert": false, "created_at": "2025-11-30T02:12:58+00:00", "epic_id": null, "id": 291, "imported_from": 4, "issue_id": null, "merge_request_id": 119, "namespace_id": 38, "source_commit": "a1f4b6b3f49aa74bc5b4fa4d4796fdabc3983b14", "source_merge_request_id": null, "state": 3, "user_id": 3 } ], "target_number": 142 }