Test available assignees endpoint for API v3

pull/1656/head
Hagen Schink 10 years ago
parent adbbbf1676
commit 73f256d91f
  1. 96
      spec/requests/work_packages_api_spec.rb

@ -30,8 +30,9 @@ require 'spec_helper'
require 'rack/test' require 'rack/test'
describe API::V3::WorkPackages::WorkPackagesAPI do describe API::V3::WorkPackages::WorkPackagesAPI do
let(:admin) { FactoryGirl.create(:admin) }
describe "activities" do describe "activities" do
let(:admin) { FactoryGirl.create(:admin) }
let(:work_package) { FactoryGirl.create(:work_package) } let(:work_package) { FactoryGirl.create(:work_package) }
let(:comment) { "This is a test comment!" } let(:comment) { "This is a test comment!" }
@ -58,4 +59,97 @@ describe API::V3::WorkPackages::WorkPackagesAPI do
end end
end end
end end
describe "available assignees" do
let(:work_package) { FactoryGirl.build_stubbed(:work_package) }
before { allow(WorkPackage).to receive(:find).and_return(work_package) }
shared_context "request available assignees" do
before { get "/api/v3/work_packages/#{work_package.id}/available_assignees" }
end
it_behaves_like "safeguarded API" do
include_context "request available assignees"
end
describe "response" do
before { allow(User).to receive(:current).and_return(admin) }
shared_examples_for "returns available assignees" do
include_context "request available assignees"
subject { JSON.parse(response.body) }
it { expect(subject).to have_key("_embedded") }
it { expect(subject["_embedded"]).to have_key("availableAssignees") }
it { expect(subject["_embedded"]["availableAssignees"].count).to eq(available_assignee_count) }
end
describe "users" do
let(:user) { FactoryGirl.build_stubbed(:user) }
let(:user2) { FactoryGirl.build_stubbed(:user) }
context "single user" do
before do
allow(work_package.project).to receive(:possible_assignees).and_return([user])
allow(user).to receive(:created_on).and_return(user.created_at)
allow(user).to receive(:updated_on).and_return(user.created_at)
end
it_behaves_like "returns available assignees" do
let(:available_assignee_count) { 1 }
end
end
context "multiple users" do
before do
allow(work_package.project).to receive(:possible_assignees).and_return([user, user2])
allow(user).to receive(:created_on).and_return(user.created_at)
allow(user).to receive(:updated_on).and_return(user.created_at)
allow(user2).to receive(:created_on).and_return(user.created_at)
allow(user2).to receive(:updated_on).and_return(user.created_at)
end
it_behaves_like "returns available assignees" do
let(:available_assignee_count) { 2 }
end
end
end
describe "groups" do
let(:group) { FactoryGirl.create(:group) }
let(:work_package) { FactoryGirl.create(:work_package) }
before { allow(WorkPackage).to receive(:find).and_return(work_package) }
context "with work_package_group_assignment" do
before do
allow(Setting).to receive(:work_package_group_assignment?).and_return(true)
work_package.project.add_member! group, FactoryGirl.create(:role)
end
it_behaves_like "returns available assignees" do
let(:available_assignee_count) { 1 }
end
end
context "without work_package_group_assignment" do
before do
allow(Setting).to receive(:work_package_group_assignment?).and_return(false)
work_package.project.add_member! group, FactoryGirl.create(:role)
end
it_behaves_like "returns available assignees" do
let(:available_assignee_count) { 0 }
end
end
end
end
end
end end

Loading…
Cancel
Save