summaryrefslogtreecommitdiff
path: root/spec/controllers
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-04-15 06:53:42 +0000
committerDouwe Maan <douwe@gitlab.com>2015-04-15 06:53:42 +0000
commit63b21945d2a6d53c7baa65bffcac33ab5fa8bb91 (patch)
tree250754a33d53845d5f720d97a7648fd9ebe97eb9 /spec/controllers
parent61c79418c46105ecedfca3701b7e4ac9ba6ba601 (diff)
parent9d00bb08962e26b0c284bcfc5e7ed52cf141d5c6 (diff)
downloadgitlab-ce-63b21945d2a6d53c7baa65bffcac33ab5fa8bb91.tar.gz
Merge branch 'google-code-import' into 'master'
Import projects from Google Code. Resolves #1257. Issue import logic almost entirely taken from https://gitlab.com/o9000/google-code-to-gitlab ( :hearts: @o9000). ### To do - [x] List projects from Google Takeout file - [x] Import Git repository - [x] Import issues - [x] Link to correct attachment URL (https://code.google.com/p/support-tools/issues/detail?id=50) - [x] Handle deleted attachments - [x] Handle blockedOn attribute - [x] Add directions on how to get data from Google Takeout ### Import instructions ![Screen_Shot_2015-04-03_at_16.02.21](https://gitlab.com/gitlab-org/gitlab-ce/uploads/4a87038035fbad9441cf613b8cdcc690/Screen_Shot_2015-04-03_at_16.02.21.png) ### Imported issue ![Screen_Shot_2015-04-03_at_16.25.49](https://gitlab.com/gitlab-org/gitlab-ce/uploads/b2c2eaf5ecfcf57b3c48511eb5d26db4/Screen_Shot_2015-04-03_at_16.25.49.png) See merge request !471
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/import/google_code_controller_spec.rb47
1 files changed, 47 insertions, 0 deletions
diff --git a/spec/controllers/import/google_code_controller_spec.rb b/spec/controllers/import/google_code_controller_spec.rb
new file mode 100644
index 00000000000..037cddb4600
--- /dev/null
+++ b/spec/controllers/import/google_code_controller_spec.rb
@@ -0,0 +1,47 @@
+require 'spec_helper'
+
+describe Import::GoogleCodeController do
+ let(:user) { create(:user) }
+ let(:dump_file) { fixture_file_upload(Rails.root + 'spec/fixtures/GoogleCodeProjectHosting.json', 'application/json') }
+
+ before do
+ sign_in(user)
+ end
+
+ describe "POST callback" do
+ it "stores Google Takeout dump list in session" do
+ post :callback, dump_file: dump_file
+
+ expect(session[:google_code_dump]).to be_a(Hash)
+ expect(session[:google_code_dump]["kind"]).to eq("projecthosting#user")
+ expect(session[:google_code_dump]).to have_key("projects")
+ end
+ end
+
+ describe "GET status" do
+ before do
+ @repo = OpenStruct.new(name: 'vim')
+ controller.stub_chain(:client, :valid?).and_return(true)
+ end
+
+ it "assigns variables" do
+ @project = create(:project, import_type: 'google_code', creator_id: user.id)
+ controller.stub_chain(:client, :repos).and_return([@repo])
+
+ get :status
+
+ expect(assigns(:already_added_projects)).to eq([@project])
+ expect(assigns(:repos)).to eq([@repo])
+ end
+
+ it "does not show already added project" do
+ @project = create(:project, import_type: 'google_code', creator_id: user.id, import_source: 'vim')
+ controller.stub_chain(:client, :repos).and_return([@repo])
+
+ get :status
+
+ expect(assigns(:already_added_projects)).to eq([@project])
+ expect(assigns(:repos)).to eq([])
+ end
+ end
+end