Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-04-03 16:29:27 +0300
committerDouwe Maan <douwe@gitlab.com>2015-04-03 16:29:27 +0300
commit7b5bc32cadbf2c0a3ac1e80643e46786fd8b1b56 (patch)
tree0dfa9add1156d8ce9ff8709e36da577b7c94ad1c /spec/lib/gitlab/google_code_import
parent9157985cfce1391973673ea278dc7506a90f8f53 (diff)
Allow projects to be imported from Google Code.
Diffstat (limited to 'spec/lib/gitlab/google_code_import')
-rw-r--r--spec/lib/gitlab/google_code_import/client_spec.rb34
-rw-r--r--spec/lib/gitlab/google_code_import/importer_spec.rb69
-rw-r--r--spec/lib/gitlab/google_code_import/project_creator_spec.rb24
3 files changed, 127 insertions, 0 deletions
diff --git a/spec/lib/gitlab/google_code_import/client_spec.rb b/spec/lib/gitlab/google_code_import/client_spec.rb
new file mode 100644
index 00000000000..d2bf871daa8
--- /dev/null
+++ b/spec/lib/gitlab/google_code_import/client_spec.rb
@@ -0,0 +1,34 @@
+require "spec_helper"
+
+describe Gitlab::GoogleCodeImport::Client do
+ let(:raw_data) { JSON.parse(File.read(Rails.root.join("spec/fixtures/GoogleCodeProjectHosting.json"))) }
+ subject { described_class.new(raw_data) }
+
+ describe "#valid?" do
+ context "when the data is valid" do
+ it "returns true" do
+ expect(subject).to be_valid
+ end
+ end
+
+ context "when the data is invalid" do
+ let(:raw_data) { "No clue" }
+
+ it "returns true" do
+ expect(subject).to_not be_valid
+ end
+ end
+ end
+
+ describe "#repos" do
+ it "returns only Git repositories" do
+ expect(subject.repos.length).to eq(1)
+ end
+ end
+
+ describe "#repo" do
+ it "returns the referenced repository" do
+ expect(subject.repo("tint2").name).to eq("tint2")
+ end
+ end
+end
diff --git a/spec/lib/gitlab/google_code_import/importer_spec.rb b/spec/lib/gitlab/google_code_import/importer_spec.rb
new file mode 100644
index 00000000000..ee5f99c12b0
--- /dev/null
+++ b/spec/lib/gitlab/google_code_import/importer_spec.rb
@@ -0,0 +1,69 @@
+require "spec_helper"
+
+describe Gitlab::GoogleCodeImport::Importer do
+ let(:raw_data) { JSON.parse(File.read(Rails.root.join("spec/fixtures/GoogleCodeProjectHosting.json"))) }
+ let(:client) { Gitlab::GoogleCodeImport::Client.new(raw_data) }
+ let(:import_data) { client.repo("tint2").raw_data }
+ let(:project) { create(:project, import_data: import_data) }
+ subject { described_class.new(project) }
+
+ describe "#execute" do
+ it "imports status labels" do
+ subject.execute
+
+ %w(New NeedInfo Accepted Wishlist Started Fixed Invalid Duplicate WontFix Incomplete).each do |status|
+ expect(project.labels.find_by(name: "Status: #{status}")).to_not be_nil
+ end
+ end
+
+ it "imports labels" do
+ subject.execute
+
+ %w(
+ Type-Defect Type-Enhancement Type-Task Type-Review Type-Other Milestone-0.12 Priority-Critical
+ Priority-High Priority-Medium Priority-Low OpSys-All OpSys-Windows OpSys-Linux OpSys-OSX Security
+ Performance Usability Maintainability Component-Panel Component-Taskbar Component-Battery
+ Component-Systray Component-Clock Component-Launcher Component-Tint2conf Component-Docs Component-New
+ ).each do |label|
+ label.sub!("-", ": ")
+ expect(project.labels.find_by(name: label)).to_not be_nil
+ end
+ end
+
+ it "imports issues" do
+ subject.execute
+
+ issue = project.issues.first
+ expect(issue).to_not be_nil
+ expect(issue.iid).to eq(169)
+ expect(issue.state).to eq("closed")
+ expect(issue.label_names).to include("Priority: Medium")
+ expect(issue.label_names).to include("Status: Fixed")
+ expect(issue.label_names).to include("Type: Enhancement")
+ expect(issue.title).to eq("Scrolling through tasks")
+ expect(issue.state).to eq("closed")
+ expect(issue.description).to include("schattenpr...")
+ expect(issue.description).to include("https://code.google.com/u/106498139506637530000/")
+ expect(issue.description).to include("November 18, 2009 00:20")
+ expect(issue.description).to include('I like to scroll through the tasks with my scrollwheel \(like in fluxbox\).')
+ expect(issue.description).to include('Patch is attached that adds two new mouse\-actions \(next\_taskprev\_task\)')
+ expect(issue.description).to include('that can be used for exactly that purpose.')
+ expect(issue.description).to include('all the best!')
+ expect(issue.description).to include('https://storage.googleapis.com/google-code-attachments/tint2/issue-169/comment-0/tint2_task_scrolling.diff')
+ end
+
+ it "imports issue comments" do
+ subject.execute
+
+ note = project.issues.first.notes.first
+ expect(note).to_not be_nil
+ expect(note.note).to include("thilo...")
+ expect(note.note).to include("https://code.google.com/u/104224918623172014000/")
+ expect(note.note).to include("November 18, 2009 05:14")
+ expect(note.note).to include("applied, thanks.")
+ expect(note.note).to include("Status: Fixed")
+ expect(note.note).to include("~~Type: Defect~~")
+ expect(note.note).to include("Type: Enhancement")
+ end
+ end
+end
diff --git a/spec/lib/gitlab/google_code_import/project_creator_spec.rb b/spec/lib/gitlab/google_code_import/project_creator_spec.rb
new file mode 100644
index 00000000000..7fca396f152
--- /dev/null
+++ b/spec/lib/gitlab/google_code_import/project_creator_spec.rb
@@ -0,0 +1,24 @@
+require 'spec_helper'
+
+describe Gitlab::GoogleCodeImport::ProjectCreator do
+ let(:user) { create(:user) }
+ let(:repo) {
+ Gitlab::GoogleCodeImport::Repository.new(
+ "name" => 'vim',
+ "summary" => 'VI Improved',
+ "repositoryUrls" => [ "https://vim.googlecode.com/git/" ]
+ )
+ }
+ let(:namespace) { create(:namespace) }
+
+ it 'creates project' do
+ allow_any_instance_of(Project).to receive(:add_import_job)
+
+ project_creator = Gitlab::GoogleCodeImport::ProjectCreator.new(repo, namespace, user)
+ project_creator.execute
+ project = Project.last
+
+ expect(project.import_url).to eq("https://vim.googlecode.com/git/")
+ expect(project.visibility_level).to eq(Gitlab::VisibilityLevel::PUBLIC)
+ end
+end