Eventually(outputBuffer).Should(test_helpers.Say("Scaling cool-web-app to 22 instances")) Expect(fakeAppExaminer.RunningAppInstancesInfoCallCount()).To(Equal(1)) Expect(fakeAppExaminer.RunningAppInstancesInfoArgsForCall(0)).To(Equal("cool-web-app")) fakeClock.IncrementBySeconds(1) Eventually(outputBuffer).Should(test_helpers.Say(".")) fakeClock.IncrementBySeconds(1) Eventually(outputBuffer).Should(test_helpers.Say(".")) fakeAppExaminer.RunningAppInstancesInfoReturns(22, false, nil) fakeClock.IncrementBySeconds(1) Eventually(doneChan).Should(BeClosed()) Expect(outputBuffer).To(test_helpers.SayNewLine()) Expect(outputBuffer).To(test_helpers.Say(colors.Green("App Scaled Successfully"))) }) Context("when the app does not scale before the timeout elapses", func() { It("alerts the user the app took too long to scale", func() { fakeAppExaminer.RunningAppInstancesInfoReturns(1, false, nil) args := []string{ "cool-web-app", "22", } doneChan := test_helpers.AsyncExecuteCommandWithArgs(scaleCommand, args) Eventually(outputBuffer).Should(test_helpers.Say("Scaling cool-web-app to 22 instances")) Eventually(outputBuffer).Should(test_helpers.SayNewLine())
Expect(fakeAppExaminer.RunningAppInstancesInfoArgsForCall(0)).To(Equal("cool-web-app")) fakeClock.IncrementBySeconds(1) Expect(fakeTailedLogsOutputter.StopOutputtingCallCount()).To(Equal(0)) fakeAppExaminer.RunningAppInstancesInfoReturns(9, false, nil) fakeClock.IncrementBySeconds(1) Expect(doneChan).ShouldNot(BeClosed()) Expect(fakeTailedLogsOutputter.StopOutputtingCallCount()).To(Equal(0)) fakeAppExaminer.RunningAppInstancesInfoReturns(10, false, nil) fakeClock.IncrementBySeconds(1) Eventually(doneChan).Should(BeClosed()) Expect(outputBuffer).To(test_helpers.SayNewLine()) Expect(outputBuffer).To(test_helpers.SayLine(colors.Green("cool-web-app is now running."))) Expect(outputBuffer).To(test_helpers.SayLine("App is reachable at:")) Expect(outputBuffer).To(test_helpers.SayLine(colors.Green("http://cool-web-app.192.168.11.11.xip.io"))) Expect(fakeTailedLogsOutputter.StopOutputtingCallCount()).To(Equal(1)) }) Context("when the app does not start before the timeout elapses", func() { It("alerts the user the app took too long to start", func() { fakeDockerMetadataFetcher.FetchMetadataReturns(&docker_metadata_fetcher.ImageMetadata{}, nil) fakeAppExaminer.RunningAppInstancesInfoReturns(0, false, nil) args := []string{ "cool-web-app", "superfun/app",
}) Describe("SayIncorrectUsage", func() { It("matches", func() { gbytesBuffer.Write([]byte("Incorrect Usage")) Expect(gbytesBuffer).To(test_helpers.SayIncorrectUsage()) }) It("negated match", func() { gbytesBuffer.Write([]byte("say that")) Expect(gbytesBuffer).ToNot(test_helpers.SayIncorrectUsage()) }) }) Describe("SayNewLine", func() { It("match", func() { gbytesBuffer.Write([]byte("\n")) Expect(gbytesBuffer).To(test_helpers.SayNewLine()) }) It("negated match", func() { gbytesBuffer.Write([]byte("say that")) Expect(gbytesBuffer).ToNot(test_helpers.SayNewLine()) }) }) })