github.com/loafoe/cli@v7.1.0+incompatible/command/v7/space_quota_command_test.go (about)

     1  package v7_test
     2  
     3  import (
     4  	"code.cloudfoundry.org/cli/actor/actionerror"
     5  	"code.cloudfoundry.org/cli/actor/v7action"
     6  	"code.cloudfoundry.org/cli/command/commandfakes"
     7  	. "code.cloudfoundry.org/cli/command/v7"
     8  	"code.cloudfoundry.org/cli/command/v7/v7fakes"
     9  	"code.cloudfoundry.org/cli/resources"
    10  	"code.cloudfoundry.org/cli/types"
    11  	"code.cloudfoundry.org/cli/util/configv3"
    12  	"code.cloudfoundry.org/cli/util/ui"
    13  	. "github.com/onsi/ginkgo"
    14  	. "github.com/onsi/gomega"
    15  	. "github.com/onsi/gomega/gbytes"
    16  )
    17  
    18  var _ = Describe("Space Quota Command", func() {
    19  	var (
    20  		cmd             SpaceQuotaCommand
    21  		testUI          *ui.UI
    22  		fakeConfig      *commandfakes.FakeConfig
    23  		fakeSharedActor *commandfakes.FakeSharedActor
    24  		fakeActor       *v7fakes.FakeActor
    25  		executeErr      error
    26  	)
    27  
    28  	BeforeEach(func() {
    29  		testUI = ui.NewTestUI(nil, NewBuffer(), NewBuffer())
    30  		fakeConfig = new(commandfakes.FakeConfig)
    31  		fakeSharedActor = new(commandfakes.FakeSharedActor)
    32  		fakeActor = new(v7fakes.FakeActor)
    33  		fakeConfig.TargetedOrganizationNameReturns("some-org")
    34  
    35  		cmd = SpaceQuotaCommand{
    36  			BaseCommand: BaseCommand{
    37  				UI:          testUI,
    38  				Config:      fakeConfig,
    39  				SharedActor: fakeSharedActor,
    40  				Actor:       fakeActor,
    41  			},
    42  		}
    43  
    44  		cmd.RequiredArgs.SpaceQuota = "some-space-quota"
    45  	})
    46  
    47  	JustBeforeEach(func() {
    48  		executeErr = cmd.Execute(nil)
    49  	})
    50  
    51  	When("checking the target fails", func() {
    52  		BeforeEach(func() {
    53  			fakeSharedActor.CheckTargetReturns(
    54  				actionerror.NotLoggedInError{BinaryName: "binaryName"})
    55  		})
    56  
    57  		It("returns an error", func() {
    58  			Expect(executeErr).To(MatchError(actionerror.NotLoggedInError{BinaryName: "binaryName"}))
    59  
    60  			Expect(fakeSharedActor.CheckTargetCallCount()).To(Equal(1))
    61  			targetedOrganizationRequired, targetedSpaceRequired := fakeSharedActor.CheckTargetArgsForCall(0)
    62  			Expect(targetedOrganizationRequired).To(Equal(true))
    63  			Expect(targetedSpaceRequired).To(Equal(false))
    64  		})
    65  	})
    66  
    67  	When("getting the space quota fails", func() {
    68  		BeforeEach(func() {
    69  			fakeConfig.CurrentUserReturns(
    70  				configv3.User{
    71  					Name: "some-user",
    72  				},
    73  				nil)
    74  
    75  			fakeActor.GetSpaceQuotaByNameReturns(
    76  				resources.SpaceQuota{},
    77  				v7action.Warnings{"warning-1", "warning-2"},
    78  				actionerror.SpaceQuotaNotFoundError{})
    79  		})
    80  
    81  		It("returns a translatable error and outputs all warnings", func() {
    82  			Expect(testUI.Out).To(Say("Getting space quota some-space-quota for org some-org as some-user..."))
    83  
    84  			Expect(executeErr).To(MatchError(actionerror.SpaceQuotaNotFoundError{}))
    85  			Expect(fakeActor.GetSpaceQuotaByNameCallCount()).To(Equal(1))
    86  			Expect(testUI.Err).To(Say("warning-1"))
    87  			Expect(testUI.Err).To(Say("warning-2"))
    88  		})
    89  	})
    90  
    91  	When("getting the space quota succeeds", func() {
    92  		BeforeEach(func() {
    93  			fakeConfig.CurrentUserReturns(configv3.User{Name: "some-user"}, nil)
    94  			fakeConfig.TargetedOrganizationReturns(configv3.Organization{Name: "some-org", GUID: "some-org-guid"})
    95  
    96  			falseValue := false
    97  			fakeActor.GetSpaceQuotaByNameReturns(
    98  				resources.SpaceQuota{
    99  					Quota: resources.Quota{
   100  						Name: "some-space-quota",
   101  						Apps: resources.AppLimit{
   102  							TotalMemory:       &types.NullInt{IsSet: true, Value: 2048},
   103  							InstanceMemory:    &types.NullInt{IsSet: true, Value: 1024},
   104  							TotalAppInstances: &types.NullInt{IsSet: true, Value: 2},
   105  						},
   106  						Services: resources.ServiceLimit{
   107  							TotalServiceInstances: &types.NullInt{IsSet: false},
   108  							PaidServicePlans:      &falseValue,
   109  						},
   110  						Routes: resources.RouteLimit{
   111  							TotalRoutes:        &types.NullInt{IsSet: true, Value: 4},
   112  							TotalReservedPorts: &types.NullInt{IsSet: false},
   113  						},
   114  					},
   115  				},
   116  				v7action.Warnings{"warning-1", "warning-2"},
   117  				nil)
   118  		})
   119  
   120  		It("displays the quota and all warnings", func() {
   121  			Expect(executeErr).ToNot(HaveOccurred())
   122  			Expect(fakeActor.GetSpaceQuotaByNameCallCount()).To(Equal(1))
   123  			quotaName, orgGUID := fakeActor.GetSpaceQuotaByNameArgsForCall(0)
   124  			Expect(quotaName).To(Equal("some-space-quota"))
   125  			Expect(orgGUID).To(Equal("some-org-guid"))
   126  
   127  			Expect(testUI.Out).To(Say("Getting space quota some-space-quota for org some-org as some-user..."))
   128  			Expect(testUI.Err).To(Say("warning-1"))
   129  			Expect(testUI.Err).To(Say("warning-2"))
   130  
   131  			Expect(testUI.Out).To(Say(`total memory:\s+2G`))
   132  			Expect(testUI.Out).To(Say(`instance memory:\s+1G`))
   133  			Expect(testUI.Out).To(Say(`routes:\s+4`))
   134  			Expect(testUI.Out).To(Say(`service instances:\s+unlimited`))
   135  			Expect(testUI.Out).To(Say(`paid service plans:\s+disallowed`))
   136  			Expect(testUI.Out).To(Say(`app instances:\s+2`))
   137  			Expect(testUI.Out).To(Say(`route ports:\s+unlimited`))
   138  		})
   139  	})
   140  })