@@ -14,18 +14,19 @@ import {
14
14
ProjectNotFoundException ,
15
15
Workspace ,
16
16
WorkspaceNotYetLoadedException ,
17
- WorkspaceProject ,
18
17
} from './workspace' ;
18
+ import { WorkspaceProject , WorkspaceSchema , WorkspaceTool } from './workspace-schema' ;
19
19
20
20
21
21
describe ( 'Workspace' , ( ) => {
22
22
const host = new NodeJsSyncHost ( ) ;
23
23
const root = normalize ( __dirname ) ;
24
24
// The content of this JSON object should be kept in sync with the path below:
25
25
// tests/@angular_devkit /workspace/angular-workspace.json
26
- const workspaceJson = {
26
+ const workspaceJson : WorkspaceSchema = {
27
27
version : 1 ,
28
28
newProjectRoot : './projects' ,
29
+ defaultProject : 'app' ,
29
30
cli : {
30
31
'$globalOverride' : '${HOME}/.angular-cli.json' ,
31
32
'schematics' : {
@@ -98,6 +99,13 @@ describe('Workspace', () => {
98
99
} ,
99
100
} ,
100
101
} ;
102
+ const appProject = {
103
+ ...workspaceJson . projects [ 'app' ] ,
104
+ // Tools should not be returned when getting a project.
105
+ cli : { } ,
106
+ schematics : { } ,
107
+ architect : { } ,
108
+ } as { } as WorkspaceProject ;
101
109
102
110
it ( 'loads workspace from json' , ( done ) => {
103
111
const workspace = new Workspace ( root , host ) ;
@@ -168,13 +176,7 @@ describe('Workspace', () => {
168
176
it ( 'gets project by name' , ( done ) => {
169
177
const workspace = new Workspace ( root , host ) ;
170
178
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
171
- tap ( ( ws ) => expect ( ws . getProject ( 'app' ) ) . toEqual ( {
172
- ...workspaceJson . projects [ 'app' ] ,
173
- // Tools should not be returned when getting a project.
174
- cli : { } ,
175
- schematics : { } ,
176
- architect : { } ,
177
- } as { } as WorkspaceProject ) ) ,
179
+ tap ( ( ws ) => expect ( ws . getProject ( 'app' ) ) . toEqual ( appProject ) ) ,
178
180
) . subscribe ( undefined , done . fail , done ) ;
179
181
} ) ;
180
182
@@ -185,47 +187,71 @@ describe('Workspace', () => {
185
187
) . subscribe ( undefined , done . fail , done ) ;
186
188
} ) ;
187
189
190
+ it ( 'gets default project' , ( done ) => {
191
+ const workspace = new Workspace ( root , host ) ;
192
+ workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
193
+ tap ( ( ws ) => expect ( ws . getDefaultProject ( ) ) . toEqual ( appProject ) ) ,
194
+ ) . subscribe ( undefined , done . fail , done ) ;
195
+ } ) ;
196
+
197
+ it ( 'gets default project when there is a single one' , ( done ) => {
198
+ const customWorkspaceJson = { ...workspaceJson , defaultProject : undefined } ;
199
+ const workspace = new Workspace ( root , host ) ;
200
+ workspace . loadWorkspaceFromJson ( customWorkspaceJson ) . pipe (
201
+ tap ( ( ws ) => expect ( ws . getDefaultProject ( ) ) . toEqual ( appProject ) ) ,
202
+ ) . subscribe ( undefined , done . fail , done ) ;
203
+ } ) ;
204
+
205
+ it ( 'gets default project when there is a single one' , ( done ) => {
206
+ const customWorkspaceJson = { ...workspaceJson , defaultProject : undefined , projects : { } } ;
207
+ const workspace = new Workspace ( root , host ) ;
208
+ workspace . loadWorkspaceFromJson ( customWorkspaceJson ) . pipe (
209
+ tap ( ( ws ) => expect ( ws . getDefaultProject ( ) ) . toEqual ( null ) ) ,
210
+ ) . subscribe ( undefined , done . fail , done ) ;
211
+ } ) ;
212
+
188
213
it ( 'gets workspace cli' , ( done ) => {
189
214
const workspace = new Workspace ( root , host ) ;
190
215
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
191
- tap ( ( ws ) => expect ( ws . getCli ( ) ) . toEqual ( workspaceJson . cli ) ) ,
216
+ tap ( ( ws ) => expect ( ws . getCli ( ) ) . toEqual ( workspaceJson . cli as WorkspaceTool ) ) ,
192
217
) . subscribe ( undefined , done . fail , done ) ;
193
218
} ) ;
194
219
195
220
it ( 'gets workspace schematics' , ( done ) => {
196
221
const workspace = new Workspace ( root , host ) ;
197
222
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
198
- tap ( ( ws ) => expect ( ws . getSchematics ( ) ) . toEqual ( workspaceJson . schematics ) ) ,
223
+ tap ( ( ws ) => expect ( ws . getSchematics ( ) ) . toEqual ( workspaceJson . schematics as WorkspaceTool ) ) ,
199
224
) . subscribe ( undefined , done . fail , done ) ;
200
225
} ) ;
201
226
202
227
it ( 'gets workspace architect' , ( done ) => {
203
228
const workspace = new Workspace ( root , host ) ;
204
229
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
205
- tap ( ( ws ) => expect ( ws . getArchitect ( ) ) . toEqual ( workspaceJson . architect ) ) ,
230
+ tap ( ( ws ) => expect ( ws . getArchitect ( ) ) . toEqual ( workspaceJson . architect as WorkspaceTool ) ) ,
206
231
) . subscribe ( undefined , done . fail , done ) ;
207
232
} ) ;
208
233
209
234
it ( 'gets project cli' , ( done ) => {
210
235
const workspace = new Workspace ( root , host ) ;
211
236
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
212
- tap ( ( ws ) => expect ( ws . getProjectCli ( 'app' ) ) . toEqual ( workspaceJson . projects . app . cli ) ) ,
237
+ tap ( ( ws ) => expect ( ws . getProjectCli ( 'app' ) )
238
+ . toEqual ( workspaceJson . projects . app . cli as WorkspaceTool ) ) ,
213
239
) . subscribe ( undefined , done . fail , done ) ;
214
240
} ) ;
215
241
216
242
it ( 'gets project schematics' , ( done ) => {
217
243
const workspace = new Workspace ( root , host ) ;
218
244
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
219
245
tap ( ( ws ) => expect ( ws . getProjectSchematics ( 'app' ) )
220
- . toEqual ( workspaceJson . projects . app . schematics ) ) ,
246
+ . toEqual ( workspaceJson . projects . app . schematics as WorkspaceTool ) ) ,
221
247
) . subscribe ( undefined , done . fail , done ) ;
222
248
} ) ;
223
249
224
250
it ( 'gets project architect' , ( done ) => {
225
251
const workspace = new Workspace ( root , host ) ;
226
252
workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
227
253
tap ( ( ws ) => expect ( ws . getProjectArchitect ( 'app' ) )
228
- . toEqual ( workspaceJson . projects . app . architect ) ) ,
254
+ . toEqual ( workspaceJson . projects . app . architect as WorkspaceTool ) ) ,
229
255
) . subscribe ( undefined , done . fail , done ) ;
230
256
} ) ;
231
257
0 commit comments