|
| 1 | +require 'spec_helper' |
| 2 | +require 'presenters/v3/space_usage_summary_presenter' |
| 3 | + |
| 4 | +module VCAP::CloudController::Presenters::V3 |
| 5 | + RSpec.describe SpaceUsageSummaryPresenter do |
| 6 | + let(:org) { VCAP::CloudController::Organization.make } |
| 7 | + let(:space) { VCAP::CloudController::Space.make(organization: org) } |
| 8 | + |
| 9 | + context 'empty space' do |
| 10 | + describe '#to_hash' do |
| 11 | + let(:result) { SpaceUsageSummaryPresenter.new(space).to_hash } |
| 12 | + |
| 13 | + it 'presents the space usage summary as json' do |
| 14 | + expect(result[:usage_summary][:started_instances]).to eq(0) |
| 15 | + expect(result[:usage_summary][:memory_in_mb]).to eq(0) |
| 16 | + expect(result[:usage_summary][:routes]).to eq(0) |
| 17 | + expect(result[:usage_summary][:service_instances]).to eq(0) |
| 18 | + expect(result[:usage_summary][:reserved_ports]).to eq(0) |
| 19 | + expect(result[:usage_summary][:domains]).to eq(0) |
| 20 | + expect(result[:usage_summary][:per_app_tasks]).to eq(0) |
| 21 | + expect(result[:usage_summary][:service_keys]).to eq(0) |
| 22 | + |
| 23 | + expect(result[:links][:self][:href]).to match(%r{/v3/spaces/#{space.guid}/usage_summary$}) |
| 24 | + expect(result[:links][:space][:href]).to match(%r{/v3/spaces/#{space.guid}$}) |
| 25 | + end |
| 26 | + end |
| 27 | + end |
| 28 | + |
| 29 | + context 'space with instances, routes and services' do |
| 30 | + before do |
| 31 | + router_group = double('router_group', type: 'tcp', reservable_ports: [4444]) |
| 32 | + routing_api_client = double('routing_api_client', router_group: router_group, enabled?: true) |
| 33 | + allow(CloudController::DependencyLocator).to receive(:instance).and_return(double(:api_client, routing_api_client:)) |
| 34 | + end |
| 35 | + |
| 36 | + let(:app_model) { VCAP::CloudController::AppModel.make(name: 'App Model', space: space) } |
| 37 | + let!(:process) { VCAP::CloudController::ProcessModel.make(:process, state: VCAP::CloudController::ProcessModel::STARTED, memory: 512, app: app_model) } |
| 38 | + let!(:task) { VCAP::CloudController::TaskModel.make(app: app_model, state: VCAP::CloudController::TaskModel::RUNNING_STATE, memory_in_mb: 512) } |
| 39 | + let(:shared_domain) { VCAP::CloudController::SharedDomain.make(router_group_guid: '123') } |
| 40 | + let!(:private_domain) { VCAP::CloudController::PrivateDomain.make(owning_organization: org) } |
| 41 | + let!(:route) { VCAP::CloudController::Route.make(host: '', domain: shared_domain, space: space, port: 4444) } |
| 42 | + let(:broker) { VCAP::CloudController::ServiceBroker.make } |
| 43 | + let(:service) { VCAP::CloudController::Service.make(service_broker: broker) } |
| 44 | + let(:service_plan) { VCAP::CloudController::ServicePlan.make(service: service, public: true) } |
| 45 | + let(:service_instance) { VCAP::CloudController::ManagedServiceInstance.make(space:, service_plan:) } |
| 46 | + let!(:service_key) { VCAP::CloudController::ServiceKey.make(service_instance:) } |
| 47 | + |
| 48 | + describe '#to_hash' do |
| 49 | + let(:result) { SpaceUsageSummaryPresenter.new(space).to_hash } |
| 50 | + |
| 51 | + it 'presents the space usage summary as json' do |
| 52 | + expect(result[:usage_summary][:started_instances]).to eq(1) |
| 53 | + expect(result[:usage_summary][:memory_in_mb]).to eq(1024) |
| 54 | + expect(result[:usage_summary][:routes]).to eq(1) |
| 55 | + expect(result[:usage_summary][:service_instances]).to eq(1) |
| 56 | + expect(result[:usage_summary][:reserved_ports]).to eq(1) |
| 57 | + expect(result[:usage_summary][:domains]).to eq(1) |
| 58 | + expect(result[:usage_summary][:per_app_tasks]).to eq(1) |
| 59 | + expect(result[:usage_summary][:service_keys]).to eq(1) |
| 60 | + |
| 61 | + expect(result[:links][:self][:href]).to match(%r{/v3/spaces/#{space.guid}/usage_summary$}) |
| 62 | + expect(result[:links][:space][:href]).to match(%r{/v3/spaces/#{space.guid}$}) |
| 63 | + end |
| 64 | + end |
| 65 | + end |
| 66 | + end |
| 67 | +end |
0 commit comments