@@ -4,11 +4,14 @@ import (
44 "io/ioutil"
55 "log"
66 "os"
7+ "path/filepath"
78 "testing"
89
910 "github.com/commitdev/zero/internal/config/projectconfig"
11+ "github.com/commitdev/zero/internal/constants"
1012 "github.com/google/go-cmp/cmp"
1113 "github.com/google/go-cmp/cmp/cmpopts"
14+ "github.com/stretchr/testify/assert"
1215)
1316
1417func TestLoadConfig (t * testing.T ) {
@@ -37,9 +40,9 @@ func TestLoadConfig(t *testing.T) {
3740func eksGoReactSampleModules () projectconfig.Modules {
3841 parameters := projectconfig.Parameters {"a" : "b" }
3942 return projectconfig.Modules {
40- "aws-eks-stack" : projectconfig .NewModule (parameters , "zero-aws-eks-stack" , "github.com/something/repo1" , "github.com/commitdev/zero-aws-eks-stack" ),
41- "deployable-backend" : projectconfig .NewModule (parameters , "zero-deployable-backend" , "github.com/something/repo2" , "github.com/commitdev/zero-deployable-backend" ),
42- "deployable-react-frontend" : projectconfig .NewModule (parameters , "zero-deployable-react-frontend" , "github.com/something/repo3" , "github.com/commitdev/zero-deployable-react-frontend" ),
43+ "aws-eks-stack" : projectconfig .NewModule (parameters , "zero-aws-eks-stack" , "github.com/something/repo1" , "github.com/commitdev/zero-aws-eks-stack" , [] string {} ),
44+ "deployable-backend" : projectconfig .NewModule (parameters , "zero-deployable-backend" , "github.com/something/repo2" , "github.com/commitdev/zero-deployable-backend" , [] string {} ),
45+ "deployable-react-frontend" : projectconfig .NewModule (parameters , "zero-deployable-react-frontend" , "github.com/something/repo3" , "github.com/commitdev/zero-deployable-react-frontend" , [] string {} ),
4346 }
4447}
4548
@@ -74,3 +77,37 @@ modules:
7477 source: github.com/commitdev/zero-deployable-react-frontend
7578`
7679}
80+
81+ func TestProjectConfigModuleGraph (t * testing.T ) {
82+ configPath := filepath .Join ("../../../tests/test_data/projectconfig/" , constants .ZeroProjectYml )
83+
84+ t .Run ("Should generate a valid, correct graph based on the project config" , func (t * testing.T ) {
85+ pc := projectconfig .LoadConfig (configPath )
86+ graph := pc .GetDAG ()
87+
88+ // Validate the graph
89+ assert .NoError (t , graph .Validate ())
90+
91+ // Check the structure of the graph
92+ root , err := graph .Root ()
93+ assert .NoError (t , err )
94+ assert .Equal (t , "graphRoot" , root )
95+
96+ want := `graphRoot
97+ project1
98+ project1
99+ project2
100+ project3
101+ project2
102+ project4
103+ project3
104+ project4
105+ project5
106+ project4
107+ project5
108+ `
109+ assert .Equal (t , want , graph .String ())
110+
111+ })
112+
113+ }
0 commit comments