@@ -14,18 +14,19 @@ import {
1414 ProjectNotFoundException ,
1515 Workspace ,
1616 WorkspaceNotYetLoadedException ,
17- WorkspaceProject ,
1817} from './workspace' ;
18+ import { WorkspaceProject , WorkspaceSchema , WorkspaceTool } from './workspace-schema' ;
1919
2020
2121describe ( 'Workspace' , ( ) => {
2222 const host = new NodeJsSyncHost ( ) ;
2323 const root = normalize ( __dirname ) ;
2424 // The content of this JSON object should be kept in sync with the path below:
2525 // tests/@angular_devkit /workspace/angular-workspace.json
26- const workspaceJson = {
26+ const workspaceJson : WorkspaceSchema = {
2727 version : 1 ,
2828 newProjectRoot : './projects' ,
29+ defaultProject : 'app' ,
2930 cli : {
3031 '$globalOverride' : '${HOME}/.angular-cli.json' ,
3132 'schematics' : {
@@ -98,6 +99,13 @@ describe('Workspace', () => {
9899 } ,
99100 } ,
100101 } ;
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 ;
101109
102110 it ( 'loads workspace from json' , ( done ) => {
103111 const workspace = new Workspace ( root , host ) ;
@@ -168,13 +176,7 @@ describe('Workspace', () => {
168176 it ( 'gets project by name' , ( done ) => {
169177 const workspace = new Workspace ( root , host ) ;
170178 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 ) ) ,
178180 ) . subscribe ( undefined , done . fail , done ) ;
179181 } ) ;
180182
@@ -185,47 +187,71 @@ describe('Workspace', () => {
185187 ) . subscribe ( undefined , done . fail , done ) ;
186188 } ) ;
187189
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+
188213 it ( 'gets workspace cli' , ( done ) => {
189214 const workspace = new Workspace ( root , host ) ;
190215 workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
191- tap ( ( ws ) => expect ( ws . getCli ( ) ) . toEqual ( workspaceJson . cli ) ) ,
216+ tap ( ( ws ) => expect ( ws . getCli ( ) ) . toEqual ( workspaceJson . cli as WorkspaceTool ) ) ,
192217 ) . subscribe ( undefined , done . fail , done ) ;
193218 } ) ;
194219
195220 it ( 'gets workspace schematics' , ( done ) => {
196221 const workspace = new Workspace ( root , host ) ;
197222 workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
198- tap ( ( ws ) => expect ( ws . getSchematics ( ) ) . toEqual ( workspaceJson . schematics ) ) ,
223+ tap ( ( ws ) => expect ( ws . getSchematics ( ) ) . toEqual ( workspaceJson . schematics as WorkspaceTool ) ) ,
199224 ) . subscribe ( undefined , done . fail , done ) ;
200225 } ) ;
201226
202227 it ( 'gets workspace architect' , ( done ) => {
203228 const workspace = new Workspace ( root , host ) ;
204229 workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
205- tap ( ( ws ) => expect ( ws . getArchitect ( ) ) . toEqual ( workspaceJson . architect ) ) ,
230+ tap ( ( ws ) => expect ( ws . getArchitect ( ) ) . toEqual ( workspaceJson . architect as WorkspaceTool ) ) ,
206231 ) . subscribe ( undefined , done . fail , done ) ;
207232 } ) ;
208233
209234 it ( 'gets project cli' , ( done ) => {
210235 const workspace = new Workspace ( root , host ) ;
211236 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 ) ) ,
213239 ) . subscribe ( undefined , done . fail , done ) ;
214240 } ) ;
215241
216242 it ( 'gets project schematics' , ( done ) => {
217243 const workspace = new Workspace ( root , host ) ;
218244 workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
219245 tap ( ( ws ) => expect ( ws . getProjectSchematics ( 'app' ) )
220- . toEqual ( workspaceJson . projects . app . schematics ) ) ,
246+ . toEqual ( workspaceJson . projects . app . schematics as WorkspaceTool ) ) ,
221247 ) . subscribe ( undefined , done . fail , done ) ;
222248 } ) ;
223249
224250 it ( 'gets project architect' , ( done ) => {
225251 const workspace = new Workspace ( root , host ) ;
226252 workspace . loadWorkspaceFromJson ( workspaceJson ) . pipe (
227253 tap ( ( ws ) => expect ( ws . getProjectArchitect ( 'app' ) )
228- . toEqual ( workspaceJson . projects . app . architect ) ) ,
254+ . toEqual ( workspaceJson . projects . app . architect as WorkspaceTool ) ) ,
229255 ) . subscribe ( undefined , done . fail , done ) ;
230256 } ) ;
231257
0 commit comments