|
|
|
@ -30,8 +30,9 @@ require 'spec_helper' |
|
|
|
|
require 'rack/test' |
|
|
|
|
|
|
|
|
|
describe API::V3::WorkPackages::WorkPackagesAPI do |
|
|
|
|
let(:admin) { FactoryGirl.create(:admin) } |
|
|
|
|
|
|
|
|
|
describe "activities" do |
|
|
|
|
let(:admin) { FactoryGirl.create(:admin) } |
|
|
|
|
let(:work_package) { FactoryGirl.create(:work_package) } |
|
|
|
|
let(:comment) { "This is a test comment!" } |
|
|
|
|
|
|
|
|
@ -58,4 +59,97 @@ describe API::V3::WorkPackages::WorkPackagesAPI do |
|
|
|
|
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 |
|
|
|
|