@@ -13,19 +13,104 @@ describe('updateWorkspace Rule', () => {
1313 beforeEach ( async ( ) => {
1414 tree = new UnitTestTree ( Tree . empty ( ) ) ;
1515 tree = createEmptyWorkspace ( tree ) as UnitTestTree ;
16+ } ) ;
1617
17- schema = {
18- projectName : 'ng-app' ,
19- skipFormat : false ,
20- forceRemove : false ,
21- } ;
18+ describe ( 'delete project' , async ( ) => {
19+ beforeEach ( async ( ) => {
20+ schema = {
21+ projectName : 'ng-app' ,
22+ skipFormat : false ,
23+ forceRemove : false ,
24+ } ;
2225
23- tree = ( await callRule (
24- updateWorkspaceInTree ( ( workspace ) => {
25- return {
26- version : 1 ,
27- projects : {
28- 'ng-app' : {
26+ tree = ( await callRule (
27+ updateWorkspaceInTree ( ( workspace ) => {
28+ return {
29+ version : 1 ,
30+ projects : {
31+ 'ng-app' : {
32+ projectType : 'application' ,
33+ schematics : { } ,
34+ root : 'apps/ng-app' ,
35+ sourceRoot : 'apps/ng-app/src' ,
36+ prefix : 'happyorg' ,
37+ architect : {
38+ build : {
39+ builder : '@angular-devkit/build-angular:browser' ,
40+ options : { } ,
41+ } ,
42+ } ,
43+ } ,
44+ 'ng-app-e2e' : {
45+ root : 'apps/ng-app-e2e' ,
46+ sourceRoot : 'apps/ng-app-e2e/src' ,
47+ projectType : 'application' ,
48+ architect : {
49+ e2e : {
50+ builder : '@nrwl/cypress:cypress' ,
51+ options : {
52+ cypressConfig : 'apps/ng-app-e2e/cypress.json' ,
53+ tsConfig : 'apps/ng-app-e2e/tsconfig.e2e.json' ,
54+ devServerTarget : 'ng-app:serve' ,
55+ } ,
56+ } ,
57+ } ,
58+ } ,
59+ } ,
60+ } ;
61+ } ) ,
62+ tree
63+ ) ) as UnitTestTree ;
64+ } ) ;
65+
66+ it ( 'should delete the project' , async ( ) => {
67+ let workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
68+ expect ( workspace . projects [ 'ng-app' ] ) . toBeDefined ( ) ;
69+
70+ tree = ( await callRule ( updateWorkspace ( schema ) , tree ) ) as UnitTestTree ;
71+
72+ workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
73+ expect ( workspace . projects [ 'ng-app' ] ) . toBeUndefined ( ) ;
74+ } ) ;
75+ } ) ;
76+
77+ describe ( 'defaultProject' , ( ) => {
78+ beforeEach ( async ( ) => {
79+ tree = ( await callRule (
80+ updateWorkspaceInTree ( ( workspace ) => {
81+ return {
82+ version : 1 ,
83+ projects : {
84+ 'ng-app' : {
85+ projectType : 'application' ,
86+ schematics : { } ,
87+ root : 'apps/ng-app' ,
88+ sourceRoot : 'apps/ng-app/src' ,
89+ prefix : 'happyorg' ,
90+ architect : {
91+ build : {
92+ builder : '@angular-devkit/build-angular:browser' ,
93+ options : { } ,
94+ } ,
95+ } ,
96+ } ,
97+ 'ng-app-e2e' : {
98+ root : 'apps/ng-app-e2e' ,
99+ sourceRoot : 'apps/ng-app-e2e/src' ,
100+ projectType : 'application' ,
101+ architect : {
102+ e2e : {
103+ builder : '@nrwl/cypress:cypress' ,
104+ options : {
105+ cypressConfig : 'apps/ng-app-e2e/cypress.json' ,
106+ tsConfig : 'apps/ng-app-e2e/tsconfig.e2e.json' ,
107+ devServerTarget : 'ng-app:serve' ,
108+ } ,
109+ } ,
110+ } ,
111+ } ,
112+ } ,
113+ 'ng-other-app' : {
29114 projectType : 'application' ,
30115 schematics : { } ,
31116 root : 'apps/ng-app' ,
@@ -38,35 +123,44 @@ describe('updateWorkspace Rule', () => {
38123 } ,
39124 } ,
40125 } ,
41- 'ng-app-e2e' : {
42- root : 'apps/ng-app-e2e' ,
43- sourceRoot : 'apps/ng-app-e2e/src' ,
44- projectType : 'application' ,
45- architect : {
46- e2e : {
47- builder : '@nrwl/cypress:cypress' ,
48- options : {
49- cypressConfig : 'apps/ng-app-e2e/cypress.json' ,
50- tsConfig : 'apps/ng-app-e2e/tsconfig.e2e.json' ,
51- devServerTarget : 'ng-app:serve' ,
52- } ,
53- } ,
54- } ,
55- } ,
56- } ,
57- } ;
58- } ) ,
59- tree
60- ) ) as UnitTestTree ;
61- } ) ;
126+ defaultProject : 'ng-app' ,
127+ } ;
128+ } ) ,
129+ tree
130+ ) ) as UnitTestTree ;
131+ } ) ;
62132
63- it ( 'should delete the project' , async ( ) => {
64- let workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
65- expect ( workspace . projects [ 'ng-app' ] ) . toBeDefined ( ) ;
133+ it ( 'should remove defaultProject if it matches the project being deleted' , async ( ) => {
134+ schema = {
135+ projectName : 'ng-app' ,
136+ skipFormat : false ,
137+ forceRemove : false ,
138+ } ;
139+
140+ let workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
141+ expect ( workspace . defaultProject ) . toBeDefined ( ) ;
142+
143+ tree = ( await callRule ( updateWorkspace ( schema ) , tree ) ) as UnitTestTree ;
144+
145+ workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
146+ expect ( workspace . defaultProject ) . toBeUndefined ( ) ;
147+ } ) ;
66148
67- tree = ( await callRule ( updateWorkspace ( schema ) , tree ) ) as UnitTestTree ;
149+ it ( 'should not remove defaultProject if it does not match the project being deleted' , async ( ) => {
150+ schema = {
151+ projectName : 'ng-other-app' ,
152+ skipFormat : false ,
153+ forceRemove : false ,
154+ } ;
68155
69- workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
70- expect ( workspace . projects [ 'ng-app' ] ) . toBeUndefined ( ) ;
156+ let workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
157+ expect ( workspace . defaultProject ) . toBeDefined ( ) ;
158+
159+ tree = ( await callRule ( updateWorkspace ( schema ) , tree ) ) as UnitTestTree ;
160+
161+ workspace = JSON . parse ( tree . read ( 'workspace.json' ) . toString ( ) ) ;
162+ expect ( workspace . defaultProject ) . toBeDefined ( ) ;
163+ } ) ;
71164 } ) ;
165+
72166} ) ;
0 commit comments