@@ -40,35 +40,44 @@ describe('Create Project From Database Quickpick', () => {
40
40
//promptForConnection spy to verify test
41
41
const promptForConnectionSpy = sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'promptForConnection' ) . withArgs ( sinon . match . any ) . resolves ( undefined ) ;
42
42
43
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( ) ;
43
+ //createProjectFromDatabaseQuickpick spy to verify test
44
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
45
+
46
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( undefined , createProjectFromDatabaseCallbackSpy ) ;
44
47
45
48
//verify that prompt for connection was called
46
49
should ( promptForConnectionSpy . calledOnce ) . be . true ( 'promptForConnection should have been called' ) ;
47
50
48
- //verify quickpick exited with undefined , since promptForConnection was set to cancel (resolves to undefined)
49
- should . equal ( model , undefined ) ;
51
+ //verify create project callback was not called , since promptForConnection was set to cancel (resolves to undefined)
52
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
50
53
} ) ;
51
54
52
55
it ( 'Should not prompt for connection when connectionInfo is provided and exit when db is not selected' , async function ( ) : Promise < void > {
53
56
//promptForConnection spy to verify test
54
57
const promptForConnectionSpy = sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'promptForConnection' ) . withArgs ( sinon . match . any ) . resolves ( undefined ) ;
55
58
59
+ //createProjectFromDatabaseQuickpick spy to verify test
60
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
61
+
56
62
//user chooses connection
57
63
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
58
64
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
59
65
// user chooses to cancel when prompted for database
60
66
sinon . stub ( vscode . window , 'showQuickPick' ) . resolves ( undefined ) ;
61
67
62
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
68
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
63
69
64
70
//verify connection prompt wasn't presented, since connectionInfo was passed during the call
65
71
should ( promptForConnectionSpy . notCalled ) . be . true ( 'promptForConnection should not be called when connectionInfo is provided' ) ;
66
72
67
- //verify quickpick exited with undefined , since database wasn't selected (resolved to undefined)
68
- should . equal ( model , undefined ) ;
73
+ //verify create project callback was not called , since database wasn't selected (resolved to undefined)
74
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
69
75
} ) ;
70
76
71
77
it ( 'Should exit when project name is not selected' , async function ( ) : Promise < void > {
78
+ //createProjectFromDatabaseQuickpick spy to verify test
79
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
80
+
72
81
//user chooses connection and database
73
82
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
74
83
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -78,13 +87,16 @@ describe('Create Project From Database Quickpick', () => {
78
87
// user chooses to cancel when prompted to enter project name
79
88
inputBoxStub . onSecondCall ( ) . resolves ( undefined ) ;
80
89
81
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
90
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
82
91
83
- //verify showInputBox exited with undefined , since project name wasn't selected (resolved to undefined)
84
- should . equal ( model , undefined ) ;
92
+ //verify create project callback was not called , since project name wasn't selected (resolved to undefined)
93
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
85
94
} ) ;
86
95
87
96
it ( 'Should exit when project location is not selected' , async function ( ) : Promise < void > {
97
+ //createProjectFromDatabaseQuickpick spy to verify test
98
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
99
+
88
100
//user chooses connection and database
89
101
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
90
102
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -94,13 +106,16 @@ describe('Create Project From Database Quickpick', () => {
94
106
//user chooses to exit
95
107
quickPickStub . onSecondCall ( ) . resolves ( undefined ) ;
96
108
97
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
109
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
98
110
99
- //verify showQuickPick exited with undefined , since project location wasn't selected (resolved to undefined)
100
- should . equal ( model , undefined ) ;
111
+ //verify create project callback was not called , since project location wasn't selected (resolved to undefined)
112
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
101
113
} ) ;
102
114
103
115
it ( 'Should exit when project location is not selected (test repeatedness for project location)' , async function ( ) : Promise < void > {
116
+ //createProjectFromDatabaseQuickpick spy to verify test
117
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
118
+
104
119
//user chooses connection and database
105
120
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
106
121
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -122,13 +137,16 @@ describe('Create Project From Database Quickpick', () => {
122
137
//user chooses to exit
123
138
quickPickStub . onCall ( 4 ) . resolves ( undefined ) ;
124
139
125
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
140
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
126
141
127
- //verify showQuickPick exited with undefined , since project location wasn't selected (resolved to undefined)
128
- should . equal ( model , undefined ) ;
142
+ //verify create project callback was not called , since project location wasn't selected (resolved to undefined)
143
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
129
144
} ) ;
130
145
131
146
it ( 'Should exit when folder structure is not selected and folder is selected through browsing (test repeatedness for project location)' , async function ( ) : Promise < void > {
147
+ //createProjectFromDatabaseQuickpick spy to verify test
148
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
149
+
132
150
//user chooses connection and database
133
151
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
134
152
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -146,13 +164,16 @@ describe('Create Project From Database Quickpick', () => {
146
164
//user chooses to exit when prompted for folder structure
147
165
quickPickStub . onCall ( 3 ) . resolves ( undefined ) ;
148
166
149
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
167
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
150
168
151
- //verify showQuickPick exited with undefined , since folder structure wasn't selected (resolved to undefined)
152
- should . equal ( model , undefined ) ;
169
+ //verify create project callback was not called , since folder structure wasn't selected (resolved to undefined)
170
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
153
171
} ) ;
154
172
155
173
it ( 'Should exit when folder structure is not selected and existing folder/file location is selected' , async function ( ) : Promise < void > {
174
+ //createProjectFromDatabaseQuickpick spy to verify test
175
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
176
+
156
177
//create folder and project file
157
178
const projectFileName = 'TestProject' ;
158
179
const testProjectFilePath = await generateTestFolderPath ( this . test ) ;
@@ -172,15 +193,18 @@ describe('Create Project From Database Quickpick', () => {
172
193
//user chooses to exit when prompted for folder structure
173
194
quickPickStub . onCall ( 3 ) . resolves ( undefined ) ;
174
195
175
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
196
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
176
197
177
198
await deleteGeneratedTestFolder ( ) ;
178
199
179
- //verify showQuickPick exited with undefined , since folder structure wasn't selected (resolved to undefined)
180
- should . equal ( model , undefined ) ;
200
+ //verify create project callback was not called , since folder structure wasn't selected (resolved to undefined)
201
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
181
202
} ) ;
182
203
183
204
it ( 'Should exit when include permissions is not selected' , async function ( ) : Promise < void > {
205
+ //createProjectFromDatabaseQuickpick spy to verify test
206
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
207
+
184
208
//user chooses connection and database
185
209
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
186
210
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -194,13 +218,16 @@ describe('Create Project From Database Quickpick', () => {
194
218
//user chooses to exit when prompted for include permissions
195
219
quickPickStub . onCall ( 3 ) . resolves ( undefined ) ;
196
220
197
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
221
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
198
222
199
- //verify showQuickPick exited with undefined , since include permissions wasn't selected (resolved to undefined)
200
- should . equal ( model , undefined ) ;
223
+ //verify create project callback was not called , since include permissions wasn't selected (resolved to undefined)
224
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
201
225
} ) ;
202
226
203
227
it ( 'Should exit when sdk style project is not selected' , async function ( ) : Promise < void > {
228
+ //createProjectFromDatabaseQuickpick spy to verify test
229
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
230
+
204
231
//user chooses connection and database
205
232
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
206
233
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -216,13 +243,16 @@ describe('Create Project From Database Quickpick', () => {
216
243
//user chooses to exit when prompted for sdk style project
217
244
sinon . stub ( quickpickHelper , 'getSDKStyleProjectInfo' ) . resolves ( undefined ) ;
218
245
219
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
246
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
220
247
221
- //verify showQuickPick exited with undefined , since sdk style project wasn't selected (resolved to undefined)
222
- should . equal ( model , undefined ) ;
248
+ //verify create project callback was not called , since sdk style project wasn't selected (resolved to undefined)
249
+ should ( createProjectFromDatabaseCallbackSpy . notCalled ) . be . true ( 'createProjectFromDatabaseCallback should not have been called' ) ;
223
250
} ) ;
224
251
225
- it ( 'Should create correct import data model when all the information is provided' , async function ( ) : Promise < void > {
252
+ it ( 'Should create project when all the information is provided' , async function ( ) : Promise < void > {
253
+ //createProjectFromDatabaseQuickpick spy to verify test
254
+ const createProjectFromDatabaseCallbackSpy = sinon . stub ( ) . resolves ( ) ;
255
+
226
256
//user chooses connection and database
227
257
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'connect' ) . resolves ( 'testConnectionURI' ) ;
228
258
sinon . stub ( testUtils . vscodeMssqlIExtension . object , 'listDatabases' ) . withArgs ( sinon . match . any ) . resolves ( dbList ) ;
@@ -238,7 +268,7 @@ describe('Create Project From Database Quickpick', () => {
238
268
//user chooses sdk style project to be true
239
269
sinon . stub ( quickpickHelper , 'getSDKStyleProjectInfo' ) . resolves ( true ) ;
240
270
241
- const model = await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo ) ;
271
+ await createProjectFromDatabaseQuickpick . createNewProjectFromDatabaseWithQuickpick ( mockConnectionInfo , createProjectFromDatabaseCallbackSpy ) ;
242
272
243
273
const expectedImportDataModel : ImportDataModel = {
244
274
connectionUri : 'testConnectionURI' ,
@@ -251,7 +281,8 @@ describe('Create Project From Database Quickpick', () => {
251
281
includePermissions : false
252
282
} ;
253
283
254
- //verify the model is correctly generated
255
- should ( model ! ) . deepEqual ( expectedImportDataModel ) ;
284
+ //verify create project callback was called with the correct model
285
+ should ( createProjectFromDatabaseCallbackSpy . calledOnce ) . be . true ( 'createProjectFromDatabaseCallback should have been called' ) ;
286
+ should ( createProjectFromDatabaseCallbackSpy . calledWithMatch ( expectedImportDataModel ) ) . be . true ( 'createProjectFromDatabaseCallback should have been called with the correct model' ) ;
256
287
} ) ;
257
288
} ) ;
0 commit comments