summaryrefslogtreecommitdiff
path: root/spec/models/members/project_member_spec.rb
diff options
context:
space:
mode:
authorLong Nguyen <long.polyglot@gmail.com>2016-05-21 00:37:48 +0700
committerLong Nguyen <long.polyglot@gmail.com>2016-05-21 00:37:48 +0700
commitad17741008b5ec874f92016ed48c2c1e6638dab5 (patch)
tree0bc4256bcb79945ea573aebf6a5ca99e6acc6faf /spec/models/members/project_member_spec.rb
parented9b6497865e28c60e96dbc30567987165b0b221 (diff)
downloadgitlab-ce-ad17741008b5ec874f92016ed48c2c1e6638dab5.tar.gz
Remove todos when destroy project member and specs
Diffstat (limited to 'spec/models/members/project_member_spec.rb')
-rw-r--r--spec/models/members/project_member_spec.rb43
1 files changed, 43 insertions, 0 deletions
diff --git a/spec/models/members/project_member_spec.rb b/spec/models/members/project_member_spec.rb
index 9f26d9eb5ce..2d2fa91e001 100644
--- a/spec/models/members/project_member_spec.rb
+++ b/spec/models/members/project_member_spec.rb
@@ -20,6 +20,49 @@
require 'spec_helper'
describe ProjectMember, models: true do
+ describe 'associations' do
+ it { is_expected.to have_many(:todos).through(:user) }
+ it { is_expected.to belong_to(:project).class_name('Project').with_foreign_key(:source_id) }
+ end
+
+ describe 'validations' do
+ it { is_expected.to allow_value('Project').for(:source_type) }
+ it { is_expected.not_to allow_value('project').for(:source_type) }
+ end
+
+ describe 'modules' do
+ it { is_expected.to include_module(Gitlab::ShellAdapter) }
+ end
+
+ describe "#destroy" do
+ let(:owner) { create(:project_member, access_level: ProjectMember::OWNER) }
+ let(:project) { owner.project }
+ let(:master) { create(:project_member, project: project) }
+
+ let(:owner_todos) { (0...2).map { create(:todo, user: owner.user, project: project) } }
+ let(:master_todos) { (0...3).map { create(:todo, user: master.user, project: project) } }
+
+ before do
+ owner_todos
+ master_todos
+ end
+
+ it "destroy itself and delete associated todos" do
+ expect(owner.todos.size).to eq(2)
+ expect(master.todos.size).to eq(3)
+ expect(Todo.count).to eq(5)
+
+ master_todo_ids = master_todos.map(&:id)
+ master.destroy
+
+ expect(owner.todos.size).to eq(2)
+ expect(Todo.count).to eq(2)
+ master_todo_ids.each do |id|
+ expect(Todo.exists?(id)).to eq(false)
+ end
+ end
+ end
+
describe :import_team do
before do
@abilities = Six.new