summaryrefslogtreecommitdiff
path: root/spec/models/forked_project_link_spec.rb
diff options
context:
space:
mode:
authorAngus MacArthur <amacarthur@blackberry.com>2013-03-19 11:37:50 -0400
committerAngus MacArthur <amacarthur@blackberry.com>2013-04-15 01:54:52 -0400
commitae33fdf297e03866ecc6c31c5470dd5ad72d1328 (patch)
tree6b3b8fb315fbc3e0b6ebf6dbb527abe9bcb3d245 /spec/models/forked_project_link_spec.rb
parente996c52636f46b193b5ff7291e9b835c317e5438 (diff)
downloadgitlab-ce-ae33fdf297e03866ecc6c31c5470dd5ad72d1328.tar.gz
updated fork feature to use gitlab-shell for v5 of gitlab
Diffstat (limited to 'spec/models/forked_project_link_spec.rb')
-rw-r--r--spec/models/forked_project_link_spec.rb56
1 files changed, 56 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
+