Sha256: bec3f0933a24fce72922f9e88f43a59c071dcaa538e733875f02ea3bae9ea2fa

Contents?: true

Size: 1.24 KB

Versions: 1

Compression:

Stored size: 1.24 KB

Contents

# frozen_string_literal: true
require "spec_helper"

describe Decidim::Budgets::Checkout do
  let(:user) { create(:user) }
  let(:feature) do
    create(
      :budget_feature,
      :with_total_budget_and_vote_threshold_percent,
      organization: user.organization
    )
  end

  let(:project) { create(:project, feature: feature, budget: 90_000_000) }

  let(:order) do
    order = create(:order, user: user, feature: feature)
    order.projects << project
    order.save!
    order
  end

  let(:current_order) { order }

  subject { described_class.new(current_order, feature) }

  context "when everything is ok" do
    it "broadcasts ok" do
      expect { subject.call }.to broadcast(:ok)
    end

    it "sets the checked out at" do
      subject.call
      order.reload
      expect(order.checked_out_at).not_to be_nil
    end
  end

  context "when the order is not present" do
    let(:current_order) { nil }

    it "broadcasts invalid" do
      expect { subject.call }.to broadcast(:invalid)
    end
  end

  context "when the order total budget doesn't exceed the threshold" do
    let(:project) { create(:project, feature: feature, budget: 30_000_000) }

    it "broadcasts invalid" do
      expect { subject.call }.to broadcast(:invalid)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
decidim-0.1.0 decidim-budgets/spec/commands/checkout_spec.rb