commit
e539cfe2a3
@ -0,0 +1,13 @@ |
||||
Factory.define(:cost_query) do |cq| |
||||
cq.association :user, :factory => :user |
||||
cq.association :project, :factory => :project |
||||
cq.sequence(:name) { |n| "Cost Query #{n}" } |
||||
end |
||||
|
||||
Factory.define(:private_cost_query, :parent => :cost_query) do |cq| |
||||
cq.is_public false |
||||
end |
||||
|
||||
Factory.define(:public_cost_query, :parent => :cost_query) do |cq| |
||||
cq.is_public true |
||||
end |
@ -0,0 +1,88 @@ |
||||
require File.dirname(__FILE__) + '/../../spec_helper' |
||||
|
||||
describe User, "#destroy" do |
||||
let(:substitute_user) { DeletedUser.first } |
||||
let(:private_query) { Factory.create(:private_cost_query) } |
||||
let(:public_query) { Factory.create(:public_cost_query) } |
||||
let(:user) { Factory.create(:user) } |
||||
let(:user2) { Factory.create(:user) } |
||||
|
||||
describe "WHEN the user has saved private cost queries" do |
||||
|
||||
before do |
||||
private_query.user.destroy |
||||
end |
||||
|
||||
it { CostQuery.find_by_id(private_query.id).should == nil } |
||||
end |
||||
|
||||
describe "WHEN the user has saved public cost queries" do |
||||
before do |
||||
public_query.user.destroy |
||||
end |
||||
|
||||
it { CostQuery.find_by_id(public_query.id).should == public_query } |
||||
it { public_query.reload.user_id.should == substitute_user.id } |
||||
end |
||||
|
||||
shared_examples_for "public query" do |
||||
let(:filter_symbol) { filter.to_s.demodulize.underscore.to_sym } |
||||
|
||||
describe "WHEN the filter has the deleted user as it's value" do |
||||
before do |
||||
public_query.filter(filter_symbol, :values => [user.id.to_s], :operator => "=") |
||||
public_query.save! |
||||
|
||||
user.destroy |
||||
end |
||||
|
||||
it { CostQuery.find_by_id(public_query.id).deserialize.filters.any?{ |f| f.is_a?(filter) }.should be_false } |
||||
end |
||||
|
||||
describe "WHEN the filter has another user as it's value" do |
||||
before do |
||||
public_query.filter(filter_symbol, :values => [user2.id.to_s], :operator => "=") |
||||
public_query.save! |
||||
|
||||
user.destroy |
||||
end |
||||
|
||||
it { CostQuery.find_by_id(public_query.id).deserialize.filters.any?{ |f| f.is_a?(filter) }.should be_true } |
||||
it { CostQuery.find_by_id(public_query.id).deserialize.filters.detect{ |f| f.is_a?(filter) }.values.should == [user2.id.to_s] } |
||||
end |
||||
|
||||
describe "WHEN the filter has the deleted user and another user as it's value" do |
||||
before do |
||||
public_query.filter(filter_symbol, :values => [user.id.to_s, user2.id.to_s], :operator => "=") |
||||
public_query.save! |
||||
|
||||
user.destroy |
||||
end |
||||
|
||||
it { CostQuery.find_by_id(public_query.id).deserialize.filters.any?{ |f| f.is_a?(filter) }.should be_true } |
||||
it { CostQuery.find_by_id(public_query.id).deserialize.filters.detect{ |f| f.is_a?(filter) }.values.should == [user2.id.to_s] } |
||||
end |
||||
end |
||||
|
||||
describe "WHEN someone has saved a public cost query |
||||
WHEN the query has a user_id filter" do |
||||
let(:filter) { CostQuery::Filter::UserId } |
||||
|
||||
it_should_behave_like "public query" |
||||
end |
||||
|
||||
describe "WHEN someone has saved a public cost query |
||||
WHEN the query has a author_id filter" do |
||||
let(:filter) { CostQuery::Filter::AuthorId } |
||||
|
||||
it_should_behave_like "public query" |
||||
end |
||||
|
||||
describe "WHEN someone has saved a public cost query |
||||
WHEN the query has a assigned_to_id filter" do |
||||
let(:filter) { CostQuery::Filter::AssignedToId } |
||||
|
||||
it_should_behave_like "public query" |
||||
end |
||||
end |
||||
|
Loading…
Reference in new issue