1
- import { create as createBedrockYaml } from "../../lib/bedrockYaml" ;
1
+ import * as bedrock from "../../lib/bedrockYaml" ;
2
+ import * as fileUtils from "../../lib/fileutils" ;
2
3
import { createTempDir } from "../../lib/ioUtil" ;
3
4
import { disableVerboseLogging , enableVerboseLogging } from "../../logger" ;
4
-
5
+ import { createTestBedrockYaml } from "../../test/mockFactory" ;
6
+ import { IBedrockFile } from "../../types" ;
5
7
import { checkDependencies , execute } from "./delete" ;
6
8
9
+ jest . mock ( "../../lib/fileutils" ) ;
10
+
7
11
beforeAll ( ( ) => {
8
12
enableVerboseLogging ( ) ;
9
13
} ) ;
@@ -12,15 +16,20 @@ afterAll(() => {
12
16
disableVerboseLogging ( ) ;
13
17
} ) ;
14
18
15
- describe ( "test valid function" , ( ) => {
16
- it ( "negative test" , async ( ) => {
17
- try {
18
- const tmpDir = createBedrockYaml ( ) ;
19
- checkDependencies ( tmpDir ) ;
20
- expect ( true ) . toBe ( false ) ;
21
- } catch ( e ) {
22
- expect ( e ) . not . toBeNull ( ) ;
23
- }
19
+ beforeEach ( ( ) => {
20
+ jest . clearAllMocks ( ) ;
21
+ } ) ;
22
+
23
+ describe ( "checkDependencies" , ( ) => {
24
+ it ( "throws when project not initialized" , ( ) => {
25
+ const tmpDir = createTempDir ( ) ;
26
+ expect ( ( ) => checkDependencies ( tmpDir ) ) . toThrow ( ) ;
27
+ } ) ;
28
+
29
+ it ( "does not throw when project initialized" , ( ) => {
30
+ const tmpDir = createTempDir ( ) ;
31
+ bedrock . create ( tmpDir , createTestBedrockYaml ( false ) as IBedrockFile ) ;
32
+ expect ( ( ) => checkDependencies ( tmpDir ) ) . not . toThrow ( ) ;
24
33
} ) ;
25
34
} ) ;
26
35
@@ -31,22 +40,34 @@ describe("test execute function and logic", () => {
31
40
expect ( exitFn ) . toBeCalledTimes ( 1 ) ;
32
41
expect ( exitFn . mock . calls ) . toEqual ( [ [ 1 ] ] ) ;
33
42
} ) ;
43
+
34
44
it ( "test execute function: working path with bedrock.yaml" , async ( ) => {
35
45
const exitFn = jest . fn ( ) ;
36
-
37
46
const tmpDir = createTempDir ( ) ;
38
- createBedrockYaml ( tmpDir , {
39
- rings : {
40
- master : {
41
- isDefault : true
42
- }
43
- } ,
44
- services : { } ,
45
- variableGroups : [ "testvg" ]
46
- } ) ;
47
- await execute ( "ring" , tmpDir , exitFn ) ;
47
+ const bedrockConfig = createTestBedrockYaml ( false ) as IBedrockFile ;
48
+ bedrock . create ( tmpDir , bedrockConfig ) ;
48
49
49
- expect ( exitFn ) . toBeCalledTimes ( 1 ) ;
50
+ // delete the first ring and write out the update
51
+ jest . spyOn ( bedrock , "create" ) ;
52
+ const ringToDelete = Object . keys ( bedrockConfig . rings ) . pop ( ) as string ;
53
+ expect ( ringToDelete ) . toBeDefined ( ) ;
54
+ await execute ( ringToDelete , tmpDir , exitFn ) ;
55
+ expect ( bedrock . create ) . toBeCalledTimes ( 1 ) ;
56
+
57
+ // updateTriggerBranchesForServiceBuildAndUpdatePipeline should be called
58
+ // once per service
59
+ const numberOfServices = Object . keys ( bedrockConfig . services ) . length ;
60
+ const updatedRingList = Object . keys (
61
+ bedrock . removeRing ( bedrockConfig , ringToDelete ) . rings
62
+ ) ;
63
+ expect (
64
+ fileUtils . updateTriggerBranchesForServiceBuildAndUpdatePipeline
65
+ ) . toBeCalledTimes ( numberOfServices ) ;
66
+ for ( const serviceName of Object . keys ( bedrockConfig . services ) ) {
67
+ expect (
68
+ fileUtils . updateTriggerBranchesForServiceBuildAndUpdatePipeline
69
+ ) . toBeCalledWith ( updatedRingList , serviceName ) ;
70
+ }
50
71
expect ( exitFn . mock . calls ) . toEqual ( [ [ 0 ] ] ) ;
51
72
} ) ;
52
73
} ) ;
0 commit comments