Skip to content

Commit 7dca572

Browse files
authored
fix: prevent language switch race condition (#708)
1 parent 5e73e34 commit 7dca572

2 files changed

Lines changed: 14 additions & 7 deletions

File tree

src/learning-header/site-language/data.test.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,17 @@ describe('site-language/data', () => {
3333
});
3434

3535
describe('setSiteLanguage', () => {
36-
it('calls patchPreferences and postSetLang', async () => {
37-
mockPatchMethod.mockResolvedValueOnce({});
38-
mockPostMethod.mockResolvedValueOnce({});
36+
it('calls patchPreferences and postSetLang sequentially (patch first)', async () => {
37+
const callOrder: string[] = [];
38+
39+
mockPatchMethod.mockImplementationOnce(() => {
40+
callOrder.push('patch');
41+
return Promise.resolve({});
42+
});
43+
mockPostMethod.mockImplementationOnce(() => {
44+
callOrder.push('post');
45+
return Promise.resolve({});
46+
});
3947
await setSiteLanguage('fr', 'testuser');
4048
expect(mockPatchMethod).toHaveBeenCalledWith(
4149
'http://test/api/user/v1/preferences/testuser',
@@ -48,6 +56,7 @@ describe('site-language/data', () => {
4856
expect.objectContaining({ headers: expect.any(Object) }),
4957
);
5058
expect(mockPostMethod.mock.calls[0][1].get('language')).toBe('fr');
59+
expect(callOrder).toEqual(['patch', 'post']);
5160
});
5261

5362
it('encodes special characters in username', async () => {

src/learning-header/site-language/data.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -65,10 +65,8 @@ export async function setSiteLanguage(languageCode: string, username: string): P
6565

6666
// Update the user's language preference by making API calls to the
6767
// user preferences API and the i18n API
68-
await Promise.all([
69-
patchPreferences(username, languageCode),
70-
postSetLang(languageCode),
71-
]);
68+
await patchPreferences(username, languageCode);
69+
await postSetLang(languageCode);
7270
}
7371

7472
/**

0 commit comments

Comments
 (0)