@@ -24,38 +24,28 @@ import (
2424 "github.com/funlessdev/fl-cli/test/mocks"
2525 "github.com/stretchr/testify/assert"
2626 "github.com/stretchr/testify/mock"
27+ "github.com/stretchr/testify/require"
2728)
2829
2930func TestRun (t * testing.T ) {
3031 dev := dev {}
3132 ctx := context .TODO ()
3233
33- var outbuf bytes.Buffer
34- testLogger , _ := log .NewLoggerBuilder ().WithWriter (& outbuf ).DisableAnimation ().Build ()
35-
3634 deployer := mocks .NewDevDeployer (t )
3735
38- t .Run ("print error when setup client fails" , func (t * testing.T ) {
36+ t .Run ("should return error when setup client fails" , func (t * testing.T ) {
3937 deployer .On ("Setup" , ctx , mock .Anything , mock .Anything ).Return (
4038 func (ctx context.Context , coreImg string , workerImg string ) error {
4139 return errors .New ("error" )
4240 },
4341 ).Once ()
4442
45- _ = dev .Run (ctx , deployer , testLogger )
46-
47- expectedOutput := []string {
48- "Deploying funless locally...\n " ,
49- "\n " ,
50- "Setting things up...\n " ,
51- "failed\n " ,
52- "" ,
53- }
54-
55- assertOutput (t , expectedOutput , & outbuf )
43+ _ , testLogger := testLogger ()
44+ err := dev .Run (ctx , deployer , testLogger )
45+ require .Error (t , err )
5646 })
5747
58- t .Run ("print error when docker networks setup fails" , func (t * testing.T ) {
48+ t .Run ("should return error when docker networks setup fails" , func (t * testing.T ) {
5949 deployer .On ("Setup" , ctx , mock .Anything , mock .Anything ).Return (
6050 func (ctx context.Context , coreImg string , workerImg string ) error {
6151 return nil
@@ -65,158 +55,128 @@ func TestRun(t *testing.T) {
6555 return errors .New ("error" )
6656 }).Once ()
6757
68- _ = dev .Run (ctx , deployer , testLogger )
69-
70- expectedOutput := []string {
71- "Deploying funless locally...\n " ,
72- "\n " ,
73- "Setting things up...\n " ,
74- "failed\n " ,
75- "" ,
76- }
58+ _ , testLogger := testLogger ()
59+ err := dev .Run (ctx , deployer , testLogger )
60+ require .Error (t , err )
7761
78- assertOutput (t , expectedOutput , & outbuf )
7962 })
8063
81- t .Run ("print error when pulling core image fails" , func (t * testing.T ) {
64+ t .Run ("should return error when pulling core image fails" , func (t * testing.T ) {
8265 deployer .On ("CreateFLNetwork" , ctx ).Return (func (ctx context.Context ) error {
8366 return nil
8467 })
8568 deployer .On ("PullCoreImage" , ctx ).Return (func (ctx context.Context ) error {
8669 return errors .New ("error" )
8770 }).Once ()
8871
89- _ = dev .Run (ctx , deployer , testLogger )
90-
91- expectedOutput := []string {
92- "Deploying funless locally...\n " ,
93- "\n " ,
94- "Setting things up...\n " ,
95- "done\n " ,
96- "pulling Core image () 📦\n " ,
97- "failed\n " ,
98- "" ,
99- }
72+ _ , testLogger := testLogger ()
73+ err := dev .Run (ctx , deployer , testLogger )
10074
101- assertOutput (t , expectedOutput , & outbuf )
75+ require . Error (t , err )
10276 })
10377
104- t .Run ("print error when pulling worker image fails" , func (t * testing.T ) {
78+ t .Run ("should return error when pulling worker image fails" , func (t * testing.T ) {
10579 deployer .On ("PullCoreImage" , ctx ).Return (func (ctx context.Context ) error {
10680 return nil
10781 })
10882 deployer .On ("PullWorkerImage" , ctx ).Return (func (ctx context.Context ) error {
10983 return errors .New ("error" )
11084 }).Once ()
11185
112- _ = dev .Run (ctx , deployer , testLogger )
113-
114- expectedOutput := []string {
115- "Deploying funless locally...\n " ,
116- "\n " ,
117- "Setting things up...\n " ,
118- "done\n " ,
119- "pulling Core image () 📦\n " ,
120- "done\n " ,
121- "pulling Worker image () 🗃\n " ,
122- "failed\n " ,
123- "" ,
124- }
125-
126- assertOutput (t , expectedOutput , & outbuf )
86+ _ , testLogger := testLogger ()
87+ err := dev .Run (ctx , deployer , testLogger )
88+ require .Error (t , err )
89+
12790 })
12891
129- t .Run ("print error when starting core fails" , func (t * testing.T ) {
92+ t .Run ("should return error when pulling prometheus image fails" , func (t * testing.T ) {
13093 deployer .On ("PullWorkerImage" , ctx ).Return (func (ctx context.Context ) error {
13194 return nil
13295 })
96+ deployer .On ("PullPromImage" , ctx ).Return (func (ctx context.Context ) error {
97+ return errors .New ("error" )
98+ }).Once ()
99+
100+ _ , testLogger := testLogger ()
101+ err := dev .Run (ctx , deployer , testLogger )
102+ require .Error (t , err )
103+ })
104+
105+ t .Run ("should return error when starting core fails" , func (t * testing.T ) {
106+ deployer .On ("PullPromImage" , ctx ).Return (func (ctx context.Context ) error {
107+ return nil
108+ })
133109 deployer .On ("StartCore" , ctx ).Return (func (ctx context.Context ) error {
134110 return errors .New ("error" )
135111 }).Once ()
136112
137- _ = dev .Run (ctx , deployer , testLogger )
138-
139- expectedOutput := []string {
140- "Deploying funless locally...\n " ,
141- "\n " ,
142- "Setting things up...\n " ,
143- "done\n " ,
144- "pulling Core image () 📦\n " ,
145- "done\n " ,
146- "pulling Worker image () 🗃\n " ,
147- "done\n " ,
148- "starting Core container 🎛️\n " ,
149- "failed\n " ,
150- "" ,
151- }
152-
153- assertOutput (t , expectedOutput , & outbuf )
113+ _ , testLogger := testLogger ()
114+ err := dev .Run (ctx , deployer , testLogger )
115+ require .Error (t , err )
154116 })
155117
156- t .Run ("print error when starting worker fails" , func (t * testing.T ) {
118+ t .Run ("should return error when starting worker fails" , func (t * testing.T ) {
157119 deployer .On ("StartCore" , ctx ).Return (func (ctx context.Context ) error {
158120 return nil
159121 })
160122 deployer .On ("StartWorker" , ctx ).Return (func (ctx context.Context ) error {
161123 return errors .New ("error" )
162124 }).Once ()
163125
164- _ = dev .Run (ctx , deployer , testLogger )
165-
166- expectedOutput := []string {
167- "Deploying funless locally...\n " ,
168- "\n " ,
169- "Setting things up...\n " ,
170- "done\n " ,
171- "pulling Core image () 📦\n " ,
172- "done\n " ,
173- "pulling Worker image () 🗃\n " ,
174- "done\n " ,
175- "starting Core container 🎛️\n " ,
176- "done\n " ,
177- "starting Worker container 👷\n " ,
178- "failed\n " ,
179- "" ,
180- }
181-
182- assertOutput (t , expectedOutput , & outbuf )
126+ _ , testLogger := testLogger ()
127+ err := dev .Run (ctx , deployer , testLogger )
128+ require .Error (t , err )
183129 })
184-
185- t .Run ("successful prints when everything goes well" , func (t * testing.T ) {
130+ t .Run ("should return error when starting prometheus fails" , func (t * testing.T ) {
186131 deployer .On ("StartWorker" , ctx ).Return (func (ctx context.Context ) error {
187132 return nil
188133 })
134+ deployer .On ("StartProm" , ctx ).Return (func (ctx context.Context ) error {
135+ return errors .New ("error" )
136+ }).Once ()
189137
190- _ = dev .Run (ctx , deployer , testLogger )
191-
192- expectedOutput := []string {
193- "Deploying funless locally...\n " ,
194- "\n " ,
195- "Setting things up...\n " ,
196- "done\n " ,
197- "pulling Core image () 📦\n " ,
198- "done\n " ,
199- "pulling Worker image () 🗃\n " ,
200- "done\n " ,
201- "starting Core container 🎛️\n " ,
202- "done\n " ,
203- "starting Worker container 👷\n " ,
204- "done\n " ,
205- "\n " ,
206- "Deployment complete!\n " ,
207- "You can now start using Funless! 🎉\n " ,
208- "" ,
209- }
210-
211- assertOutput (t , expectedOutput , & outbuf )
138+ _ , testLogger := testLogger ()
139+ err := dev .Run (ctx , deployer , testLogger )
140+ require .Error (t , err )
212141 })
142+ t .Run ("successful prints when everything goes well" , func (t * testing.T ) {
143+ deployer .On ("StartProm" , ctx ).Return (func (ctx context.Context ) error {
144+ return nil
145+ })
146+
147+ outbuf , testLogger := testLogger ()
148+
149+ err := dev .Run (ctx , deployer , testLogger )
150+ require .NoError (t , err )
151+
152+ expectedOutput := `Deploying FunLess locally...
153+
154+ Setting things up...
155+ done
156+ pulling Core image () 🐋
157+ done
158+ pulling Worker image () 🐋
159+ done
160+ pulling Prometheus image () 🐋
161+ done
162+ starting Core container 🎛️
163+ done
164+ starting Worker container 👷
165+ done
166+ starting Prometheus container 📊
167+ done
168+
169+ Deployment complete!
170+ You can now start using FunLess! 🎉
171+ `
172+ assert .NoError (t , err )
173+ assert .Equal (t , expectedOutput , outbuf .String ())
213174
175+ })
214176}
215177
216- func assertOutput (t * testing.T , expected []string , outbuf * bytes.Buffer ) {
217- t .Helper ()
218- for _ , expected := range expected {
219- line , _ := outbuf .ReadString ('\n' )
220- assert .Equal (t , expected , line )
221- }
178+ func testLogger () (* bytes.Buffer , log.FLogger ) {
179+ var outbuf bytes.Buffer
180+ testLogger , _ := log .NewLoggerBuilder ().WithWriter (& outbuf ).DisableAnimation ().Build ()
181+ return & outbuf , testLogger
222182}
0 commit comments