diff options
author | Long Nguyen <long.polyglot@gmail.com> | 2016-05-21 00:37:48 +0700 |
---|---|---|
committer | Long Nguyen <long.polyglot@gmail.com> | 2016-05-21 00:37:48 +0700 |
commit | ad17741008b5ec874f92016ed48c2c1e6638dab5 (patch) | |
tree | 0bc4256bcb79945ea573aebf6a5ca99e6acc6faf /spec | |
parent | ed9b6497865e28c60e96dbc30567987165b0b221 (diff) | |
download | gitlab-ce-ad17741008b5ec874f92016ed48c2c1e6638dab5.tar.gz |
Remove todos when destroy project member and specs
Diffstat (limited to 'spec')
-rw-r--r-- | spec/models/members/project_member_spec.rb | 43 |
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 |