Sha256: f05c50a174c0ef91246ca6d810c0cbc004bce99786e2f3b2083aea0581c9219b

Contents?: true

Size: 1.51 KB

Versions: 2

Compression:

Stored size: 1.51 KB

Contents

require "spec_helper"

describe Decidim::Admin::CreateParticipatoryProcessAdmin do
  let(:my_process) { create :participatory_process }
  let!(:email) { "my_email@example.org" }
  let!(:user) { create :user, email: "my_email@example.org", organization: my_process.organization }
  let(:form) do
    double(
      :invalid? => invalid,
      email: email
    )
  end
  let(:invalid) { false }

  subject { described_class.new(form, my_process) }

  context "when to form is not valid" do
    let(:invalid) { true }

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

  context "when there is no user with the given email" do
    let(:email) { "does_not_exist@example.com" }

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

  context "when a user and a role already exist" do
    before do
      create(
        :participatory_process_user_role,
        user: user,
        role: :admin,
        participatory_process: my_process
      )
    end

    it "is not valid" do
      form_errors = double
      expect(form_errors).to receive(:add).with(:email, :taken)
      expect(form).to receive(:errors).and_return(form_errors)

      expect { subject.call }.to broadcast(:invalid)
    end
  end

  context "when everything is ok" do
    it "creates the user role" do
      subject.call
      roles = Decidim::Admin::ParticipatoryProcessUserRole.where(user: user)

      expect(roles.count).to eq 1
      expect(roles.first.role).to eq "admin"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
decidim-0.0.5 decidim-admin/spec/commands/create_participatory_process_admin_spec.rb
decidim-0.0.4 decidim-admin/spec/commands/create_participatory_process_admin_spec.rb