55 * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
66 */
77
8+ import * as path from 'path' ;
9+ import * as fs from 'fs' ;
810import { Dictionary } from '@salesforce/ts-types' ;
911import { SourceTestkit } from '@salesforce/source-testkit' ;
1012
@@ -55,6 +57,23 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
5557
5658 let originalState : Dictionary < string > ;
5759
60+ const filesAreInOriginalState = async ( ) => {
61+ return Promise . all ( [
62+ testkit . expect . filesToContainString ( myAppLabels , '<fullName>my_app_Label_1</fullName>' ) ,
63+ testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ,
64+ testkit . expect . filesToContainString (
65+ forceAppLabels ,
66+ '<fullName>force_app_Label_1</fullName>' ,
67+ '<fullName>force_app_Label_2</fullName>'
68+ ) ,
69+ testkit . expect . filesToNotContainString (
70+ myAppLabels ,
71+ '<fullName>force_app_Label_1</fullName>' ,
72+ '<fullName>force_app_Label_2</fullName>'
73+ ) ,
74+ ] ) ;
75+ } ;
76+
5877 before ( async ( ) => {
5978 originalState = await testkit . readGlobs ( [ forceAppLabels , myAppLabels ] ) ;
6079 } ) ;
@@ -71,12 +90,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
7190 await testkit . retrieve ( { args : '--metadata CustomLabels' } ) ;
7291
7392 await testkit . expect . filesToBeChanged ( [ forceAppLabels , myAppLabels ] ) ;
74- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
75- await testkit . expect . filesToNotContainString (
76- myAppLabels ,
77- '<fullName>force_app_Label_1</fullName>' ,
78- '<fullName>force_app_Label_2</fullName>'
79- ) ;
93+ await filesAreInOriginalState ( ) ;
8094 } ) ;
8195
8296 it ( 'should put new labels into CustomLabels file in default package' , async ( ) => {
@@ -93,18 +107,12 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
93107 ) ;
94108 } ) ;
95109
96- it ( 'should put new labels into existing CustomLabels file' , async ( ) => {
110+ it ( 'should put new labels into default CustomLabels file' , async ( ) => {
97111 // Delete local labels to simulate having new labels created in the org
98112 await testkit . deleteGlobs ( [ forceAppLabels ] ) ;
99113 await testkit . retrieve ( { args : '--metadata CustomLabels' } ) ;
100114
101- await testkit . expect . filesToBeChanged ( [ myAppLabels ] ) ;
102- await testkit . expect . filesToContainString (
103- myAppLabels ,
104- '<fullName>my_app_Label_1</fullName>' ,
105- '<fullName>force_app_Label_1</fullName>' ,
106- '<fullName>force_app_Label_2</fullName>'
107- ) ;
115+ await filesAreInOriginalState ( ) ;
108116 } ) ;
109117
110118 it ( 'should put all labels into default CustomLabels file when no labels exist locally' , async ( ) => {
@@ -119,25 +127,16 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
119127 '<fullName>force_app_Label_1</fullName>' ,
120128 '<fullName>force_app_Label_2</fullName>'
121129 ) ;
130+ await testkit . expect . filesToNotExist ( [ myAppLabels ] ) ;
122131 } ) ;
123132 } ) ;
124133
125134 describe ( '--metadata CustomLabel:force_app_Label_1' , ( ) => {
126135 it ( 'should put individual label into appropriate CustomLabels file' , async ( ) => {
127136 await testkit . retrieve ( { args : '--metadata CustomLabel:force_app_Label_1' } ) ;
128137
129- await testkit . expect . filesToBeChanged ( [ forceAppLabels ] ) ;
130138 await testkit . expect . filesToNotBeChanged ( [ myAppLabels ] ) ;
131- await testkit . expect . filesToNotContainString (
132- forceAppLabels ,
133- '<fullName>my_app_Label_1</fullName>' ,
134- '<fullName>force_app_Label_2</fullName>'
135- ) ;
136- await testkit . expect . filesToNotContainString (
137- myAppLabels ,
138- '<fullName>force_app_Label_1</fullName>' ,
139- '<fullName>force_app_Label_2</fullName>'
140- ) ;
139+ await filesAreInOriginalState ( ) ;
141140 } ) ;
142141
143142 it ( 'should put individual label into default CustomLabels file when no labels exist locally' , async ( ) => {
@@ -153,20 +152,29 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
153152 '<fullName>force_app_Label_2</fullName>'
154153 ) ;
155154 } ) ;
155+
156+ it ( 'should put 1 new label into file and still have the OTHER label' , async ( ) => {
157+ // remove label2 and then retrieve it. Make sure label
158+ const forceAppLabelFile = path . normalize ( path . join ( testkit . projectDir , forceAppLabels ) ) ;
159+ await fs . promises . writeFile (
160+ forceAppLabelFile ,
161+ (
162+ await fs . promises . readFile ( forceAppLabelFile , 'utf-8' )
163+ ) . replace ( / ( < l a b e l s > \s * < f u l l N a m e > f o r c e _ a p p _ L a b e l _ 2 .* < \/ l a b e l s > ) / gs, '' )
164+ ) ;
165+ await testkit . retrieve ( { args : '--metadata CustomLabel:force_app_Label_2' } ) ;
166+
167+ await filesAreInOriginalState ( ) ;
168+ } ) ;
156169 } ) ;
157170
158171 describe ( '--metadata CustomLabel:force_app_Label_1,CustomLabel:my_app_Label_1' , ( ) => {
159- it ( 'should put labels into appropriate CustomLabels file ' , async ( ) => {
172+ it ( 'should put 2 single labels into 2 CustomLabels files ' , async ( ) => {
160173 await testkit . modifyLocalGlobs ( [ forceAppLabels , myAppLabels ] ) ;
161174 await testkit . retrieve ( { args : '--metadata CustomLabel:force_app_Label_1,CustomLabel:my_app_Label_1' } ) ;
162175
163176 await testkit . expect . filesToBeChanged ( [ forceAppLabels , myAppLabels ] ) ;
164- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
165- await testkit . expect . filesToNotContainString (
166- myAppLabels ,
167- '<fullName>force_app_Label_1</fullName>' ,
168- '<fullName>force_app_Label_2</fullName>'
169- ) ;
177+ await filesAreInOriginalState ( ) ;
170178 } ) ;
171179 } ) ;
172180
@@ -177,13 +185,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
177185
178186 await testkit . expect . filesToBeChanged ( [ forceAppLabels ] ) ;
179187 await testkit . expect . filesToNotBeChanged ( [ myAppLabels ] ) ;
180-
181- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
182- await testkit . expect . filesToNotContainString (
183- myAppLabels ,
184- '<fullName>force_app_Label_1</fullName>' ,
185- '<fullName>force_app_Label_2</fullName>'
186- ) ;
188+ await filesAreInOriginalState ( ) ;
187189 } ) ;
188190 } ) ;
189191
@@ -194,13 +196,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
194196
195197 await testkit . expect . filesToBeChanged ( [ myAppLabels ] ) ;
196198 await testkit . expect . filesToNotBeChanged ( [ forceAppLabels ] ) ;
197-
198- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
199- await testkit . expect . filesToNotContainString (
200- myAppLabels ,
201- '<fullName>force_app_Label_1</fullName>' ,
202- '<fullName>force_app_Label_2</fullName>'
203- ) ;
199+ await filesAreInOriginalState ( ) ;
204200 } ) ;
205201 } ) ;
206202
@@ -210,12 +206,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
210206 await testkit . retrieve ( { args : '--sourcepath force-app,my-app' } ) ;
211207
212208 await testkit . expect . filesToBeChanged ( [ forceAppLabels , myAppLabels ] ) ;
213- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
214- await testkit . expect . filesToNotContainString (
215- myAppLabels ,
216- '<fullName>force_app_Label_1</fullName>' ,
217- '<fullName>force_app_Label_2</fullName>'
218- ) ;
209+ await filesAreInOriginalState ( ) ;
219210 } ) ;
220211 } ) ;
221212
@@ -227,12 +218,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
227218 await testkit . retrieve ( { args : `--manifest ${ packageXml } ` } ) ;
228219
229220 await testkit . expect . filesToBeChanged ( [ forceAppLabels , myAppLabels ] ) ;
230- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
231- await testkit . expect . filesToNotContainString (
232- myAppLabels ,
233- '<fullName>force_app_Label_1</fullName>' ,
234- '<fullName>force_app_Label_2</fullName>'
235- ) ;
221+ await filesAreInOriginalState ( ) ;
236222 } ) ;
237223 } ) ;
238224
@@ -241,8 +227,7 @@ context('MPD Retrieve NUTs [exec: %EXECUTABLE%]', () => {
241227 const xml = '<types><members>force_app_Label_1</members><name>CustomLabel</name></types>' ;
242228 const packageXml = await testkit . createPackageXml ( xml ) ;
243229 await testkit . retrieve ( { args : `--manifest ${ packageXml } ` } ) ;
244- await testkit . expect . filesToContainString ( forceAppLabels , '<fullName>force_app_Label_1</fullName>' ) ;
245- await testkit . expect . filesToNotContainString ( forceAppLabels , '<fullName>my_app_Label_1</fullName>' ) ;
230+ await filesAreInOriginalState ( ) ;
246231 } ) ;
247232 } ) ;
248233 } ) ;
0 commit comments