Skip to content

Commit 08c9f20

Browse files
committed
test fixes
1 parent 412c700 commit 08c9f20

File tree

3 files changed

+66
-44
lines changed

3 files changed

+66
-44
lines changed

packages/compass-crud/src/components/bulk-update-modal.spec.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,15 @@ import {
1111
import BulkUpdateModal from './bulk-update-modal';
1212

1313
import { FavoriteQueryStorageProvider } from '@mongodb-js/my-queries-storage/provider';
14-
import { compassFavoriteQueryStorageAccess } from '@mongodb-js/my-queries-storage';
14+
import { createElectronFavoriteQueryStorage } from '@mongodb-js/my-queries-storage';
15+
16+
// Create mock storage access object for testing
17+
const mockFavoriteQueryStorage = createElectronFavoriteQueryStorage({
18+
basepath: '/tmp/test',
19+
});
20+
const compassFavoriteQueryStorageAccess = {
21+
getStorage: () => mockFavoriteQueryStorage,
22+
};
1523

1624
function renderBulkUpdateModal(
1725
props?: Partial<React.ComponentProps<typeof BulkUpdateModal>>

packages/compass-crud/src/stores/crud-store.spec.ts

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ import {
2929
import { Int32 } from 'bson';
3030
import { mochaTestServer } from '@mongodb-js/compass-test-server';
3131
import {
32-
compassFavoriteQueryStorageAccess,
33-
compassRecentQueryStorageAccess,
32+
createElectronRecentQueryStorage,
33+
createElectronFavoriteQueryStorage,
3434
} from '@mongodb-js/my-queries-storage';
3535
import { satisfies } from 'semver';
3636
import type { PreferencesAccess } from 'compass-preferences-model';
@@ -48,6 +48,22 @@ import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass
4848

4949
const TEST_CONNECTION_INFO = createDefaultConnectionInfo();
5050

51+
// Create mock storage access objects for testing
52+
const mockFavoriteQueryStorage = createElectronFavoriteQueryStorage({
53+
basepath: '/tmp/test',
54+
});
55+
const mockRecentQueryStorage = createElectronRecentQueryStorage({
56+
basepath: '/tmp/test',
57+
});
58+
59+
const compassFavoriteQueryStorageAccess = {
60+
getStorage: () => mockFavoriteQueryStorage,
61+
};
62+
63+
const compassRecentQueryStorageAccess = {
64+
getStorage: () => mockRecentQueryStorage,
65+
};
66+
5167
chai.use(chaiAsPromised);
5268

5369
const delay = util.promisify(setTimeout);
@@ -2481,13 +2497,12 @@ describe('store', function () {
24812497
});
24822498

24832499
describe('saveUpdateQuery', function () {
2484-
const favoriteQueriesStorage =
2485-
compassFavoriteQueryStorageAccess.getStorage();
2486-
2500+
let favoriteQueriesStorage;
24872501
let saveQueryStub;
24882502
let store: CrudStore;
24892503

24902504
beforeEach(function () {
2505+
favoriteQueriesStorage = compassFavoriteQueryStorageAccess.getStorage();
24912506
saveQueryStub = sinon.stub().resolves();
24922507
favoriteQueriesStorage.saveQuery = saveQueryStub;
24932508
const plugin = activatePlugin(
@@ -2644,12 +2659,12 @@ describe('store', function () {
26442659
});
26452660

26462661
describe('saveRecentQueryQuery', function () {
2647-
const recentQueriesStorage = compassRecentQueryStorageAccess.getStorage();
2648-
2662+
let recentQueriesStorage;
26492663
let saveQueryStub;
26502664
let store: CrudStore;
26512665

26522666
beforeEach(function () {
2667+
recentQueriesStorage = compassRecentQueryStorageAccess.getStorage();
26532668
saveQueryStub = sinon.stub().resolves();
26542669
recentQueriesStorage.saveQuery = saveQueryStub;
26552670

packages/compass-query-bar/src/components/query-history/index.spec.tsx

Lines changed: 35 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,21 @@ import { promises as fs } from 'fs';
1313
import os from 'os';
1414
import path from 'path';
1515
import QueryHistory from '.';
16+
import {
17+
FavoriteQueryStorageProvider,
18+
RecentQueryStorageProvider,
19+
} from '@mongodb-js/my-queries-storage/provider';
1620
import {
1721
createElectronFavoriteQueryStorage,
1822
createElectronRecentQueryStorage,
1923
} from '@mongodb-js/my-queries-storage/electron';
20-
import {
21-
FavoriteQueryStorageProvider,
22-
RecentQueryStorageProvider,
23-
} from '@mongodb-js/my-queries-storage';
2424
import { fetchRecents, fetchFavorites } from '../../stores/query-bar-reducer';
2525
import { configureStore } from '../../stores/query-bar-store';
2626
import { UUID } from 'bson';
2727
import { createNoopLogger } from '@mongodb-js/compass-logging/provider';
2828
import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider';
29+
import type { PreferencesAccess } from 'compass-preferences-model';
30+
import { createSandboxFromDefaultPreferences } from 'compass-preferences-model';
2931

3032
const BASE_QUERY = {
3133
filter: { name: 'hello' },
@@ -50,9 +52,10 @@ const FAVORITE_QUERY = {
5052
...BASE_QUERY,
5153
};
5254

53-
function createStore(basepath: string) {
55+
async function createStore(basepath: string) {
5456
const favoriteQueryStorage = createElectronFavoriteQueryStorage({ basepath });
5557
const recentQueryStorage = createElectronRecentQueryStorage({ basepath });
58+
const preferences = await createSandboxFromDefaultPreferences();
5659

5760
const store = configureStore(
5861
{
@@ -61,6 +64,7 @@ function createStore(basepath: string) {
6164
{
6265
favoriteQueryStorage,
6366
recentQueryStorage,
67+
preferences,
6468
dataService: {
6569
sample() {
6670
return Promise.resolve([]);
@@ -78,11 +82,12 @@ function createStore(basepath: string) {
7882
store,
7983
favoriteQueryStorage,
8084
recentQueryStorage,
85+
preferences,
8186
};
8287
}
8388

84-
const renderQueryHistory = (basepath: string) => {
85-
const data = createStore(basepath);
89+
const renderQueryHistory = async (basepath: string) => {
90+
const data = await createStore(basepath);
8691

8792
const favoriteQueryStorage = {
8893
getStorage: () => data.favoriteQueryStorage,
@@ -117,16 +122,16 @@ describe('query-history', function () {
117122
});
118123

119124
context('zero state', function () {
120-
it('in recents', function () {
121-
renderQueryHistory(tmpDir);
125+
it('in recents', async function () {
126+
await renderQueryHistory(tmpDir);
122127
userEvent.click(screen.getByText(/recents/i));
123128
expect(
124129
screen.getByText(/your recent queries will appear here\./i)
125130
).to.exist;
126131
});
127132

128-
it('in favorites', function () {
129-
renderQueryHistory(tmpDir);
133+
it('in favorites', async function () {
134+
await renderQueryHistory(tmpDir);
130135
userEvent.click(screen.getByText(/favorites/i));
131136
expect(
132137
screen.getByText(/your favorite queries will appear here\./i)
@@ -136,9 +141,9 @@ describe('query-history', function () {
136141

137142
context('renders list of queries', function () {
138143
it('recent', async function () {
139-
const { store, recentQueryStorage } = renderQueryHistory(tmpDir);
140-
Sinon.stub(recentQueryStorage, 'loadAll').returns(
141-
Promise.resolve([RECENT_QUERY] as any)
144+
const { store, recentQueryStorage } = await renderQueryHistory(tmpDir);
145+
Sinon.stub(recentQueryStorage, 'loadAll').callsFake(
146+
(namespace?: string) => Promise.resolve([RECENT_QUERY] as any)
142147
);
143148

144149
await store.dispatch(fetchRecents());
@@ -153,9 +158,9 @@ describe('query-history', function () {
153158
});
154159

155160
it('favorite', async function () {
156-
const { store, favoriteQueryStorage } = renderQueryHistory(tmpDir);
157-
Sinon.stub(favoriteQueryStorage, 'loadAll').returns(
158-
Promise.resolve([FAVORITE_QUERY] as any)
161+
const { store, favoriteQueryStorage } = await renderQueryHistory(tmpDir);
162+
Sinon.stub(favoriteQueryStorage, 'loadAll').callsFake(
163+
(namespace?: string) => Promise.resolve([FAVORITE_QUERY] as any)
159164
);
160165

161166
await store.dispatch(fetchFavorites());
@@ -173,12 +178,13 @@ describe('query-history', function () {
173178

174179
context('deletes a query', function () {
175180
it('recent', async function () {
176-
const { store, recentQueryStorage } = renderQueryHistory(tmpDir);
177-
Sinon.stub(recentQueryStorage, 'loadAll').returns(
178-
Promise.resolve([RECENT_QUERY] as any)
181+
const { store, recentQueryStorage } = await renderQueryHistory(tmpDir);
182+
Sinon.stub(recentQueryStorage, 'loadAll').callsFake(
183+
(namespace?: string) => Promise.resolve([RECENT_QUERY] as any)
179184
);
180185

181186
await store.dispatch(fetchRecents());
187+
userEvent.click(screen.getByText(/recents/i));
182188

183189
const spy = Sinon.spy(recentQueryStorage, 'delete');
184190

@@ -195,9 +201,9 @@ describe('query-history', function () {
195201
});
196202

197203
it('favorite', async function () {
198-
const { store, favoriteQueryStorage } = renderQueryHistory(tmpDir);
199-
Sinon.stub(favoriteQueryStorage, 'loadAll').returns(
200-
Promise.resolve([FAVORITE_QUERY] as any)
204+
const { store, favoriteQueryStorage } = await renderQueryHistory(tmpDir);
205+
Sinon.stub(favoriteQueryStorage, 'loadAll').callsFake(
206+
(namespace?: string) => Promise.resolve([FAVORITE_QUERY] as any)
201207
);
202208

203209
await store.dispatch(fetchFavorites());
@@ -220,16 +226,13 @@ describe('query-history', function () {
220226

221227
it('saves recent query as favorite', async function () {
222228
const { store, recentQueryStorage, favoriteQueryStorage } =
223-
renderQueryHistory(tmpDir);
224-
Sinon.stub(recentQueryStorage, 'loadAll').returns(
229+
await renderQueryHistory(tmpDir);
230+
Sinon.stub(recentQueryStorage, 'loadAll').callsFake((namespace?: string) =>
225231
Promise.resolve([RECENT_QUERY] as any)
226232
);
227233

228234
const recentQueryDeleteSpy = Sinon.spy(recentQueryStorage, 'delete');
229-
const favoriteQueryUpdateSpy = Sinon.spy(
230-
favoriteQueryStorage,
231-
'updateAttributes'
232-
);
235+
const favoriteQuerySaveSpy = Sinon.spy(favoriteQueryStorage, 'saveQuery');
233236

234237
await store.dispatch(fetchRecents());
235238
userEvent.click(screen.getByText(/recents/i));
@@ -260,12 +263,8 @@ describe('query-history', function () {
260263
expect(recentQueryDeleteSpy.calledOnce).to.be.true;
261264
expect(recentQueryDeleteSpy.firstCall.firstArg).to.equal(RECENT_QUERY._id);
262265

263-
expect(favoriteQueryUpdateSpy.calledOnce).to.be.true;
264-
expect(favoriteQueryUpdateSpy.firstCall.firstArg).to.equal(
265-
RECENT_QUERY._id
266-
);
267-
268-
const favorite = favoriteQueryUpdateSpy.firstCall.lastArg;
269-
expect(favorite._name).to.equal('compass');
266+
expect(favoriteQuerySaveSpy.calledOnce).to.be.true;
267+
const savedQuery = favoriteQuerySaveSpy.firstCall.firstArg;
268+
expect(savedQuery._name).to.equal('compass');
270269
});
271270
});

0 commit comments

Comments
 (0)