diff options
author | Angus MacArthur <amacarthur@blackberry.com> | 2013-03-19 11:37:50 -0400 |
---|---|---|
committer | Angus MacArthur <amacarthur@blackberry.com> | 2013-04-15 01:54:52 -0400 |
commit | ae33fdf297e03866ecc6c31c5470dd5ad72d1328 (patch) | |
tree | 6b3b8fb315fbc3e0b6ebf6dbb527abe9bcb3d245 /spec/models | |
parent | e996c52636f46b193b5ff7291e9b835c317e5438 (diff) | |
download | gitlab-ce-ae33fdf297e03866ecc6c31c5470dd5ad72d1328.tar.gz |
updated fork feature to use gitlab-shell for v5 of gitlab
Diffstat (limited to 'spec/models')
-rw-r--r-- | spec/models/forked_project_link_spec.rb | 56 | ||||
-rw-r--r-- | spec/models/project_spec.rb | 1 |
2 files changed, 57 insertions, 0 deletions
diff --git a/spec/models/forked_project_link_spec.rb b/spec/models/forked_project_link_spec.rb new file mode 100644 index 00000000000..c362b21f088 --- /dev/null +++ b/spec/models/forked_project_link_spec.rb @@ -0,0 +1,56 @@ +require 'spec_helper' + +describe ForkedProjectLink, "add link on fork" do + let(:project_from) {create(:project)} + let(:namespace) {create(:namespace)} + let(:user) {create(:user, namespace: namespace)} + + before do + @project_to = fork_project(project_from, user) + end + + it "project_to should know it is forked" do + @project_to.forked?.should be_true + end + + it "project should know who it is forked from" do + @project_to.forked_from_project.should == project_from + end +end + +describe :forked_from_project do + let(:forked_project_link) {build(:forked_project_link)} + let(:project_from) {create(:project)} + let(:project_to) {create(:project, forked_project_link: forked_project_link)} + + + before :each do + forked_project_link.forked_from_project = project_from + forked_project_link.forked_to_project = project_to + forked_project_link.save! + end + + + it "project_to should know it is forked" do + project_to.forked?.should be_true + end + + it "project_from should not be forked" do + project_from.forked?.should be_false + end + + it "project_to.destroy should destroy fork_link" do + forked_project_link.should_receive(:destroy) + project_to.destroy + end + +end + +def fork_project(from_project, user) + context = Projects::ForkContext.new(from_project, user) + shell = mock("gitlab_shell") + shell.stub(fork_repository: true) + context.stub(gitlab_shell: shell) + context.execute +end + diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index fedf17b1ba0..b7eb7391072 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -40,6 +40,7 @@ describe Project do it { should have_many(:deploy_keys).dependent(:destroy) } it { should have_many(:hooks).dependent(:destroy) } it { should have_many(:protected_branches).dependent(:destroy) } + it { should have_one(:forked_project_link).dependent(:destroy) } end describe "Mass assignment" do |