diff --git a/Gemfile.lock b/Gemfile.lock index 7ec37f59..f350b3fc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -323,7 +323,7 @@ GEM multi_json (~> 1.0) rubyzip settingslogic (2.0.8) - shoulda-matchers (1.1.0) + shoulda-matchers (1.3.0) activesupport (>= 3.0.0) simplecov (0.6.4) multi_json (~> 1.0) diff --git a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss index c838f3b2..380fc3e3 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/buttons.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/buttons.scss @@ -1,8 +1,5 @@ .btn { - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5)); - background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5); - background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5); + @include bg-gradient(#f7f7f7, #d5d5d5); border-color:#aaa; &:hover { @include bg-gray-gradient; @@ -12,10 +9,8 @@ &.primary { background:#2a79A3; + @include bg-gradient(#47A7b7, #2585b5); border-color: #2A79A3; - background-image: -webkit-linear-gradient(#47A7b7 7.6%, #2585b5); - background-image: -moz-linear-gradient(#47A7b7 7.6%, #2585b5); - background-image: -o-linear-gradient(#47A7b7 7.6%, #2585b5); color:#fff; text-shadow: 0 1px 1px #268; &:hover { @@ -30,16 +25,11 @@ } &.success { - border-color: #4A4; - background-image: -webkit-linear-gradient(#82D482 7.6%, #22B442); - background-image: -moz-linear-gradient(#82D482 7.6%, #22B442); - background-image: -o-linear-gradient(#82D482 7.6%, #22B442); - color: #fff; - text-shadow: 0 1px 1px #141; + @extend .btn-success; &:hover { - background: #6C6; - color: #fff; + @extend .btn-success; + background: #51a351; } &.disabled { @@ -62,10 +52,8 @@ padding-right:30px; } - &.danger, - &.btn-danger { - color:#fff; - background: #DA4E49; + &.danger { + @extend .btn-danger; border-color: #BD362F; &:hover { diff --git a/app/assets/stylesheets/gitlab_bootstrap/files.scss b/app/assets/stylesheets/gitlab_bootstrap/files.scss index 83903c53..d39fdb27 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/files.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/files.scss @@ -3,7 +3,7 @@ * */ .file_holder { - border:1px solid #CCC; + border:1px solid #BBB; margin-bottom:1em; @include solid_shade; diff --git a/app/assets/stylesheets/main.scss b/app/assets/stylesheets/main.scss index e99ab479..80446a4c 100644 --- a/app/assets/stylesheets/main.scss +++ b/app/assets/stylesheets/main.scss @@ -56,6 +56,13 @@ $hover: #fdf5d9; border-radius: $radius; } +@mixin bg-gradient($from, $to) { + background-image: -webkit-gradient(linear, 0 0, 0 100%, from($from), to($to)); + background-image: -webkit-linear-gradient($from, $to); + background-image: -moz-linear-gradient($from, $to); + background-image: -o-linear-gradient($from, $to); +} + @mixin bg-gray-gradient { background:#eee; background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); diff --git a/app/assets/stylesheets/sections/header.scss b/app/assets/stylesheets/sections/header.scss index d0fb662e..8328a5ab 100644 --- a/app/assets/stylesheets/sections/header.scss +++ b/app/assets/stylesheets/sections/header.scss @@ -22,7 +22,7 @@ header { * */ .app_logo { - width:230px; + width:200px; float:left; position:relative; top:-5px; @@ -31,7 +31,7 @@ header { h1 { padding-top: 5px; - width:102px; + width:90px; background: url('logo_dark.png') no-repeat 0px -3px; float:left; margin-left:5px; diff --git a/app/assets/stylesheets/sections/nav.scss b/app/assets/stylesheets/sections/nav.scss index 097e8197..6f6a0e8e 100644 --- a/app/assets/stylesheets/sections/nav.scss +++ b/app/assets/stylesheets/sections/nav.scss @@ -2,7 +2,7 @@ * Main Menu of Application * */ -ul.main_menu { +ul.main_menu { border-radius: 4px; margin: auto; margin:30px 0; @@ -12,7 +12,7 @@ ul.main_menu { position:relative; overflow:hidden; @include shade; - .count { + .count { position: relative; top: -1px; display: inline-block; @@ -29,12 +29,12 @@ ul.main_menu { border-radius: 8px; -moz-border-radius: 8px; } - .label { + .label { background:$hover; text-shadow:none; color:$style_color; } - li { + li { list-style-type: none; margin: 0; display: table-cell; @@ -43,7 +43,7 @@ ul.main_menu { border-left: 1px solid #EEE; border-bottom:2px solid #CFCFCF; - &:first-child{ + &:first-child{ -webkit-border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-topleft: 4px; @@ -53,31 +53,31 @@ ul.main_menu { border-left: 0; } - &.current { + &.current { background-color:#D5D5D5; - border-bottom: 2px solid $style_color; + border-bottom: 1px solid #AAA; border-right: 1px solid #BBB; border-left: 1px solid #BBB; border-radius: 0 0 1px 1px; - &:first-child{ + &:first-child{ border-bottom:none; border-left:none; } } - &.home { - a { + &.home { + a { background: url(home_icon.PNG) no-repeat center center; text-indent:-9999px; min-width:20px; - img { + img { position:relative; top:4px; } } } } - a { + a { display: block; text-align: center; font-weight:bold; diff --git a/app/models/project.rb b/app/models/project.rb index fc18ad55..4de836c7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -104,6 +104,8 @@ class Project < ActiveRecord::Base length: { within: 1..255 } validates :owner, presence: true + validates :issues_enabled, :wall_enabled, :merge_requests_enabled, + :wiki_enabled, inclusion: { in: [true, false] } validate :check_limit validate :repo_name diff --git a/app/roles/issue_commonality.rb b/app/roles/issue_commonality.rb index a8fd679d..ac972a70 100644 --- a/app/roles/issue_commonality.rb +++ b/app/roles/issue_commonality.rb @@ -16,7 +16,7 @@ module IssueCommonality validates :title, presence: true, length: { within: 0..255 } - + validates :closed, inclusion: { in: [true, false] } scope :opened, where(closed: false) scope :closed, where(closed: true) diff --git a/app/views/deploy_keys/_form.html.haml b/app/views/deploy_keys/_form.html.haml index 461f1f5d..6beba562 100644 --- a/app/views/deploy_keys/_form.html.haml +++ b/app/views/deploy_keys/_form.html.haml @@ -11,8 +11,13 @@ .input= f.text_field :title .clearfix = f.label :key - .input= f.text_area :key, class: "xlarge" - .actions - = f.submit 'Save', class: "primary btn" - = link_to "Cancel", project_deploy_keys_path(@project), class: "btn" + .input + = f.text_area :key, class: [:xxlarge, :thin_area] + %p.hint + Paste a machine public key here. Read more about how generate it + = link_to "here", help_ssh_path + + .actions + = f.submit 'Save', class: "save-btn btn" + = link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn" diff --git a/app/views/deploy_keys/index.html.haml b/app/views/deploy_keys/index.html.haml index 0ee9d03b..b9c654a1 100644 --- a/app/views/deploy_keys/index.html.haml +++ b/app/views/deploy_keys/index.html.haml @@ -1,11 +1,17 @@ = render "repositories/head" -- if can? current_user, :admin_project, @project - .alert-message.block-message - Deploy keys allow read-only access to repository. + +%p.slead + Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers. + + - if can? current_user, :admin_project, @project = link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do Add Deploy Key - - if @keys.any? %table + %thead + %tr + %th Keys + %th + %th - @keys.each do |key| = render(partial: 'show', locals: {key: key}) diff --git a/app/views/deploy_keys/new.html.haml b/app/views/deploy_keys/new.html.haml index a2f1010b..e973cb7d 100644 --- a/app/views/deploy_keys/new.html.haml +++ b/app/views/deploy_keys/new.html.haml @@ -1,6 +1,6 @@ = render "repositories/head" -%h3 New Deploy key +%h3.page_title New Deploy key %hr = render 'form' diff --git a/app/views/deploy_keys/show.html.haml b/app/views/deploy_keys/show.html.haml index b1e0dc5c..c94cf10d 100644 --- a/app/views/deploy_keys/show.html.haml +++ b/app/views/deploy_keys/show.html.haml @@ -1,7 +1,14 @@ = render "repositories/head" -%h3= @key.title +%h3.page_title + Deploy key: + = @key.title + %small + created at + = @key.created_at.stamp("Aug 21, 2011") +.back_link + = link_to project_deploy_keys_path(@project) do + ← To keys list %hr %pre= @key.key -.actions +.right = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key" - .clear diff --git a/app/views/keys/show.html.haml b/app/views/keys/show.html.haml index ffd52b96..a8cba6c8 100644 --- a/app/views/keys/show.html.haml +++ b/app/views/keys/show.html.haml @@ -10,5 +10,5 @@ %hr %pre= @key.key -.actions +.right = link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn danger delete-key" diff --git a/app/views/team_members/show.html.haml b/app/views/team_members/show.html.haml index 89662309..3b5c78a8 100644 --- a/app/views/team_members/show.html.haml +++ b/app/views/team_members/show.html.haml @@ -3,7 +3,7 @@ .team_member_show - if can? current_user, :admin_project, @project - = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn btn-danger" + = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn danger" .profile_avatar_holder = image_tag gravatar_icon(user.email, 60), class: "borders" %h3 diff --git a/features/projects/issues/issues.feature b/features/projects/issues/issues.feature index 180710cf..42a3d873 100644 --- a/features/projects/issues/issues.feature +++ b/features/projects/issues/issues.feature @@ -4,7 +4,7 @@ Feature: Issues And I own project "Shop" And project "Shop" have "Release 0.4" open issue And project "Shop" have "Release 0.3" closed issue - And I visit project "Shop" issues page + And I visit project "Shop" issues page Scenario: I should see open issues Given I should see "Release 0.4" in issues @@ -36,3 +36,31 @@ Feature: Issues Given I visit issue page "Release 0.4" And I leave a comment like "XML attached" Then I should see comment "XML attached" + + @javascript + Scenario: I search issue + Given I fill in issue search with "Release" + Then I should see "Release 0.4" in issues + And I should not see "Release 0.3" in issues + + @javascript + Scenario: I search issue that not exist + Given I fill in issue search with "Bug" + Then I should not see "Release 0.4" in issues + And I should not see "Release 0.3" in issues + + + @javascript + Scenario: I search all issues + Given I click link "All" + And I fill in issue search with "0.3" + Then I should see "Release 0.3" in issues + And I should not see "Release 0.4" in issues + + @javascript + Scenario: I clear search + Given I click link "All" + And I fill in issue search with "Something" + And I fill in issue search with "" + Then I should see "Release 0.4" in issues + And I should see "Release 0.3" in issues diff --git a/features/step_definitions/common_steps.rb b/features/step_definitions/common_steps.rb new file mode 100644 index 00000000..e9023f92 --- /dev/null +++ b/features/step_definitions/common_steps.rb @@ -0,0 +1,21 @@ +include LoginHelpers + +Given /^I signin as a user$/ do + login_as :user +end + +When /^I click link "(.*?)"$/ do |link| + click_link link +end + +When /^I click button "(.*?)"$/ do |button| + click_button button +end + +When /^I fill in "(.*?)" with "(.*?)"$/ do |field, value| + fill_in field, :with => value +end + +Given /^show me page$/ do + save_and_open_page +end diff --git a/features/step_definitions/dashboard_steps.rb b/features/step_definitions/dashboard_steps.rb index a4edd224..867233c8 100644 --- a/features/step_definitions/dashboard_steps.rb +++ b/features/step_definitions/dashboard_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit dashboard page$/ do - visit dashboard_path -end - Then /^I should see "(.*?)" link$/ do |arg1| page.should have_link(arg1) end @@ -51,10 +47,10 @@ Then /^I click "(.*?)" link$/ do |arg1| end Then /^I see prefilled new Merge Request page$/ do - current_path.should == new_project_merge_request_path(@project) - find("#merge_request_source_branch").value.should == "new_design" - find("#merge_request_target_branch").value.should == "master" - find("#merge_request_title").value.should == "New Design" + current_path.should == new_project_merge_request_path(@project) + find("#merge_request_source_branch").value.should == "new_design" + find("#merge_request_target_branch").value.should == "master" + find("#merge_request_title").value.should == "New Design" end Given /^I visit dashboard search page$/ do @@ -66,10 +62,6 @@ Given /^I search for "(.*?)"$/ do |arg1| click_button "Search" end -Given /^I visit dashboard issues page$/ do - visit dashboard_issues_path -end - Then /^I should see issues assigned to me$/ do issues = @user.issues issues.each do |issue| @@ -78,10 +70,6 @@ Then /^I should see issues assigned to me$/ do end end -Given /^I visit dashboard merge requests page$/ do - visit dashboard_merge_requests_path -end - Then /^I should see my merge requests$/ do merge_requests = @user.merge_requests merge_requests.each do |mr| diff --git a/features/step_definitions/profile/profile_steps.rb b/features/step_definitions/profile/profile_steps.rb index 4661139c..525d43f5 100644 --- a/features/step_definitions/profile/profile_steps.rb +++ b/features/step_definitions/profile/profile_steps.rb @@ -1,17 +1,9 @@ -Given /^I visit profile page$/ do - visit profile_path -end - Then /^I should see my profile info$/ do page.should have_content "Profile" page.should have_content @user.name page.should have_content @user.email end -Given /^I visit profile password page$/ do - visit profile_password_path -end - Then /^I change my password$/ do fill_in "user_password", :with => "222333" fill_in "user_password_confirmation", :with => "222333" @@ -22,10 +14,6 @@ Then /^I should be redirected to sign in page$/ do current_path.should == new_user_session_path end -Given /^I visit profile token page$/ do - visit profile_token_path -end - Then /^I reset my token$/ do @old_token = @user.private_token click_button "Reset" diff --git a/features/step_definitions/project/browse_code_steps.rb b/features/step_definitions/project/browse_code_steps.rb index 7f9001bb..d2ed9a0a 100644 --- a/features/step_definitions/project/browse_code_steps.rb +++ b/features/step_definitions/project/browse_code_steps.rb @@ -1,17 +1,9 @@ -Given /^I visit project source page$/ do - visit tree_project_ref_path(@project, @project.root_ref) -end - Then /^I should see files from repository$/ do page.should have_content("app") page.should have_content("History") page.should have_content("Gemfile") end -Given /^I visit project source page for "(.*?)"$/ do |arg1| - visit tree_project_ref_path(@project, arg1) -end - Then /^I should see files from repository for "(.*?)"$/ do |arg1| current_path.should == tree_project_ref_path(@project, arg1) page.should have_content("app") @@ -31,10 +23,6 @@ Given /^I click on raw button$/ do click_link "raw" end -Given /^I visit blob file from repo$/ do - visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) -end - Then /^I should see raw file content$/ do page.source.should == ValidCommit::BLOB_FILE end diff --git a/features/step_definitions/project/project_commits_steps.rb b/features/step_definitions/project/project_commits_steps.rb index 35fcb4d1..7f20ade4 100644 --- a/features/step_definitions/project/project_commits_steps.rb +++ b/features/step_definitions/project/project_commits_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit project commits page$/ do - visit project_commits_path(@project) -end - Then /^I see project commits$/ do current_path.should == project_commits_path(@project) @@ -23,19 +19,11 @@ Then /^I see commits atom feed$/ do page.body.should have_selector("entry summary", :text => commit.description) end -Given /^I click on commit link$/ do - visit project_commit_path(@project, ValidCommit::ID) -end - Then /^I see commit info$/ do page.should have_content ValidCommit::MESSAGE page.should have_content "Showing 1 changed file" end -Given /^I visit compare refs page$/ do - visit compare_project_commits_path(@project) -end - Given /^I fill compare fields with refs$/ do fill_in "from", :with => "master" fill_in "to", :with => "stable" @@ -48,18 +36,6 @@ Given /^I see compared refs$/ do page.should have_content "Showing 73 changed files" end -Given /^I visit project branches page$/ do - visit branches_project_repository_path(@project) -end - -Given /^I visit project commit page$/ do - visit project_commit_path(@project, ValidCommit::ID) -end - -Given /^I visit project tags page$/ do - visit tags_project_repository_path(@project) -end - Then /^I should see "(.*?)" recent branches list$/ do |arg1| page.should have_content("Branches") page.should have_content("master") @@ -76,7 +52,7 @@ Then /^I should see "(.*?)" all tags list$/ do |arg1| end Then /^I should see "(.*?)" protected branches list$/ do |arg1| - within "table" do + within "table" do page.should have_content "stable" page.should_not have_content "master" end diff --git a/features/step_definitions/project/project_issues_steps.rb b/features/step_definitions/project/project_issues_steps.rb index 27de03d5..e46c1f42 100644 --- a/features/step_definitions/project/project_issues_steps.rb +++ b/features/step_definitions/project/project_issues_steps.rb @@ -8,16 +8,12 @@ Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2| Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true) end -Given /^I visit project "(.*?)" issues page$/ do |arg1| - visit project_issues_path(Project.find_by_name(arg1)) -end - Given /^I should see "(.*?)" in issues$/ do |arg1| - page.should have_content arg1 + page.should have_content arg1 end Given /^I should not see "(.*?)" in issues$/ do |arg1| - page.should_not have_content arg1 + page.should_not have_content arg1 end Then /^I should see issue "(.*?)"$/ do |arg1| @@ -27,11 +23,6 @@ Then /^I should see issue "(.*?)"$/ do |arg1| page.should have_content issue.project.name end -Given /^I visit issue page "(.*?)"$/ do |arg1| - issue = Issue.find_by_title(arg1) - visit project_issue_path(issue.project, issue) -end - Given /^I submit new issue "(.*?)"$/ do |arg1| fill_in "issue_title", with: arg1 click_button "Submit new issue" @@ -51,7 +42,16 @@ Given /^I visit project "(.*?)" labels page$/ do |arg1| end Then /^I should see label "(.*?)"$/ do |arg1| - within ".labels-table" do + within ".labels-table" do page.should have_content arg1 end end + +Given /^I fill in issue search with "(.*?)"$/ do |arg1| + # Because fill_in, with: "" triggers nothing + # we need to trigger a keyup event + if arg1 == '' + page.execute_script("$('.issue_search').val('').keyup();"); + end + fill_in 'issue_search', with: arg1 +end diff --git a/features/step_definitions/project/project_merge_requests_steps.rb b/features/step_definitions/project/project_merge_requests_steps.rb index 2bdb967d..fddb18ad 100644 --- a/features/step_definitions/project/project_merge_requests_steps.rb +++ b/features/step_definitions/project/project_merge_requests_steps.rb @@ -8,21 +8,17 @@ Given /^project "(.*?)" have "(.*?)" closed merge request$/ do |arg1, arg2| Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true) end -Given /^I visit project "(.*?)" merge requests page$/ do |arg1| - visit project_merge_requests_path(Project.find_by_name(arg1)) -end - Then /^I should see "(.*?)" in merge requests$/ do |arg1| - page.should have_content arg1 + page.should have_content arg1 end Then /^I should not see "(.*?)" in merge requests$/ do |arg1| - page.should_not have_content arg1 + page.should_not have_content arg1 end Then /^I should see merge request "(.*?)"$/ do |arg1| merge_request = MergeRequest.find_by_title(arg1) - page.should have_content(merge_request.title[0..10]) + page.should have_content(merge_request.title[0..10]) page.should have_content(merge_request.target_branch) page.should have_content(merge_request.source_branch) end @@ -34,11 +30,6 @@ Given /^I submit new merge request "(.*?)"$/ do |arg1| click_button "Save" end -Given /^I visit merge request page "(.*?)"$/ do |arg1| - mr = MergeRequest.find_by_title(arg1) - visit project_merge_request_path(mr.project, mr) -end - Then /^I should see closed merge request "(.*?)"$/ do |arg1| mr = MergeRequest.find_by_title(arg1) mr.closed.should be_true diff --git a/features/step_definitions/project/project_milestones_steps.rb b/features/step_definitions/project/project_milestones_steps.rb index 6749773e..936c52df 100644 --- a/features/step_definitions/project/project_milestones_steps.rb +++ b/features/step_definitions/project/project_milestones_steps.rb @@ -12,11 +12,6 @@ Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2| end end -Given /^I visit project "(.*?)" milestones page$/ do |arg1| - @project = Project.find_by_name(arg1) - visit project_milestones_path(@project) -end - Then /^I should see active milestones$/ do milestone = @project.milestones.first page.should have_content(milestone.title[0..10]) diff --git a/features/step_definitions/project/project_team_steps.rb b/features/step_definitions/project/project_team_steps.rb index f0bab29a..0979a6ea 100644 --- a/features/step_definitions/project/project_team_steps.rb +++ b/features/step_definitions/project/project_team_steps.rb @@ -8,10 +8,6 @@ Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2| project.add_access(user, :write) end -Given /^I visit project "(.*?)" team page$/ do |arg1| - visit team_project_path(Project.find_by_name(arg1)) -end - Then /^I should be able to see myself in team$/ do page.should have_content(@user.name) page.should have_content(@user.email) @@ -23,13 +19,9 @@ Then /^I should see "(.*?)" in team list$/ do |arg1| page.should have_content(user.email) end -Given /^I click link "(.*?)"$/ do |arg1| - click_link arg1 -end - Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2| user = User.find_by_name(arg1) - within "#new_team_member" do + within "#new_team_member" do select user.name, :from => "team_member_user_id" select arg2, :from => "team_member_project_access" end @@ -44,7 +36,7 @@ end Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2| user = User.find_by_name(arg1) - within ".user_#{user.id}" do + within ".user_#{user.id}" do select arg2, :from => "team_member_project_access" end end diff --git a/features/step_definitions/project/project_wiki_steps.rb b/features/step_definitions/project/project_wiki_steps.rb index 10de38d9..31fc050a 100644 --- a/features/step_definitions/project/project_wiki_steps.rb +++ b/features/step_definitions/project/project_wiki_steps.rb @@ -1,7 +1,3 @@ -Given /^I visit project wiki page$/ do - visit project_wiki_path(@project, :index) -end - Given /^I create Wiki page$/ do fill_in "Title", :with => 'Test title' fill_in "Content", :with => '[link test](test)' diff --git a/features/step_definitions/project/projects_steps.rb b/features/step_definitions/project/projects_steps.rb index d981e1f3..d22b805f 100644 --- a/features/step_definitions/project/projects_steps.rb +++ b/features/step_definitions/project/projects_steps.rb @@ -1,9 +1,3 @@ -include LoginHelpers - -Given /^I signin as a user$/ do - login_as :user -end - When /^I visit new project page$/ do visit new_project_path end @@ -65,10 +59,6 @@ Given /^I visit project "(.*?)" network page$/ do |arg1| visit graph_project_path(project) end -Given /^show me page$/ do - save_and_open_page -end - Given /^page should have network graph$/ do page.should have_content "Project Network Graph" within ".graph" do diff --git a/features/step_definitions/visit_steps.rb b/features/step_definitions/visit_steps.rb new file mode 100644 index 00000000..35fc6d44 --- /dev/null +++ b/features/step_definitions/visit_steps.rb @@ -0,0 +1,91 @@ +Given /^I visit project "(.*?)" issues page$/ do |arg1| + visit project_issues_path(Project.find_by_name(arg1)) +end + +Given /^I visit issue page "(.*?)"$/ do |arg1| + issue = Issue.find_by_title(arg1) + visit project_issue_path(issue.project, issue) +end + +Given /^I visit project "(.*?)" merge requests page$/ do |arg1| + visit project_merge_requests_path(Project.find_by_name(arg1)) +end + +Given /^I visit merge request page "(.*?)"$/ do |arg1| + mr = MergeRequest.find_by_title(arg1) + visit project_merge_request_path(mr.project, mr) +end + +Given /^I visit project "(.*?)" milestones page$/ do |arg1| + @project = Project.find_by_name(arg1) + visit project_milestones_path(@project) +end + +Given /^I visit project commits page$/ do + visit project_commits_path(@project) +end + +Given /^I visit compare refs page$/ do + visit compare_project_commits_path(@project) +end + +Given /^I visit project branches page$/ do + visit branches_project_repository_path(@project) +end + +Given /^I visit project commit page$/ do + visit project_commit_path(@project, ValidCommit::ID) +end + +Given /^I visit project tags page$/ do + visit tags_project_repository_path(@project) +end + +Given /^I click on commit link$/ do + visit project_commit_path(@project, ValidCommit::ID) +end + +Given /^I visit project source page$/ do + visit tree_project_ref_path(@project, @project.root_ref) +end + +Given /^I visit project source page for "(.*?)"$/ do |arg1| + visit tree_project_ref_path(@project, arg1) +end + +Given /^I visit blob file from repo$/ do + visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) +end + +Given /^I visit project "(.*?)" team page$/ do |arg1| + visit team_project_path(Project.find_by_name(arg1)) +end + +Given /^I visit project wiki page$/ do + visit project_wiki_path(@project, :index) +end + +Given /^I visit profile page$/ do + visit profile_path +end + +Given /^I visit profile token page$/ do + visit profile_token_path +end + +Given /^I visit profile password page$/ do + visit profile_password_path +end + +Given /^I visit dashboard page$/ do + visit dashboard_path +end + +Given /^I visit dashboard issues page$/ do + visit dashboard_issues_path +end + +Given /^I visit dashboard merge requests page$/ do + visit dashboard_merge_requests_path +end + diff --git a/spec/models/issue_spec.rb b/spec/models/issue_spec.rb index 69829a4d..ca6307e7 100644 --- a/spec/models/issue_spec.rb +++ b/spec/models/issue_spec.rb @@ -7,6 +7,7 @@ describe Issue do describe "Validation" do it { should ensure_length_of(:description).is_within(0..2000) } + it { should ensure_inclusion_of(:closed).in_array([true, false]) } end describe 'modules' do diff --git a/spec/models/milestone_spec.rb b/spec/models/milestone_spec.rb index fa15fc8f..f0f0f883 100644 --- a/spec/models/milestone_spec.rb +++ b/spec/models/milestone_spec.rb @@ -9,6 +9,7 @@ describe Milestone do describe "Validation" do it { should validate_presence_of(:title) } it { should validate_presence_of(:project_id) } + it { should ensure_inclusion_of(:closed).in_array([true, false]) } end let(:milestone) { Factory :milestone } diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index 5add7ff8..756f69de 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -37,6 +37,10 @@ describe Project do # TODO: Formats it { should validate_presence_of(:owner) } + it { should ensure_inclusion_of(:issues_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } + it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) } it "should not allow new projects beyond user limits" do project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1)) @@ -239,7 +243,7 @@ describe Project do end end - describe :update_merge_requests do + describe :update_merge_requests do let(:project) { Factory :project } before do @@ -259,7 +263,7 @@ describe Project do @merge_request.closed.should be_true end - it "should update merge request commits with new one if pushed to source branch" do + it "should update merge request commits with new one if pushed to source branch" do @merge_request.last_commit.should == nil project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/master", @key.user) @merge_request.reload