Skip to content

Commit 47b3130

Browse files
committed
last update info address edit page (#519)
1 parent 2f53cb9 commit 47b3130

File tree

2 files changed

+75
-3
lines changed

2 files changed

+75
-3
lines changed

public/mobile-app/src/routes/edit-address/+page.svelte

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import { type AddressFromBAN, callBAN } from '$lib/addressesFromBAN'
66
import { buildAgenda } from '$lib/agenda'
77
import NavWithBackButton from '$lib/components/NavWithBackButton.svelte'
8+
import type { DataOrigin } from '$lib/state/User.svelte'
89
import { userStore } from '$lib/state/User.svelte'
10+
import { formatDate } from '$lib/utils'
911
1012
let addressFromUserStore: Address | undefined = $state()
1113
let timer: any
@@ -17,18 +19,23 @@
1719
let selectedAddress: Address | undefined = $state()
1820
let hasSelectedAddress: boolean = $state(false)
1921
let submittedAddress: Address | undefined = $state()
22+
let address_origin: DataOrigin | undefined = $state()
23+
let address_last_update: Date | undefined = $state()
2024
2125
onMount(() => {
2226
if (!userStore.connected) {
2327
goto('/')
2428
return
2529
} else {
26-
addressFromUserStore = userStore.connected.identity.address
30+
const identity = userStore.connected.identity
31+
addressFromUserStore = identity.address
2732
if (addressFromUserStore) {
2833
hasSelectedAddress = true
2934
selectedAddress = addressFromUserStore
3035
submittedAddress = addressFromUserStore
3136
}
37+
address_origin = identity.dataDetails.address.origin
38+
address_last_update = identity.dataDetails.address.lastUpdate
3239
}
3340
})
3441
@@ -128,7 +135,7 @@
128135
<div class="address-form-page">
129136
<NavWithBackButton title="Où habitez-vous&nbsp;?" />
130137

131-
<div class="address-content-container">
138+
<div class="address-content-container" data-testid="container">
132139
<p>
133140
L'adresse de votre <strong>résidence principale</strong> permet de
134141
<strong>faciliter la communication</strong> avec les administrations.
@@ -185,7 +192,16 @@
185192
</ul>
186193
{/if}
187194
</div>
188-
<div class="fr-messages-group" id="text-messages" aria-live="polite"></div>
195+
<div
196+
class="fr-messages-group data-update-info"
197+
id="text-messages"
198+
aria-live="polite"
199+
>
200+
{#if address_origin == 'user' && address_last_update}
201+
Vous avez modifié cette information le
202+
{formatDate(address_last_update)}.
203+
{/if}
204+
</div>
189205
</fieldset>
190206
</form>
191207

@@ -260,6 +276,11 @@
260276
margin: 0;
261277
}
262278
}
279+
.data-update-info {
280+
font-size: 0.75rem;
281+
line-height: 1.25rem;
282+
color: var(--text-mention-grey);
283+
}
263284
264285
.fr-input-group:not(:last-child) {
265286
margin-bottom: 0;

public/mobile-app/src/routes/edit-address/page.svelte.test.ts

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,57 @@ describe('/+page.svelte', () => {
5555
vi.resetAllMocks()
5656
})
5757

58+
test('should display the last update date', async () => {
59+
// Given
60+
const newMockUserIdentity = JSON.parse(JSON.stringify(mockUserIdentity))
61+
newMockUserIdentity.dataDetails.address.origin = 'user'
62+
newMockUserIdentity.dataDetails.address.lastUpdate = '2026-01-15'
63+
localStorage.setItem('user_identity', JSON.stringify(newMockUserIdentity))
64+
await userStore.login(mockUserInfo)
65+
66+
// When
67+
render(Page)
68+
69+
// Then
70+
const container = screen.getByTestId('container')
71+
expect(container).toHaveTextContent(
72+
'Vous avez modifié cette information le 15/01/2026.'
73+
)
74+
})
75+
76+
test('should not display the last update date - date missing', async () => {
77+
// Given
78+
const newMockUserIdentity = JSON.parse(JSON.stringify(mockUserIdentity))
79+
newMockUserIdentity.dataDetails.address.origin = 'user'
80+
localStorage.setItem('user_identity', JSON.stringify(newMockUserIdentity))
81+
await userStore.login(mockUserInfo)
82+
83+
// When
84+
render(Page)
85+
86+
// Then
87+
const container = screen.getByTestId('container')
88+
expect(container).not.toHaveTextContent('Vous avez modifié cette information le')
89+
})
90+
91+
test('should not display the last update date - wrong origin', async () => {
92+
// Given
93+
const newMockUserIdentity = JSON.parse(JSON.stringify(mockUserIdentity))
94+
const choices = ['france-connect', 'api-particulier', 'cleared', undefined]
95+
const random_index = Math.floor(Math.random() * choices.length)
96+
newMockUserIdentity.dataDetails.address.origin = choices[random_index]
97+
newMockUserIdentity.dataDetails.address.lastUpdate = '2026-01-15'
98+
localStorage.setItem('user_identity', JSON.stringify(newMockUserIdentity))
99+
await userStore.login(mockUserInfo)
100+
101+
// When
102+
render(Page)
103+
104+
// Then
105+
const container = screen.getByTestId('container')
106+
expect(container).not.toHaveTextContent('Vous avez modifié cette information le')
107+
})
108+
58109
test('should display results when user enters an address', async () => {
59110
// When
60111
render(Page)

0 commit comments

Comments
 (0)