Preuve d’envoi PDF (facultative)
{
expect(fixture.nativeElement.textContent).toContain('Choisissez le mode d’envoi.');
http.expectNone((request) => request.method === 'POST');
- const delivery: HTMLSelectElement = fixture.nativeElement.querySelector('.delivery-method');
- delivery.value = 'EMAIL';
- delivery.dispatchEvent(new Event('input'));
- await fixture.whenStable();
+ const loader = TestbedHarnessEnvironment.loader(fixture);
+ const delivery = await loader.getHarness(
+ MatSelectHarness.with({ selector: '.delivery-method' }),
+ );
+ await delivery.clickOptions({ text: 'Courriel' });
fixture.detectChanges();
fixture.nativeElement.querySelector('.apply-submit').click();
fixture.detectChanges();
@@ -82,10 +85,11 @@ describe('RentRevisionApplicationComponent', () => {
const fixture = createComponent();
const applied = vi.fn();
fixture.componentInstance.applied.subscribe(applied);
- const delivery: HTMLSelectElement = fixture.nativeElement.querySelector('.delivery-method');
- delivery.value = 'REGISTERED_LETTER';
- delivery.dispatchEvent(new Event('input'));
- await fixture.whenStable();
+ const loader = TestbedHarnessEnvironment.loader(fixture);
+ const delivery = await loader.getHarness(
+ MatSelectHarness.with({ selector: '.delivery-method' }),
+ );
+ await delivery.clickOptions({ text: 'Lettre recommandée' });
fixture.nativeElement.querySelector('.delivery-confirmed input').click();
const proof = new File(['pdf'], 'preuve-envoi.pdf', { type: 'application/pdf' });
const proofInput: HTMLInputElement =
diff --git a/frontend/src/app/components/rent-revision-application/rent-revision-application.ts b/frontend/src/app/components/rent-revision-application/rent-revision-application.ts
index 0491f37..a3b1807 100644
--- a/frontend/src/app/components/rent-revision-application/rent-revision-application.ts
+++ b/frontend/src/app/components/rent-revision-application/rent-revision-application.ts
@@ -6,6 +6,7 @@ import { MatButtonModule } from '@angular/material/button';
import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
+import { MatSelectModule } from '@angular/material/select';
import { finalize } from 'rxjs';
import {
ApplyRentRevisionResponse,
@@ -32,6 +33,7 @@ const frenchDate = new Intl.DateTimeFormat('fr-FR', {
MatCheckboxModule,
MatFormFieldModule,
MatInputModule,
+ MatSelectModule,
],
templateUrl: './rent-revision-application.html',
styleUrl: './rent-revision-application.css',
diff --git a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.html b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.html
index 4bf8467..96a2018 100644
--- a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.html
+++ b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.html
@@ -21,19 +21,18 @@
>
Nouvelle série officielle
-
+
+
@if (fieldError('seriesIdOverride')) {
{{ fieldError('seriesIdOverride') }}
diff --git a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.spec.ts b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.spec.ts
index 4e3b1bd..8fef5ef 100644
--- a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.spec.ts
+++ b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.spec.ts
@@ -1,6 +1,8 @@
import { provideHttpClient } from '@angular/common/http';
import { HttpTestingController, provideHttpClientTesting } from '@angular/common/http/testing';
+import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed';
import { TestBed } from '@angular/core/testing';
+import { MatSelectHarness } from '@angular/material/select/testing';
import { RentRevisionPreview } from '../../services/lease.service';
import { WorkspaceService } from '../../services/workspace.service';
import { RentRevisionPreviewComponent } from './rent-revision-preview';
@@ -148,19 +150,20 @@ describe('RentRevisionPreviewComponent', () => {
it('requires an attestation before overriding the INSEE series', async () => {
const fixture = createComponent();
- const series: HTMLSelectElement = fixture.nativeElement.querySelector('.series-override');
- expect([...series.options].map((option) => option.value)).toEqual([
- '',
- '001515333',
- '010760507',
- '010760509',
+ const loader = TestbedHarnessEnvironment.loader(fixture);
+ const series = await loader.getHarness(
+ MatSelectHarness.with({ selector: '.series-override' }),
+ );
+ await series.open();
+ const options = await series.getOptions();
+ expect(await Promise.all(options.map((option) => option.getText()))).toEqual([
+ 'Série prévue dans le bail',
+ 'Métropole — 001515333',
+ 'Corse — 010760507',
+ 'Départements d’outre-mer (article 73) — 010760509',
]);
- expect(series.textContent).toContain('Métropole — 001515333');
- expect(series.textContent).toContain('Corse — 010760507');
- expect(series.textContent).toContain('Départements d’outre-mer (article 73) — 010760509');
- series.value = '001515333';
- series.dispatchEvent(new Event('input'));
- await fixture.whenStable();
+ await series.close();
+ await series.clickOptions({ text: 'Métropole — 001515333' });
fixture.detectChanges();
fixture.nativeElement.querySelector('.preview-submit').click();
diff --git a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.ts b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.ts
index 84541e1..bd50836 100644
--- a/frontend/src/app/components/rent-revision-preview/rent-revision-preview.ts
+++ b/frontend/src/app/components/rent-revision-preview/rent-revision-preview.ts
@@ -7,6 +7,7 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatFormFieldModule } from '@angular/material/form-field';
import { MatInputModule } from '@angular/material/input';
+import { MatSelectModule } from '@angular/material/select';
import { finalize } from 'rxjs';
import {
LeaseService,
@@ -42,6 +43,7 @@ const indexFormatter = new Intl.NumberFormat('fr-FR', { maximumFractionDigits: 4
MatExpansionModule,
MatFormFieldModule,
MatInputModule,
+ MatSelectModule,
RentRevisionProposalsComponent,
],
templateUrl: './rent-revision-preview.html',
diff --git a/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.css b/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.css
index 08aa008..50023a4 100644
--- a/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.css
+++ b/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.css
@@ -36,28 +36,15 @@
gap: var(--space-3, 0.75rem);
}
-.field-grid label,
+.proposal-field,
.proposal-warnings,
.attestation {
display: grid;
gap: var(--space-2, 0.5rem);
}
-.field-grid label {
- font-size: 0.78rem;
- font-weight: 700;
-}
-
-.field-grid input {
- box-sizing: border-box;
+mat-form-field {
width: 100%;
- min-height: 2.75rem;
- padding-inline: var(--space-3, 0.75rem);
- border: 1px solid var(--border-strong, #aebbb4);
- border-radius: var(--radius-sm, 0.5rem);
- background: var(--surface, #fff);
- color: var(--text, #17211e);
- font: inherit;
}
.bounds,
diff --git a/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.html b/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.html
index bad7303..c093acd 100644
--- a/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.html
+++ b/frontend/src/app/components/rent-revision-proposals/rent-revision-proposals.html
@@ -22,50 +22,56 @@