@@ -13,19 +13,21 @@ import { promises as fs } from 'fs';
1313import os from 'os' ;
1414import path from 'path' ;
1515import QueryHistory from '.' ;
16+ import {
17+ FavoriteQueryStorageProvider ,
18+ RecentQueryStorageProvider ,
19+ } from '@mongodb-js/my-queries-storage/provider' ;
1620import {
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' ;
2424import { fetchRecents , fetchFavorites } from '../../stores/query-bar-reducer' ;
2525import { configureStore } from '../../stores/query-bar-store' ;
2626import { UUID } from 'bson' ;
2727import { createNoopLogger } from '@mongodb-js/compass-logging/provider' ;
2828import { createNoopTrack } from '@mongodb-js/compass-telemetry/provider' ;
29+ import type { PreferencesAccess } from 'compass-preferences-model' ;
30+ import { createSandboxFromDefaultPreferences } from 'compass-preferences-model' ;
2931
3032const 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 ( / r e c e n t s / i) ) ;
123128 expect (
124129 screen . getByText ( / y o u r r e c e n t q u e r i e s w i l l a p p e a r h e r e \. / 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 ( / f a v o r i t e s / i) ) ;
131136 expect (
132137 screen . getByText ( / y o u r f a v o r i t e q u e r i e s w i l l a p p e a r h e r e \. / 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 ( / r e c e n t s / 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 ( / r e c e n t s / 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