summaryrefslogtreecommitdiff
path: root/spec
diff options
context:
space:
mode:
authorDouwe Maan <douwe@gitlab.com>2015-04-03 15:29:27 +0200
committerDouwe Maan <douwe@gitlab.com>2015-04-03 15:29:27 +0200
commit7b5bc32cadbf2c0a3ac1e80643e46786fd8b1b56 (patch)
tree0dfa9add1156d8ce9ff8709e36da577b7c94ad1c /spec
parent9157985cfce1391973673ea278dc7506a90f8f53 (diff)
downloadgitlab-ce-7b5bc32cadbf2c0a3ac1e80643e46786fd8b1b56.tar.gz
Allow projects to be imported from Google Code.
Diffstat (limited to 'spec')
-rw-r--r--spec/controllers/import/google_code_controller_spec.rb47
-rw-r--r--spec/fixtures/GoogleCodeProjectHosting.json397
-rw-r--r--spec/lib/gitlab/gitorious_import/project_creator_spec.rb (renamed from spec/lib/gitlab/gitorious_import/project_creator.rb)0
-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
6 files changed, 571 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
diff --git a/spec/fixtures/GoogleCodeProjectHosting.json b/spec/fixtures/GoogleCodeProjectHosting.json
new file mode 100644
index 00000000000..a1d8d32adf3
--- /dev/null
+++ b/spec/fixtures/GoogleCodeProjectHosting.json
@@ -0,0 +1,397 @@
+{
+ "kind" : "projecthosting#user",
+ "id" : "@WRRVSlFXARlCVgB6",
+ "projects" : [ {
+ "kind" : "projecthosting#project",
+ "name" : "pmn",
+ "externalId" : "pmn",
+ "htmlLink" : "/p/pmn/",
+ "summary" : "Shows an icon in the system tray when you have new emails",
+ "description" : "IMAP client that shows an icon in the system tray when you have new emails.",
+ "labels" : [ "Mail" ],
+ "versionControlSystem" : "svn",
+ "repositoryUrls" : [ "https://pmn.googlecode.com/svn/" ],
+ "issuesConfig" : {
+ "kind" : "projecthosting#projectIssueConfig",
+ "statuses" : [ {
+ "status" : "New",
+ "meansOpen" : true,
+ "description" : "Issue has not had initial review yet"
+ }, {
+ "status" : "Accepted",
+ "meansOpen" : true,
+ "description" : "Problem reproduced / Need acknowledged"
+ }, {
+ "status" : "Started",
+ "meansOpen" : true,
+ "description" : "Work on this issue has begun"
+ }, {
+ "status" : "Fixed",
+ "meansOpen" : false,
+ "description" : "Developer made source code changes, QA should verify"
+ }, {
+ "status" : "Verified",
+ "meansOpen" : false,
+ "description" : "QA has verified that the fix worked"
+ }, {
+ "status" : "Invalid",
+ "meansOpen" : false,
+ "description" : "This was not a valid issue report"
+ }, {
+ "status" : "Duplicate",
+ "meansOpen" : false,
+ "description" : "This report duplicates an existing issue"
+ }, {
+ "status" : "WontFix",
+ "meansOpen" : false,
+ "description" : "We decided to not take action on this issue"
+ }, {
+ "status" : "Done",
+ "meansOpen" : false,
+ "description" : "The requested non-coding task was completed"
+ } ],
+ "labels" : [ {
+ "label" : "Type-Defect",
+ "description" : "Report of a software defect"
+ }, {
+ "label" : "Type-Enhancement",
+ "description" : "Request for enhancement"
+ }, {
+ "label" : "Type-Task",
+ "description" : "Work item that doesn't change the code or docs"
+ }, {
+ "label" : "Type-Review",
+ "description" : "Request for a source code review"
+ }, {
+ "label" : "Type-Other",
+ "description" : "Some other kind of issue"
+ }, {
+ "label" : "Priority-Critical",
+ "description" : "Must resolve in the specified milestone"
+ }, {
+ "label" : "Priority-High",
+ "description" : "Strongly want to resolve in the specified milestone"
+ }, {
+ "label" : "Priority-Medium",
+ "description" : "Normal priority"
+ }, {
+ "label" : "Priority-Low",
+ "description" : "Might slip to later milestone"
+ }, {
+ "label" : "OpSys-All",
+ "description" : "Affects all operating systems"
+ }, {
+ "label" : "OpSys-Windows",
+ "description" : "Affects Windows users"
+ }, {
+ "label" : "OpSys-Linux",
+ "description" : "Affects Linux users"
+ }, {
+ "label" : "OpSys-OSX",
+ "description" : "Affects Mac OS X users"
+ }, {
+ "label" : "Milestone-Release1.0",
+ "description" : "All essential functionality working"
+ }, {
+ "label" : "Component-UI",
+ "description" : "Issue relates to program UI"
+ }, {
+ "label" : "Component-Logic",
+ "description" : "Issue relates to application logic"
+ }, {
+ "label" : "Component-Persistence",
+ "description" : "Issue relates to data storage components"
+ }, {
+ "label" : "Component-Scripts",
+ "description" : "Utility and installation scripts"
+ }, {
+ "label" : "Component-Docs",
+ "description" : "Issue relates to end-user documentation"
+ }, {
+ "label" : "Security",
+ "description" : "Security risk to users"
+ }, {
+ "label" : "Performance",
+ "description" : "Performance issue"
+ }, {
+ "label" : "Usability",
+ "description" : "Affects program usability"
+ }, {
+ "label" : "Maintainability",
+ "description" : "Hinders future changes"
+ } ],
+ "prompts" : [ {
+ "name" : "Defect report from user",
+ "title" : "Enter one-line summary",
+ "description" : "What steps will reproduce the problem?\n1. \n2. \n3. \n\nWhat is the expected output? What do you see instead?\n\n\nWhat version of the product are you using? On what operating system?\n\n\nPlease provide any additional information below.\n",
+ "titleMustBeEdited" : true,
+ "status" : "New",
+ "labels" : [ "Type-Defect", "Priority-Medium" ]
+ }, {
+ "name" : "Defect report from developer",
+ "title" : "Enter one-line summary",
+ "description" : "What steps will reproduce the problem?\n1. \n2. \n3. \n\nWhat is the expected output? What do you see instead?\n\n\nPlease use labels and text to provide additional information.\n",
+ "titleMustBeEdited" : true,
+ "status" : "Accepted",
+ "labels" : [ "Type-Defect", "Priority-Medium" ],
+ "membersOnly" : true
+ }, {
+ "name" : "Review request",
+ "title" : "Code review request",
+ "description" : "Branch name:\n\nPurpose of code changes on this branch:\n\n\nWhen reviewing my code changes, please focus on:\n\n\nAfter the review, I'll merge this branch into:\n/trunk\n",
+ "status" : "New",
+ "labels" : [ "Type-Review", "Priority-Medium" ],
+ "membersOnly" : true,
+ "defaultToMember" : false
+ } ],
+ "defaultPromptForMembers" : 1,
+ "defaultPromptForNonMembers" : 0
+ },
+ "role" : "owner",
+ "members" : [ {
+ "kind" : "projecthosting#issuePerson",
+ "name" : "mrovi9000",
+ "htmlLink" : "https://code.google.com/u/106736353629303906862/"
+ } ],
+ "issues" : {
+ "kind" : "projecthosting#issueList",
+ "totalResults" : 0,
+ "items" : [ ]
+ }
+ }, {
+ "kind" : "projecthosting#project",
+ "name" : "tint2",
+ "externalId" : "tint2",
+ "htmlLink" : "/p/tint2/",
+ "summary" : "tint2 is a lightweight panel/taskbar.",
+ "description" : "tint2 is a simple _*panel/taskbar*_ unintrusive and light (memory / cpu / aestetic). <br>We follow freedesktop specifications.\r\n \r\n=== 0.11 features ===\r\n * panel with taskbar, systray, clock and battery status\r\n * easy to customize : color/transparency on font, icon, border and background\r\n * pager like capability : send task from one workspace to another, switch workspace\r\n * multi-monitor capability : one panel per monitor, show task from current monitor\r\n * customize mouse event\r\n * window manager's menu\r\n * tooltip\r\n * autohide\r\n * clock timezones\r\n * real & fake transparency with autodetection of composite manager\r\n * panel's theme switcher 'tint2conf' \r\n\r\n=== Other project ===\r\n * Lightweight volume control http://softwarebakery.com/maato/volumeicon.html\r\n * Lightweight calendar http://code.google.com/p/gsimplecal/\r\n * Graphical config tool http://code.google.com/p/tintwizard/\r\n * Command line theme switcher http://github.com/dbbolton/scripts/blob/master/tint2theme\r\n\r\n\r\n=== Snapshot SVN ===\r\n\r\nhttp://img252.imageshack.us/img252/1433/wallpaper2td.jpg\r\n\r\n\r\n",
+ "labels" : [ "taskbar", "panel", "lightweight", "desktop", "openbox", "pager", "tint2" ],
+ "versionControlSystem" : "git",
+ "repositoryUrls" : [ "https://tint2.googlecode.com/git/" ],
+ "issuesConfig" : {
+ "kind" : "projecthosting#projectIssueConfig",
+ "defaultColumns" : [ "ID", "Status", "Type", "Milestone", "Priority", "Component", "Owner", "Summary", "Modified", "Stars" ],
+ "defaultSorting" : [ "-ID" ],
+ "statuses" : [ {
+ "status" : "New",
+ "meansOpen" : true,
+ "description" : "Issue has not had initial review yet"
+ }, {
+ "status" : "NeedInfo",
+ "meansOpen" : true,
+ "description" : "More information is needed before deciding what action should be taken"
+ }, {
+ "status" : "Accepted",
+ "meansOpen" : true,
+ "description" : "A Defect that a developer has reproduced or an Enhancement that a developer has committed to addressing"
+ }, {
+ "status" : "Wishlist",
+ "meansOpen" : true,
+ "description" : "An Enhancement which is valid, but no developers have committed to addressing"
+ }, {
+ "status" : "Started",
+ "meansOpen" : true,
+ "description" : "Work on this issue has begun"
+ }, {
+ "status" : "Fixed",
+ "meansOpen" : false,
+ "description" : "Work has completed"
+ }, {
+ "status" : "Invalid",
+ "meansOpen" : false,
+ "description" : "This was not a valid issue report"
+ }, {
+ "status" : "Duplicate",
+ "meansOpen" : false,
+ "description" : "This report duplicates an existing issue"
+ }, {
+ "status" : "WontFix",
+ "meansOpen" : false,
+ "description" : "We decided to not take action on this issue"
+ }, {
+ "status" : "Incomplete",
+ "meansOpen" : false,
+ "description" : "Not enough information and no activity for a long period of time"
+ } ],
+ "labels" : [ {
+ "label" : "Type-Defect",
+ "description" : "Report of a software defect"
+ }, {
+ "label" : "Type-Enhancement",
+ "description" : "Request for enhancement"
+ }, {
+ "label" : "Type-Task",
+ "description" : "Work item that does not change the code"
+ }, {
+ "label" : "Type-Review",
+ "description" : "Request for a source code review"
+ }, {
+ "label" : "Type-Other",
+ "description" : "Some other kind of issue"
+ }, {
+ "label" : "Milestone-0.12",
+ "description" : "Fix should be included in release 0.12"
+ }, {
+ "label" : "Priority-Critical",
+ "description" : "Must resolve in the specified milestone"
+ }, {
+ "label" : "Priority-High",
+ "description" : "Strongly want to resolve in the specified milestone"
+ }, {
+ "label" : "Priority-Medium",
+ "description" : "Normal priority"
+ }, {
+ "label" : "Priority-Low",
+ "description" : "Might slip to later milestone"
+ }, {
+ "label" : "OpSys-All",
+ "description" : "Affects all operating systems"
+ }, {
+ "label" : "OpSys-Windows",
+ "description" : "Affects Windows users"
+ }, {
+ "label" : "OpSys-Linux",
+ "description" : "Affects Linux users"
+ }, {
+ "label" : "OpSys-OSX",
+ "description" : "Affects Mac OS X users"
+ }, {
+ "label" : "Security",
+ "description" : "Security risk to users"
+ }, {
+ "label" : "Performance",
+ "description" : "Performance issue"
+ }, {
+ "label" : "Usability",
+ "description" : "Affects program usability"
+ }, {
+ "label" : "Maintainability",
+ "description" : "Hinders future changes"
+ }, {
+ "label" : "Component-Panel",
+ "description" : "Issue relates to the panel (e.g. positioning, hiding, transparency)"
+ }, {
+ "label" : "Component-Taskbar",
+ "description" : "Issue relates to the taskbar (e.g. tasks, multiple desktops)"
+ }, {
+ "label" : "Component-Battery",
+ "description" : "Issue relates to the battery"
+ }, {
+ "label" : "Component-Systray",
+ "description" : "Issue relates to the system tray"
+ }, {
+ "label" : "Component-Clock",
+ "description" : "Issue relates to the clock"
+ }, {
+ "label" : "Component-Launcher",
+ "description" : "Issue relates to the launcher"
+ }, {
+ "label" : "Component-Tint2conf",
+ "description" : "Issue relates to the configuration GUI (tint2conf)"
+ }, {
+ "label" : "Component-Docs",
+ "description" : "Issue relates to end-user documentation"
+ }, {
+ "label" : "Component-New",
+ "description" : "Issue describes a new component proposal"
+ } ],
+ "prompts" : [ {
+ "name" : "Defect report from user",
+ "title" : "Enter one-line summary",
+ "description" : "What steps will reproduce the problem?\n1.\n2.\n3.\n\nWhat is the expected output? What do you see instead?\n\n\nWhat version of the product are you using? On what operating system?\n\n\nWhich window manager (e.g. openbox, xfwm, metacity, mutter, kwin) or\nwhich desktop environment (e.g. Gnome 2, Gnome 3, LXDE, XFCE, KDE)\nare you using?\n\n\nPlease provide any additional information below. It might be helpful\nto attach your tint2rc file (usually located at ~/.config/tint2/tint2rc).",
+ "titleMustBeEdited" : true,
+ "status" : "New",
+ "labels" : [ "Priority-Medium" ],
+ "defaultToMember" : true
+ }, {
+ "name" : "Defect report from developer",
+ "title" : "Enter one-line summary",
+ "description" : "What steps will reproduce the problem?\n1.\n2.\n3.\n\nWhat is the expected output? What do you see instead?\n\n\nPlease use labels and text to provide additional information.",
+ "titleMustBeEdited" : true,
+ "status" : "Accepted",
+ "labels" : [ "Type-Defect", "Priority-Medium" ],
+ "membersOnly" : true,
+ "defaultToMember" : true
+ }, {
+ "name" : "Review request",
+ "title" : "Code review request",
+ "description" : "Purpose of code changes on this branch:\n\n\nWhen reviewing my code changes, please focus on:\n\n\nAfter the review, I'll merge this branch into:\n/trunk",
+ "status" : "New",
+ "labels" : [ "Type-Review", "Priority-Medium" ],
+ "membersOnly" : true,
+ "defaultToMember" : true
+ } ],
+ "defaultPromptForMembers" : 1,
+ "defaultPromptForNonMembers" : 0,
+ "usersCanSetLabels" : false
+ },
+ "role" : "owner",
+ "issues" : {
+ "kind" : "projecthosting#issueList",
+ "totalResults" : 473,
+ "items" : [ {
+ "kind" : "projecthosting#issue",
+ "id" : 169,
+ "title" : "Scrolling through tasks",
+ "summary" : "Scrolling through tasks",
+ "stars" : 1,
+ "starred" : false,
+ "status" : "Fixed",
+ "state" : "closed",
+ "labels" : [ "Type-Enhancement", "Priority-Medium" ],
+ "author" : {
+ "kind" : "projecthosting#issuePerson",
+ "name" : "schattenpr...",
+ "htmlLink" : "https://code.google.com/u/106498139506637530000/"
+ },
+ "updated" : "2009-11-18T05:14:58.000Z",
+ "published" : "2009-11-18T00:20:19.000Z",
+ "closed" : "2009-11-18T05:14:58.000Z",
+ "projectId" : "tint2",
+ "canComment" : true,
+ "canEdit" : true,
+ "comments" : {
+ "kind" : "projecthosting#issueCommentList",
+ "totalResults" : 2,
+ "items" : [ {
+ "id" : 0,
+ "kind" : "projecthosting#issueComment",
+ "author" : {
+ "kind" : "projecthosting#issuePerson",
+ "name" : "schattenpr...",
+ "htmlLink" : "https://code.google.com/u/10649813950663753000/"
+ },
+ "content" : "I like to scroll through the tasks with my scrollwheel (like in fluxbox). \r\n\r\nPatch is attached that adds two new mouse-actions (next_task+prev_task) \r\nthat can be used for exactly that purpose. \r\n\r\nall the best!",
+ "published" : "2009-11-18T00:20:19.000Z",
+ "updates" : {
+ "kind" : "projecthosting#issueCommentUpdate"
+ },
+ "canDelete" : true,
+ "attachments" : [ {
+ "attachmentId" : "8901002890399325565",
+ "fileName" : "tint2_task_scrolling.diff",
+ "fileSize" : 3059,
+ "mimetype" : "text/x-c++; charset=us-ascii"
+ } ]
+ }, {
+ "id" : 1,
+ "kind" : "projecthosting#issueComment",
+ "author" : {
+ "kind" : "projecthosting#issuePerson",
+ "name" : "thilo...",
+ "htmlLink" : "https://code.google.com/u/104224918623172014000/"
+ },
+ "content" : "applied, thanks.\r\n",
+ "published" : "2009-11-18T05:14:58.000Z",
+ "updates" : {
+ "kind" : "projecthosting#issueCommentUpdate",
+ "status" : "Fixed",
+ "labels" : [ "-Type-Defect", "Type-Enhancement" ]
+ },
+ "canDelete" : true
+ } ]
+ }
+ } ]
+ }
+ } ]
+}
diff --git a/spec/lib/gitlab/gitorious_import/project_creator.rb b/spec/lib/gitlab/gitorious_import/project_creator_spec.rb
index cf2318bb3a2..cf2318bb3a2 100644
--- a/spec/lib/gitlab/gitorious_import/project_creator.rb
+++ b/spec/lib/gitlab/gitorious_import/project_creator_spec.rb
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