Skip to content

Commit f7fb6b9

Browse files
committed
update tests
1 parent 33a8a56 commit f7fb6b9

File tree

4 files changed

+103
-38
lines changed

4 files changed

+103
-38
lines changed

packages/compass-app-stores/src/instances-manager.spec.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,19 @@ import {
66
} from './instances-manager';
77
import { MongoDBInstance } from 'mongodb-instance-model';
88
import { createDefaultConnectionInfo } from '@mongodb-js/testing-library-compass';
9+
import {
10+
type PreferencesAccess,
11+
createSandboxFromDefaultPreferences,
12+
} from 'compass-preferences-model';
913

1014
const TEST_CONNECTION_INFO = createDefaultConnectionInfo();
1115

1216
describe('InstancesManager', function () {
1317
let instancesManager: MongoDBInstancesManager;
14-
beforeEach(function () {
18+
let preferences: PreferencesAccess;
19+
beforeEach(async function () {
1520
instancesManager = new MongoDBInstancesManager();
21+
preferences = await createSandboxFromDefaultPreferences();
1622
});
1723

1824
it('should be able to create and return a MongoDB instance', function () {
@@ -27,6 +33,7 @@ describe('InstancesManager', function () {
2733
servers: [],
2834
setName: '',
2935
},
36+
preferences,
3037
}
3138
);
3239
expect(instance).to.be.instanceOf(MongoDBInstance);
@@ -44,6 +51,7 @@ describe('InstancesManager', function () {
4451
servers: [],
4552
setName: '',
4653
},
54+
preferences,
4755
}
4856
);
4957
expect(instancesManager.listMongoDBInstances()).to.have.lengthOf(1);
@@ -66,6 +74,7 @@ describe('InstancesManager', function () {
6674
servers: [],
6775
setName: '',
6876
},
77+
preferences,
6978
}
7079
);
7180
expect(onInstanceCreatedStub).to.be.calledOnceWithExactly(
@@ -89,6 +98,7 @@ describe('InstancesManager', function () {
8998
servers: [],
9099
setName: '',
91100
},
101+
preferences,
92102
}
93103
);
94104
expect(() =>
@@ -108,6 +118,7 @@ describe('InstancesManager', function () {
108118
servers: [],
109119
setName: '',
110120
},
121+
preferences,
111122
}
112123
);
113124
expect(() =>
@@ -138,6 +149,7 @@ describe('InstancesManager', function () {
138149
servers: [],
139150
setName: '',
140151
},
152+
preferences,
141153
}
142154
);
143155
instancesManager.removeMongoDBInstanceForConnection(

packages/compass-app-stores/src/provider.spec.tsx

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,19 @@ import {
1212
cleanup,
1313
waitFor,
1414
} from '@mongodb-js/testing-library-compass';
15+
import {
16+
createSandboxFromDefaultPreferences,
17+
type PreferencesAccess,
18+
} from 'compass-preferences-model';
19+
import { PreferencesProvider } from 'compass-preferences-model/provider';
1520

1621
describe('NamespaceProvider', function () {
1722
const sandbox = Sinon.createSandbox();
23+
let preferences: PreferencesAccess;
24+
25+
beforeEach(async function () {
26+
preferences = await createSandboxFromDefaultPreferences();
27+
});
1828

1929
afterEach(function () {
2030
cleanup();
@@ -24,49 +34,59 @@ describe('NamespaceProvider', function () {
2434
it('should immediately render content if database exists', async function () {
2535
const instanceManager = new TestMongoDBInstanceManager({
2636
databases: [{ _id: 'foo' }] as any,
37+
preferences,
2738
});
2839
await renderWithActiveConnection(
29-
<MongoDBInstancesManagerProvider value={instanceManager}>
30-
<NamespaceProvider namespace="foo">hello</NamespaceProvider>
31-
</MongoDBInstancesManagerProvider>
40+
<PreferencesProvider value={preferences}>
41+
<MongoDBInstancesManagerProvider value={instanceManager}>
42+
<NamespaceProvider namespace="foo">hello</NamespaceProvider>
43+
</MongoDBInstancesManagerProvider>
44+
</PreferencesProvider>
3245
);
3346
expect(screen.getByText('hello')).to.exist;
3447
});
3548

3649
it('should immediately render content if collection exists', async function () {
3750
const instanceManager = new TestMongoDBInstanceManager({
3851
databases: [{ _id: 'foo', collections: [{ _id: 'foo.bar' }] }] as any,
52+
preferences,
3953
});
4054
await renderWithActiveConnection(
41-
<MongoDBInstancesManagerProvider value={instanceManager}>
42-
<NamespaceProvider namespace="foo.bar">hello</NamespaceProvider>
43-
</MongoDBInstancesManagerProvider>
55+
<PreferencesProvider value={preferences}>
56+
<MongoDBInstancesManagerProvider value={instanceManager}>
57+
<NamespaceProvider namespace="foo.bar">hello</NamespaceProvider>
58+
</MongoDBInstancesManagerProvider>
59+
</PreferencesProvider>
4460
);
4561
expect(screen.getByText('hello')).to.exist;
4662
});
4763

4864
it("should not render content when namespace doesn't exist", async function () {
49-
const instanceManager = new TestMongoDBInstanceManager();
65+
const instanceManager = new TestMongoDBInstanceManager({ preferences });
5066
await renderWithActiveConnection(
51-
<MongoDBInstancesManagerProvider value={instanceManager}>
52-
<NamespaceProvider namespace="foo.bar">hello</NamespaceProvider>
53-
</MongoDBInstancesManagerProvider>
67+
<PreferencesProvider value={preferences}>
68+
<MongoDBInstancesManagerProvider value={instanceManager}>
69+
<NamespaceProvider namespace="foo.bar">hello</NamespaceProvider>
70+
</MongoDBInstancesManagerProvider>
71+
</PreferencesProvider>
5472
);
5573
expect(screen.queryByText('hello')).to.not.exist;
5674
});
5775

5876
it('should render content eventually if namespace is resolved async', async function () {
59-
const instanceManager = new TestMongoDBInstanceManager();
77+
const instanceManager = new TestMongoDBInstanceManager({ preferences });
6078
const instance = instanceManager.getMongoDBInstanceForConnection();
6179
sandbox.stub(instance, 'fetchDatabases').callsFake(() => {
6280
instance.databases.add({ _id: 'foo' });
6381
return Promise.resolve();
6482
});
6583

6684
await renderWithActiveConnection(
67-
<MongoDBInstancesManagerProvider value={instanceManager}>
68-
<NamespaceProvider namespace="foo">hello</NamespaceProvider>
69-
</MongoDBInstancesManagerProvider>
85+
<PreferencesProvider value={preferences}>
86+
<MongoDBInstancesManagerProvider value={instanceManager}>
87+
<NamespaceProvider namespace="foo">hello</NamespaceProvider>
88+
</MongoDBInstancesManagerProvider>
89+
</PreferencesProvider>
7090
);
7191

7292
expect(screen.queryByText('hello')).to.not.exist;
@@ -80,16 +100,19 @@ describe('NamespaceProvider', function () {
80100
const onNamespaceFallbackSelect = sandbox.spy();
81101
const instanceManager = new TestMongoDBInstanceManager({
82102
databases: [{ _id: 'foo' }] as any,
103+
preferences,
83104
});
84105
await renderWithActiveConnection(
85-
<MongoDBInstancesManagerProvider value={instanceManager}>
86-
<NamespaceProvider
87-
namespace="foo.bar"
88-
onNamespaceFallbackSelect={onNamespaceFallbackSelect}
89-
>
90-
hello
91-
</NamespaceProvider>
92-
</MongoDBInstancesManagerProvider>
106+
<PreferencesProvider value={preferences}>
107+
<MongoDBInstancesManagerProvider value={instanceManager}>
108+
<NamespaceProvider
109+
namespace="foo.bar"
110+
onNamespaceFallbackSelect={onNamespaceFallbackSelect}
111+
>
112+
hello
113+
</NamespaceProvider>
114+
</MongoDBInstancesManagerProvider>
115+
</PreferencesProvider>
93116
);
94117
await waitFor(() => {
95118
expect(onNamespaceFallbackSelect).to.be.calledOnceWithExactly('foo');
@@ -98,16 +121,20 @@ describe('NamespaceProvider', function () {
98121

99122
it('should call onNamespaceFallbackSelect with `null` if namespace is not found', async function () {
100123
const onNamespaceFallbackSelect = sandbox.spy();
101-
const instanceManager = new TestMongoDBInstanceManager();
124+
const instanceManager = new TestMongoDBInstanceManager({
125+
preferences,
126+
});
102127
await renderWithActiveConnection(
103-
<MongoDBInstancesManagerProvider value={instanceManager}>
104-
<NamespaceProvider
105-
namespace="foo.bar"
106-
onNamespaceFallbackSelect={onNamespaceFallbackSelect}
107-
>
108-
hello
109-
</NamespaceProvider>
110-
</MongoDBInstancesManagerProvider>
128+
<PreferencesProvider value={preferences}>
129+
<MongoDBInstancesManagerProvider value={instanceManager}>
130+
<NamespaceProvider
131+
namespace="foo.bar"
132+
onNamespaceFallbackSelect={onNamespaceFallbackSelect}
133+
>
134+
hello
135+
</NamespaceProvider>
136+
</MongoDBInstancesManagerProvider>
137+
</PreferencesProvider>
111138
);
112139
await waitFor(() => {
113140
expect(onNamespaceFallbackSelect).to.be.calledOnceWithExactly(null);

packages/compass-app-stores/src/provider.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ import { MongoDBInstancesManager } from './instances-manager';
2020
import toNS from 'mongodb-ns';
2121
import type Collection from 'mongodb-collection-model';
2222
import type Database from 'mongodb-database-model';
23+
import type {
24+
AllPreferences,
25+
PreferencesAccess,
26+
} from 'compass-preferences-model';
2327

2428
export {
2529
MongoDBInstancesManagerEvents,
@@ -46,10 +50,20 @@ export class TestMongoDBInstanceManager extends MongoDBInstancesManager {
4650
}
4751
}
4852

53+
// We need to create the context with a proper mock for testing
54+
// that includes default preferences
4955
export const MongoDBInstancesManagerContext =
5056
createContext<MongoDBInstancesManager | null>(
5157
process.env.NODE_ENV === 'test'
52-
? (new TestMongoDBInstanceManager() as unknown as MongoDBInstancesManager)
58+
? (new TestMongoDBInstanceManager({
59+
preferences: {
60+
getPreferences: () =>
61+
({ enableDbAndCollStats: true } as AllPreferences),
62+
onPreferenceValueChanged: () => () => {
63+
/* noop unsubscribe */
64+
},
65+
} as unknown as PreferencesAccess,
66+
}) as unknown as MongoDBInstancesManager)
5367
: null
5468
);
5569

packages/compass-app-stores/src/stores/instance-store.spec.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import {
99
createPluginTestHelpers,
1010
cleanup,
1111
} from '@mongodb-js/testing-library-compass';
12+
import {
13+
createSandboxFromDefaultPreferences,
14+
type PreferencesAccess,
15+
} from 'compass-preferences-model';
1216

1317
const mockConnections = [
1418
createDefaultConnectionInfo(),
@@ -39,6 +43,7 @@ describe('InstanceStore [Store]', function () {
3943
let sandbox: sinon.SinonSandbox;
4044
let getDataService: any;
4145
let connectionsStore: any;
46+
let preferences: PreferencesAccess;
4247

4348
function waitForInstanceRefresh(instance: MongoDBInstance): Promise<void> {
4449
return new Promise((resolve) => {
@@ -57,15 +62,22 @@ describe('InstanceStore [Store]', function () {
5762
CompassInstanceStorePlugin
5863
);
5964

60-
beforeEach(function () {
61-
const result = activatePluginWithConnections(undefined, {
62-
connectFn() {
63-
return createDataService();
65+
beforeEach(async function () {
66+
preferences = await createSandboxFromDefaultPreferences();
67+
const result = activatePluginWithConnections(
68+
{
69+
preferences,
6470
},
65-
});
71+
{
72+
connectFn() {
73+
return createDataService();
74+
},
75+
}
76+
);
6677
connectionsStore = result.connectionsStore;
6778
getDataService = result.getDataServiceForConnection;
6879
globalAppRegistry = result.globalAppRegistry;
80+
preferences = result.preferences;
6981
sandbox = sinon.createSandbox();
7082
instancesManager = result.plugin.store.getState().instancesManager;
7183
});

0 commit comments

Comments
 (0)