Skip to content

Commit 0f38ad5

Browse files
chore: change ConnectionRepository to a hook (#5629)
* chore: change ConnectionRepository to a hook * chore: fix tests * chore: reduce to a single useEffect when connections change * chore: fix linting issues * chore: draft refactor of oidc * chore: drafting * chore: remove unused state * chore: add missing tests and fix linter * chore: fix missing tests and linter errors * chore: fix linter on web * chore: fix dependencies on tests * chore: fix data explorer test (added appName to connection string) * chore: don't show appName on data explorer * chore: active test * chore: fix tests * chore: fix web tests * chore: remove oidc naming, secrets can change for other types of connection * chore: pr comments * chore: fix linting issues * chore: fix linting issues * chore: document properly connection options * chore: revert changes in package-lock * chore: fix merge conflict * chore: fix package json * chore: fix package-lock.json * chore: delete compass home (merge conflict) * chore: move appName to constructor * chore: fix lint issues * chore: clean up * chore: fix linting issues * chore: fix merge conflict * chore: force updating oidc state * chore: fix linting issues * chore: ignore result of promise Co-authored-by: Himanshu Singh <[email protected]> * chore: fix tests * chore: remove .only * chore: pr comments * chore: linter issues * chore: merge merges --------- Co-authored-by: Himanshu Singh <[email protected]>
1 parent 3c2ebf9 commit 0f38ad5

27 files changed

+1108
-1058
lines changed

package-lock.json

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/compass-connections/src/components/connections.spec.tsx

Lines changed: 63 additions & 124 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,19 @@ import {
99
} from '@testing-library/react';
1010
import { expect } from 'chai';
1111
import type { ConnectionOptions, connect } from 'mongodb-data-service';
12-
import type {
13-
ConnectionInfo,
14-
ConnectionStorage,
12+
import {
13+
type ConnectionInfo,
14+
type ConnectionStorage,
15+
ConnectionStorageBus,
1516
} from '@mongodb-js/connection-storage/renderer';
1617
import { v4 as uuid } from 'uuid';
1718
import sinon from 'sinon';
18-
1919
import Connections from './connections';
2020
import { ToastArea } from '@mongodb-js/compass-components';
2121
import type { PreferencesAccess } from 'compass-preferences-model';
2222
import { createSandboxFromDefaultPreferences } from 'compass-preferences-model';
2323
import { PreferencesProvider } from 'compass-preferences-model/provider';
24-
import { ConnectionRepository } from '@mongodb-js/connection-storage/main';
25-
import {
26-
ConnectionRepositoryContext,
27-
ConnectionStorageContext,
28-
} from '@mongodb-js/connection-storage/provider';
24+
import { ConnectionStorageContext } from '@mongodb-js/connection-storage/provider';
2925
import { ConnectionsManager, ConnectionsManagerProvider } from '../provider';
3026
import type { DataService } from 'mongodb-data-service';
3127
import { createNoopLoggerAndTelemetry } from '@mongodb-js/compass-logging/provider';
@@ -40,6 +36,7 @@ function getConnectionsManager(mockTestConnectFn?: typeof connect) {
4036

4137
function getMockConnectionStorage(mockConnections: ConnectionInfo[]) {
4238
return {
39+
events: new ConnectionStorageBus(),
4340
loadAll: () => {
4441
return Promise.resolve(mockConnections);
4542
},
@@ -101,27 +98,23 @@ describe('Connections Component', function () {
10198
beforeEach(function () {
10299
const mockStorage = getMockConnectionStorage([]);
103100
loadConnectionsSpy = sinon.spy(mockStorage, 'loadAll');
104-
const connectionRepository = new ConnectionRepository(mockStorage);
105101
render(
106102
<PreferencesProvider value={preferences}>
107103
<ConnectionStorageContext.Provider value={mockStorage}>
108-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
109-
<ConnectionsManagerProvider value={getConnectionsManager()}>
110-
<Connections
111-
onConnected={onConnectedSpy}
112-
onConnectionFailed={onConnectionFailedSpy}
113-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
114-
appName="Test App Name"
115-
/>
116-
</ConnectionsManagerProvider>
117-
</ConnectionRepositoryContext.Provider>
104+
<ConnectionsManagerProvider value={getConnectionsManager()}>
105+
<Connections
106+
onConnected={onConnectedSpy}
107+
onConnectionFailed={onConnectionFailedSpy}
108+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
109+
/>
110+
</ConnectionsManagerProvider>
118111
</ConnectionStorageContext.Provider>
119112
</PreferencesProvider>
120113
);
121114
});
122115

123116
it('calls once to load the connections', function () {
124-
expect(loadConnectionsSpy.callCount).to.equal(2); // favorite + recent
117+
expect(loadConnectionsSpy.callCount).to.equal(1);
125118
});
126119

127120
it('renders the connect button from the connect-form', function () {
@@ -193,7 +186,6 @@ describe('Connections Component', function () {
193186
];
194187
mockStorage = getMockConnectionStorage(connections);
195188
sinon.replace(mockStorage, 'save', saveConnectionSpy);
196-
const connectionRepository = new ConnectionRepository(mockStorage);
197189

198190
const connectionsManager = getConnectionsManager(() => {
199191
return Promise.resolve({
@@ -206,18 +198,15 @@ describe('Connections Component', function () {
206198
render(
207199
<PreferencesProvider value={preferences}>
208200
<ConnectionStorageContext.Provider value={mockStorage}>
209-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
210-
<ConnectionsManagerProvider value={connectionsManager}>
211-
<ToastArea>
212-
<Connections
213-
onConnected={onConnectedSpy}
214-
onConnectionFailed={onConnectionFailedSpy}
215-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
216-
appName="Test App Name"
217-
/>
218-
</ToastArea>
219-
</ConnectionsManagerProvider>
220-
</ConnectionRepositoryContext.Provider>
201+
<ConnectionsManagerProvider value={connectionsManager}>
202+
<ToastArea>
203+
<Connections
204+
onConnected={onConnectedSpy}
205+
onConnectionFailed={onConnectionFailedSpy}
206+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
207+
/>
208+
</ToastArea>
209+
</ConnectionsManagerProvider>
221210
</ConnectionStorageContext.Provider>
222211
</PreferencesProvider>
223212
);
@@ -269,8 +258,7 @@ describe('Connections Component', function () {
269258
connectSpyFn.firstCall.args[0].connectionOptions
270259
).to.deep.equal({
271260
connectionString:
272-
'mongodb://localhost:27018/?readPreference=primary&ssl=false&appName=Test+App+Name',
273-
oidc: {},
261+
'mongodb://localhost:27018/?readPreference=primary&ssl=false',
274262
});
275263
});
276264

@@ -325,7 +313,6 @@ describe('Connections Component', function () {
325313
).to.deep.equal({
326314
connectionString:
327315
'mongodb://localhost:27019/?appName=Some+App+Name',
328-
oidc: {},
329316
});
330317
});
331318
}
@@ -355,7 +342,7 @@ describe('Connections Component', function () {
355342
}) => {
356343
if (
357344
connectionOptions.connectionString ===
358-
'mongodb://localhost:27099/?connectTimeoutMS=5000&serverSelectionTimeoutMS=5000&appName=Test+App+Name'
345+
'mongodb://localhost:27099/?connectTimeoutMS=5000&serverSelectionTimeoutMS=5000'
359346
) {
360347
return new Promise((resolve) => {
361348
// On first call we want this attempt to be cancelled before
@@ -395,25 +382,19 @@ describe('Connections Component', function () {
395382
];
396383
const mockStorage = getMockConnectionStorage(connections);
397384
sinon.replace(mockStorage, 'save', saveConnectionSpy);
398-
const connectionRepository = new ConnectionRepository(mockStorage);
399385

400386
render(
401387
<PreferencesProvider value={preferences}>
402388
<ConnectionStorageContext.Provider value={mockStorage}>
403-
<ConnectionRepositoryContext.Provider
404-
value={connectionRepository}
405-
>
406-
<ConnectionsManagerProvider value={connectionsManager}>
407-
<ToastArea>
408-
<Connections
409-
onConnected={onConnectedSpy}
410-
onConnectionFailed={onConnectionFailedSpy}
411-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
412-
appName="Test App Name"
413-
/>
414-
</ToastArea>
415-
</ConnectionsManagerProvider>
416-
</ConnectionRepositoryContext.Provider>
389+
<ConnectionsManagerProvider value={connectionsManager}>
390+
<ToastArea>
391+
<Connections
392+
onConnected={onConnectedSpy}
393+
onConnectionFailed={onConnectionFailedSpy}
394+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
395+
/>
396+
</ToastArea>
397+
</ConnectionsManagerProvider>
417398
</ConnectionStorageContext.Provider>
418399
</PreferencesProvider>
419400
);
@@ -480,8 +461,7 @@ describe('Connections Component', function () {
480461
connectSpyFn.firstCall.args[0].connectionOptions
481462
).to.deep.equal({
482463
connectionString:
483-
'mongodb://localhost:27099/?connectTimeoutMS=5000&serverSelectionTimeoutMS=5000&appName=Test+App+Name',
484-
oidc: {},
464+
'mongodb://localhost:27099/?connectTimeoutMS=5000&serverSelectionTimeoutMS=5000',
485465
});
486466
});
487467

@@ -521,8 +501,7 @@ describe('Connections Component', function () {
521501
connectSpyFn.secondCall.args[0].connectionOptions
522502
).to.deep.equal({
523503
connectionString:
524-
'mongodb://localhost:27018/?readPreference=primary&ssl=false&appName=Test+App+Name',
525-
oidc: {},
504+
'mongodb://localhost:27018/?readPreference=primary&ssl=false',
526505
});
527506
});
528507
}
@@ -538,23 +517,18 @@ describe('Connections Component', function () {
538517
.stub(mockStorage, 'getLegacyConnections')
539518
.resolves([{ name: 'Connection1' }]);
540519

541-
const connectionRepository = new ConnectionRepository(mockStorage);
542-
543520
render(
544521
<PreferencesProvider value={preferences}>
545522
<ConnectionStorageContext.Provider value={mockStorage}>
546-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
547-
<ConnectionsManagerProvider value={getConnectionsManager()}>
548-
<ToastArea>
549-
<Connections
550-
onConnected={onConnectedSpy}
551-
onConnectionFailed={onConnectionFailedSpy}
552-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
553-
appName="Test App Name"
554-
/>
555-
</ToastArea>
556-
</ConnectionsManagerProvider>
557-
</ConnectionRepositoryContext.Provider>
523+
<ConnectionsManagerProvider value={getConnectionsManager()}>
524+
<ToastArea>
525+
<Connections
526+
onConnected={onConnectedSpy}
527+
onConnectionFailed={onConnectionFailedSpy}
528+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
529+
/>
530+
</ToastArea>
531+
</ConnectionsManagerProvider>
558532
</ConnectionStorageContext.Provider>
559533
</PreferencesProvider>
560534
);
@@ -573,23 +547,18 @@ describe('Connections Component', function () {
573547
.stub(mockStorage, 'getLegacyConnections')
574548
.resolves([{ name: 'Connection2' }]);
575549

576-
const connectionRepository = new ConnectionRepository(mockStorage);
577-
578550
const { rerender } = render(
579551
<PreferencesProvider value={preferences}>
580552
<ConnectionStorageContext.Provider value={mockStorage}>
581-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
582-
<ConnectionsManagerProvider value={getConnectionsManager()}>
583-
<ToastArea>
584-
<Connections
585-
onConnected={onConnectedSpy}
586-
onConnectionFailed={onConnectionFailedSpy}
587-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
588-
appName="Test App Name"
589-
/>
590-
</ToastArea>
591-
</ConnectionsManagerProvider>
592-
</ConnectionRepositoryContext.Provider>
553+
<ConnectionsManagerProvider value={getConnectionsManager()}>
554+
<ToastArea>
555+
<Connections
556+
onConnected={onConnectedSpy}
557+
onConnectionFailed={onConnectionFailedSpy}
558+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
559+
/>
560+
</ToastArea>
561+
</ConnectionsManagerProvider>
593562
</ConnectionStorageContext.Provider>
594563
</PreferencesProvider>
595564
);
@@ -607,18 +576,15 @@ describe('Connections Component', function () {
607576
rerender(
608577
<PreferencesProvider value={preferences}>
609578
<ConnectionStorageContext.Provider value={mockStorage}>
610-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
611-
<ConnectionsManagerProvider value={getConnectionsManager()}>
612-
<ToastArea>
613-
<Connections
614-
onConnected={onConnectedSpy}
615-
onConnectionFailed={onConnectionFailedSpy}
616-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
617-
appName="Test App Name"
618-
/>
619-
</ToastArea>
620-
</ConnectionsManagerProvider>
621-
</ConnectionRepositoryContext.Provider>
579+
<ConnectionsManagerProvider value={getConnectionsManager()}>
580+
<ToastArea>
581+
<Connections
582+
onConnected={onConnectedSpy}
583+
onConnectionFailed={onConnectionFailedSpy}
584+
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
585+
/>
586+
</ToastArea>
587+
</ConnectionsManagerProvider>
622588
</ConnectionStorageContext.Provider>
623589
</PreferencesProvider>
624590
);
@@ -634,31 +600,4 @@ describe('Connections Component', function () {
634600
}).to.throw;
635601
});
636602
});
637-
638-
context('when multiple connection management is enabled', function () {
639-
beforeEach(async function () {
640-
await preferences.savePreferences({
641-
enableNewMultipleConnectionSystem: true,
642-
});
643-
const mockStorage = getMockConnectionStorage([]);
644-
const connectionRepository = new ConnectionRepository(mockStorage);
645-
646-
render(
647-
<PreferencesProvider value={preferences}>
648-
<ConnectionStorageContext.Provider value={mockStorage}>
649-
<ConnectionRepositoryContext.Provider value={connectionRepository}>
650-
<ConnectionsManagerProvider value={getConnectionsManager()}>
651-
<Connections
652-
onConnected={onConnectedSpy}
653-
onConnectionFailed={onConnectionFailedSpy}
654-
onConnectionAttemptStarted={onConnectionAttemptStartedSpy}
655-
appName="Test App Name"
656-
/>
657-
</ConnectionsManagerProvider>
658-
</ConnectionRepositoryContext.Provider>
659-
</ConnectionStorageContext.Provider>
660-
</PreferencesProvider>
661-
);
662-
});
663-
});
664603
});

packages/compass-connections/src/components/connections.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ function Connections({
8787
onConnected,
8888
onConnectionFailed,
8989
onConnectionAttemptStarted,
90-
appName,
9190
getAutoConnectInfo,
9291
}: {
9392
appRegistry: AppRegistry;
@@ -100,7 +99,6 @@ function Connections({
10099
error: Error
101100
) => void;
102101
onConnectionAttemptStarted: (connectionInfo: ConnectionInfo) => void;
103-
appName: string;
104102
getAutoConnectInfo?: () => Promise<ConnectionInfo | undefined>;
105103
}): React.ReactElement {
106104
const { log, mongoLogId } = useLoggerAndTelemetry('COMPASS-CONNECTIONS');
@@ -125,7 +123,6 @@ function Connections({
125123
onConnected,
126124
onConnectionFailed,
127125
onConnectionAttemptStarted,
128-
appName,
129126
getAutoConnectInfo,
130127
});
131128
const {

0 commit comments

Comments
 (0)