-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathcf_buildpacks_usage_cmd_test.go
67 lines (56 loc) · 3.25 KB
/
cf_buildpacks_usage_cmd_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main_test
import (
"github.com/cloudfoundry/cli/plugin/fakes"
io_helpers "github.com/cloudfoundry/cli/testhelpers/io"
. "github.com/csterwa/cf_buildpacks_usage_cmd"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Cloud Foundry Buildpack Usage Command", func() {
Describe(".Run", func() {
var fakeCliConnection *fakes.FakeCliConnection
var callBuildpackUsageCommandPlugin *CliBuildpackUsage
BeforeEach(func() {
fakeCliConnection = &fakes.FakeCliConnection{}
callBuildpackUsageCommandPlugin = &CliBuildpackUsage{}
})
It("calls the buildpack-usage command with no arguments", func() {
fakeAppsResponse := []string{"{\"total_pages\":1,\"total_results\":2,\"resources\":[{\"entity\":{\"name\":\"app1\",\"buildpack\":null,\"detected_buildpack\":\"Node.js\"}},{\"entity\":{\"name\":\"app2\",\"buildpack\":\"Java\",\"detected_buildpack\":null}}]}"}
fakeCliConnection.CliCommandWithoutTerminalOutputReturns(fakeAppsResponse, nil)
output := io_helpers.CaptureOutput(func() {
callBuildpackUsageCommandPlugin.Run(fakeCliConnection, []string{"buildpack-usage"})
})
Expect(output[1]).To(Equal("2 buildpacks found across 2 app deployments"))
Expect(output[3]).To(Equal("Buildpacks Used"))
Expect(output[5]).To(Equal("Count\tName"))
Expect(output[7]).To(ContainSubstring("Java"))
Expect(output[8]).To(ContainSubstring("Node.js"))
})
It("removes duplicates from buildpacks used list", func() {
fakeAppsResponse := []string{"{\"total_pages\":1,\"total_results\":2,\"resources\":[{\"entity\":{\"name\":\"app1\",\"buildpack\":null,\"detected_buildpack\":\"Java\"}},{\"entity\":{\"name\":\"app2\",\"buildpack\":\"Java\",\"detected_buildpack\":null}}]}"}
fakeCliConnection.CliCommandWithoutTerminalOutputReturns(fakeAppsResponse, nil)
output := io_helpers.CaptureOutput(func() {
callBuildpackUsageCommandPlugin.Run(fakeCliConnection, []string{"buildpack-usage"})
})
Expect(output[1]).To(Equal("1 buildpacks found across 2 app deployments"))
Expect(output[3]).To(Equal("Buildpacks Used"))
Expect(output[7]).To(ContainSubstring("Java"))
})
It("counts the amount of each buildpack used", func() {
fakeAppsResponse := []string{"{\"total_pages\":1,\"total_results\":2,\"resources\":[{\"entity\":{\"name\":\"app1\",\"buildpack\":null,\"detected_buildpack\":\"Java\"}},{\"entity\":{\"name\":\"app2\",\"buildpack\":\"Java\",\"detected_buildpack\":null}}]}"}
fakeCliConnection.CliCommandWithoutTerminalOutputReturns(fakeAppsResponse, nil)
output := io_helpers.CaptureOutput(func() {
callBuildpackUsageCommandPlugin.Run(fakeCliConnection, []string{"buildpack-usage"})
})
Expect(output[7]).To(Equal("2\tJava"))
})
It("pages through all app data to combine results", func() {
fakeAppsResponse := []string{"{\"total_pages\":2,\"total_results\":2,\"resources\":[{\"entity\":{\"name\":\"app1\",\"buildpack\":null,\"detected_buildpack\":\"Java\"}},{\"entity\":{\"name\":\"app2\",\"buildpack\":\"Java\",\"detected_buildpack\":null}}]}"}
fakeCliConnection.CliCommandWithoutTerminalOutputReturns(fakeAppsResponse, nil)
output := io_helpers.CaptureOutput(func() {
callBuildpackUsageCommandPlugin.Run(fakeCliConnection, []string{"buildpack-usage"})
})
Expect(output[7]).To(Equal("4\tJava"))
})
})
})