Commit 562af7a6a2d12b6bdab25d5a71c05672a1b5b888
Exists in
master
and in
4 other branches
Merge branch 'master' into normalize_capitalization
Showing
30 changed files
with
235 additions
and
170 deletions
Show diff stats
Gemfile.lock
app/assets/stylesheets/gitlab_bootstrap/buttons.scss
1 | 1 | .btn { |
2 | - background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5)); | |
3 | - background-image: -webkit-linear-gradient(#f7f7f7 7.6%, #d5d5d5); | |
4 | - background-image: -moz-linear-gradient(#f7f7f7 7.6%, #d5d5d5); | |
5 | - background-image: -o-linear-gradient(#f7f7f7 7.6%, #d5d5d5); | |
2 | + @include bg-gradient(#f7f7f7, #d5d5d5); | |
6 | 3 | border-color:#aaa; |
7 | 4 | &:hover { |
8 | 5 | @include bg-gray-gradient; |
... | ... | @@ -12,10 +9,8 @@ |
12 | 9 | |
13 | 10 | &.primary { |
14 | 11 | background:#2a79A3; |
12 | + @include bg-gradient(#47A7b7, #2585b5); | |
15 | 13 | border-color: #2A79A3; |
16 | - background-image: -webkit-linear-gradient(#47A7b7 7.6%, #2585b5); | |
17 | - background-image: -moz-linear-gradient(#47A7b7 7.6%, #2585b5); | |
18 | - background-image: -o-linear-gradient(#47A7b7 7.6%, #2585b5); | |
19 | 14 | color:#fff; |
20 | 15 | text-shadow: 0 1px 1px #268; |
21 | 16 | &:hover { |
... | ... | @@ -30,16 +25,11 @@ |
30 | 25 | } |
31 | 26 | |
32 | 27 | &.success { |
33 | - border-color: #4A4; | |
34 | - background-image: -webkit-linear-gradient(#82D482 7.6%, #22B442); | |
35 | - background-image: -moz-linear-gradient(#82D482 7.6%, #22B442); | |
36 | - background-image: -o-linear-gradient(#82D482 7.6%, #22B442); | |
37 | - color: #fff; | |
38 | - text-shadow: 0 1px 1px #141; | |
28 | + @extend .btn-success; | |
39 | 29 | |
40 | 30 | &:hover { |
41 | - background: #6C6; | |
42 | - color: #fff; | |
31 | + @extend .btn-success; | |
32 | + background: #51a351; | |
43 | 33 | } |
44 | 34 | |
45 | 35 | &.disabled { |
... | ... | @@ -62,10 +52,8 @@ |
62 | 52 | padding-right:30px; |
63 | 53 | } |
64 | 54 | |
65 | - &.danger, | |
66 | - &.btn-danger { | |
67 | - color:#fff; | |
68 | - background: #DA4E49; | |
55 | + &.danger { | |
56 | + @extend .btn-danger; | |
69 | 57 | border-color: #BD362F; |
70 | 58 | |
71 | 59 | &:hover { | ... | ... |
app/assets/stylesheets/gitlab_bootstrap/files.scss
app/assets/stylesheets/main.scss
... | ... | @@ -56,6 +56,13 @@ $hover: #fdf5d9; |
56 | 56 | border-radius: $radius; |
57 | 57 | } |
58 | 58 | |
59 | +@mixin bg-gradient($from, $to) { | |
60 | + background-image: -webkit-gradient(linear, 0 0, 0 100%, from($from), to($to)); | |
61 | + background-image: -webkit-linear-gradient($from, $to); | |
62 | + background-image: -moz-linear-gradient($from, $to); | |
63 | + background-image: -o-linear-gradient($from, $to); | |
64 | +} | |
65 | + | |
59 | 66 | @mixin bg-gray-gradient { |
60 | 67 | background:#eee; |
61 | 68 | background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf)); | ... | ... |
app/assets/stylesheets/sections/header.scss
... | ... | @@ -22,7 +22,7 @@ header { |
22 | 22 | * |
23 | 23 | */ |
24 | 24 | .app_logo { |
25 | - width:230px; | |
25 | + width:200px; | |
26 | 26 | float:left; |
27 | 27 | position:relative; |
28 | 28 | top:-5px; |
... | ... | @@ -31,7 +31,7 @@ header { |
31 | 31 | |
32 | 32 | h1 { |
33 | 33 | padding-top: 5px; |
34 | - width:102px; | |
34 | + width:90px; | |
35 | 35 | background: url('logo_dark.png') no-repeat 0px -3px; |
36 | 36 | float:left; |
37 | 37 | margin-left:5px; | ... | ... |
app/assets/stylesheets/sections/nav.scss
... | ... | @@ -2,7 +2,7 @@ |
2 | 2 | * Main Menu of Application |
3 | 3 | * |
4 | 4 | */ |
5 | -ul.main_menu { | |
5 | +ul.main_menu { | |
6 | 6 | border-radius: 4px; |
7 | 7 | margin: auto; |
8 | 8 | margin:30px 0; |
... | ... | @@ -12,7 +12,7 @@ ul.main_menu { |
12 | 12 | position:relative; |
13 | 13 | overflow:hidden; |
14 | 14 | @include shade; |
15 | - .count { | |
15 | + .count { | |
16 | 16 | position: relative; |
17 | 17 | top: -1px; |
18 | 18 | display: inline-block; |
... | ... | @@ -29,12 +29,12 @@ ul.main_menu { |
29 | 29 | border-radius: 8px; |
30 | 30 | -moz-border-radius: 8px; |
31 | 31 | } |
32 | - .label { | |
32 | + .label { | |
33 | 33 | background:$hover; |
34 | 34 | text-shadow:none; |
35 | 35 | color:$style_color; |
36 | 36 | } |
37 | - li { | |
37 | + li { | |
38 | 38 | list-style-type: none; |
39 | 39 | margin: 0; |
40 | 40 | display: table-cell; |
... | ... | @@ -43,7 +43,7 @@ ul.main_menu { |
43 | 43 | border-left: 1px solid #EEE; |
44 | 44 | border-bottom:2px solid #CFCFCF; |
45 | 45 | |
46 | - &:first-child{ | |
46 | + &:first-child{ | |
47 | 47 | -webkit-border-top-left-radius: 4px; |
48 | 48 | -webkit-border-bottom-left-radius: 4px; |
49 | 49 | -moz-border-radius-topleft: 4px; |
... | ... | @@ -53,31 +53,31 @@ ul.main_menu { |
53 | 53 | border-left: 0; |
54 | 54 | } |
55 | 55 | |
56 | - &.current { | |
56 | + &.current { | |
57 | 57 | background-color:#D5D5D5; |
58 | - border-bottom: 2px solid $style_color; | |
58 | + border-bottom: 1px solid #AAA; | |
59 | 59 | border-right: 1px solid #BBB; |
60 | 60 | border-left: 1px solid #BBB; |
61 | 61 | border-radius: 0 0 1px 1px; |
62 | - &:first-child{ | |
62 | + &:first-child{ | |
63 | 63 | border-bottom:none; |
64 | 64 | border-left:none; |
65 | 65 | } |
66 | 66 | } |
67 | 67 | |
68 | - &.home { | |
69 | - a { | |
68 | + &.home { | |
69 | + a { | |
70 | 70 | background: url(home_icon.PNG) no-repeat center center; |
71 | 71 | text-indent:-9999px; |
72 | 72 | min-width:20px; |
73 | - img { | |
73 | + img { | |
74 | 74 | position:relative; |
75 | 75 | top:4px; |
76 | 76 | } |
77 | 77 | } |
78 | 78 | } |
79 | 79 | } |
80 | - a { | |
80 | + a { | |
81 | 81 | display: block; |
82 | 82 | text-align: center; |
83 | 83 | font-weight:bold; | ... | ... |
app/models/project.rb
... | ... | @@ -104,6 +104,8 @@ class Project < ActiveRecord::Base |
104 | 104 | length: { within: 1..255 } |
105 | 105 | |
106 | 106 | validates :owner, presence: true |
107 | + validates :issues_enabled, :wall_enabled, :merge_requests_enabled, | |
108 | + :wiki_enabled, inclusion: { in: [true, false] } | |
107 | 109 | validate :check_limit |
108 | 110 | validate :repo_name |
109 | 111 | ... | ... |
app/roles/issue_commonality.rb
app/views/deploy_keys/_form.html.haml
... | ... | @@ -11,8 +11,13 @@ |
11 | 11 | .input= f.text_field :title |
12 | 12 | .clearfix |
13 | 13 | = f.label :key |
14 | - .input= f.text_area :key, class: "xlarge" | |
14 | + .input | |
15 | + = f.text_area :key, class: [:xxlarge, :thin_area] | |
16 | + %p.hint | |
17 | + Paste a machine public key here. Read more about how generate it | |
18 | + = link_to "here", help_ssh_path | |
19 | + | |
15 | 20 | .actions |
16 | - = f.submit 'Save', class: "primary btn" | |
17 | - = link_to "Cancel", project_deploy_keys_path(@project), class: "btn" | |
21 | + = f.submit 'Save', class: "save-btn btn" | |
22 | + = link_to "Cancel", project_deploy_keys_path(@project), class: "btn cancel-btn" | |
18 | 23 | ... | ... |
app/views/deploy_keys/index.html.haml
1 | 1 | = render "repositories/head" |
2 | -- if can? current_user, :admin_project, @project | |
3 | - .alert-message.block-message | |
4 | - Deploy keys allow read-only access to repository. | |
2 | + | |
3 | +%p.slead | |
4 | + Deploy keys allow read-only access to repository. It matches perfectly for CI, staging or production servers. | |
5 | + | |
6 | + - if can? current_user, :admin_project, @project | |
5 | 7 | = link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do |
6 | 8 | Add Deploy Key |
7 | - | |
8 | 9 | - if @keys.any? |
9 | 10 | %table |
11 | + %thead | |
12 | + %tr | |
13 | + %th Keys | |
14 | + %th | |
15 | + %th | |
10 | 16 | - @keys.each do |key| |
11 | 17 | = render(partial: 'show', locals: {key: key}) | ... | ... |
app/views/deploy_keys/new.html.haml
app/views/deploy_keys/show.html.haml
1 | 1 | = render "repositories/head" |
2 | -%h3= @key.title | |
2 | +%h3.page_title | |
3 | + Deploy key: | |
4 | + = @key.title | |
5 | + %small | |
6 | + created at | |
7 | + = @key.created_at.stamp("Aug 21, 2011") | |
8 | +.back_link | |
9 | + = link_to project_deploy_keys_path(@project) do | |
10 | + ← To keys list | |
3 | 11 | %hr |
4 | 12 | %pre= @key.key |
5 | -.actions | |
13 | +.right | |
6 | 14 | = link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key" |
7 | - .clear | ... | ... |
app/views/keys/show.html.haml
app/views/team_members/show.html.haml
... | ... | @@ -3,7 +3,7 @@ |
3 | 3 | |
4 | 4 | .team_member_show |
5 | 5 | - if can? current_user, :admin_project, @project |
6 | - = 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" | |
6 | + = 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" | |
7 | 7 | .profile_avatar_holder |
8 | 8 | = image_tag gravatar_icon(user.email, 60), class: "borders" |
9 | 9 | %h3 | ... | ... |
features/projects/issues/issues.feature
... | ... | @@ -4,7 +4,7 @@ Feature: Issues |
4 | 4 | And I own project "Shop" |
5 | 5 | And project "Shop" have "Release 0.4" open issue |
6 | 6 | And project "Shop" have "Release 0.3" closed issue |
7 | - And I visit project "Shop" issues page | |
7 | + And I visit project "Shop" issues page | |
8 | 8 | |
9 | 9 | Scenario: I should see open issues |
10 | 10 | Given I should see "Release 0.4" in issues |
... | ... | @@ -36,3 +36,31 @@ Feature: Issues |
36 | 36 | Given I visit issue page "Release 0.4" |
37 | 37 | And I leave a comment like "XML attached" |
38 | 38 | Then I should see comment "XML attached" |
39 | + | |
40 | + @javascript | |
41 | + Scenario: I search issue | |
42 | + Given I fill in issue search with "Release" | |
43 | + Then I should see "Release 0.4" in issues | |
44 | + And I should not see "Release 0.3" in issues | |
45 | + | |
46 | + @javascript | |
47 | + Scenario: I search issue that not exist | |
48 | + Given I fill in issue search with "Bug" | |
49 | + Then I should not see "Release 0.4" in issues | |
50 | + And I should not see "Release 0.3" in issues | |
51 | + | |
52 | + | |
53 | + @javascript | |
54 | + Scenario: I search all issues | |
55 | + Given I click link "All" | |
56 | + And I fill in issue search with "0.3" | |
57 | + Then I should see "Release 0.3" in issues | |
58 | + And I should not see "Release 0.4" in issues | |
59 | + | |
60 | + @javascript | |
61 | + Scenario: I clear search | |
62 | + Given I click link "All" | |
63 | + And I fill in issue search with "Something" | |
64 | + And I fill in issue search with "" | |
65 | + Then I should see "Release 0.4" in issues | |
66 | + And I should see "Release 0.3" in issues | ... | ... |
... | ... | @@ -0,0 +1,21 @@ |
1 | +include LoginHelpers | |
2 | + | |
3 | +Given /^I signin as a user$/ do | |
4 | + login_as :user | |
5 | +end | |
6 | + | |
7 | +When /^I click link "(.*?)"$/ do |link| | |
8 | + click_link link | |
9 | +end | |
10 | + | |
11 | +When /^I click button "(.*?)"$/ do |button| | |
12 | + click_button button | |
13 | +end | |
14 | + | |
15 | +When /^I fill in "(.*?)" with "(.*?)"$/ do |field, value| | |
16 | + fill_in field, :with => value | |
17 | +end | |
18 | + | |
19 | +Given /^show me page$/ do | |
20 | + save_and_open_page | |
21 | +end | ... | ... |
features/step_definitions/dashboard_steps.rb
1 | -Given /^I visit dashboard page$/ do | |
2 | - visit dashboard_path | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see "(.*?)" link$/ do |arg1| |
6 | 2 | page.should have_link(arg1) |
7 | 3 | end |
... | ... | @@ -51,10 +47,10 @@ Then /^I click "(.*?)" link$/ do |arg1| |
51 | 47 | end |
52 | 48 | |
53 | 49 | Then /^I see prefilled new Merge Request page$/ do |
54 | - current_path.should == new_project_merge_request_path(@project) | |
55 | - find("#merge_request_source_branch").value.should == "new_design" | |
56 | - find("#merge_request_target_branch").value.should == "master" | |
57 | - find("#merge_request_title").value.should == "New Design" | |
50 | + current_path.should == new_project_merge_request_path(@project) | |
51 | + find("#merge_request_source_branch").value.should == "new_design" | |
52 | + find("#merge_request_target_branch").value.should == "master" | |
53 | + find("#merge_request_title").value.should == "New Design" | |
58 | 54 | end |
59 | 55 | |
60 | 56 | Given /^I visit dashboard search page$/ do |
... | ... | @@ -66,10 +62,6 @@ Given /^I search for "(.*?)"$/ do |arg1| |
66 | 62 | click_button "Search" |
67 | 63 | end |
68 | 64 | |
69 | -Given /^I visit dashboard issues page$/ do | |
70 | - visit dashboard_issues_path | |
71 | -end | |
72 | - | |
73 | 65 | Then /^I should see issues assigned to me$/ do |
74 | 66 | issues = @user.issues |
75 | 67 | issues.each do |issue| |
... | ... | @@ -78,10 +70,6 @@ Then /^I should see issues assigned to me$/ do |
78 | 70 | end |
79 | 71 | end |
80 | 72 | |
81 | -Given /^I visit dashboard merge requests page$/ do | |
82 | - visit dashboard_merge_requests_path | |
83 | -end | |
84 | - | |
85 | 73 | Then /^I should see my merge requests$/ do |
86 | 74 | merge_requests = @user.merge_requests |
87 | 75 | merge_requests.each do |mr| | ... | ... |
features/step_definitions/profile/profile_steps.rb
1 | -Given /^I visit profile page$/ do | |
2 | - visit profile_path | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see my profile info$/ do |
6 | 2 | page.should have_content "Profile" |
7 | 3 | page.should have_content @user.name |
8 | 4 | page.should have_content @user.email |
9 | 5 | end |
10 | 6 | |
11 | -Given /^I visit profile password page$/ do | |
12 | - visit profile_password_path | |
13 | -end | |
14 | - | |
15 | 7 | Then /^I change my password$/ do |
16 | 8 | fill_in "user_password", :with => "222333" |
17 | 9 | fill_in "user_password_confirmation", :with => "222333" |
... | ... | @@ -22,10 +14,6 @@ Then /^I should be redirected to sign in page$/ do |
22 | 14 | current_path.should == new_user_session_path |
23 | 15 | end |
24 | 16 | |
25 | -Given /^I visit profile token page$/ do | |
26 | - visit profile_token_path | |
27 | -end | |
28 | - | |
29 | 17 | Then /^I reset my token$/ do |
30 | 18 | @old_token = @user.private_token |
31 | 19 | click_button "Reset" | ... | ... |
features/step_definitions/project/browse_code_steps.rb
1 | -Given /^I visit project source page$/ do | |
2 | - visit tree_project_ref_path(@project, @project.root_ref) | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I should see files from repository$/ do |
6 | 2 | page.should have_content("app") |
7 | 3 | page.should have_content("History") |
8 | 4 | page.should have_content("Gemfile") |
9 | 5 | end |
10 | 6 | |
11 | -Given /^I visit project source page for "(.*?)"$/ do |arg1| | |
12 | - visit tree_project_ref_path(@project, arg1) | |
13 | -end | |
14 | - | |
15 | 7 | Then /^I should see files from repository for "(.*?)"$/ do |arg1| |
16 | 8 | current_path.should == tree_project_ref_path(@project, arg1) |
17 | 9 | page.should have_content("app") |
... | ... | @@ -31,10 +23,6 @@ Given /^I click on raw button$/ do |
31 | 23 | click_link "raw" |
32 | 24 | end |
33 | 25 | |
34 | -Given /^I visit blob file from repo$/ do | |
35 | - visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) | |
36 | -end | |
37 | - | |
38 | 26 | Then /^I should see raw file content$/ do |
39 | 27 | page.source.should == ValidCommit::BLOB_FILE |
40 | 28 | end | ... | ... |
features/step_definitions/project/project_commits_steps.rb
1 | -Given /^I visit project commits page$/ do | |
2 | - visit project_commits_path(@project) | |
3 | -end | |
4 | - | |
5 | 1 | Then /^I see project commits$/ do |
6 | 2 | current_path.should == project_commits_path(@project) |
7 | 3 | |
... | ... | @@ -23,19 +19,11 @@ Then /^I see commits atom feed$/ do |
23 | 19 | page.body.should have_selector("entry summary", :text => commit.description) |
24 | 20 | end |
25 | 21 | |
26 | -Given /^I click on commit link$/ do | |
27 | - visit project_commit_path(@project, ValidCommit::ID) | |
28 | -end | |
29 | - | |
30 | 22 | Then /^I see commit info$/ do |
31 | 23 | page.should have_content ValidCommit::MESSAGE |
32 | 24 | page.should have_content "Showing 1 changed file" |
33 | 25 | end |
34 | 26 | |
35 | -Given /^I visit compare refs page$/ do | |
36 | - visit compare_project_commits_path(@project) | |
37 | -end | |
38 | - | |
39 | 27 | Given /^I fill compare fields with refs$/ do |
40 | 28 | fill_in "from", :with => "master" |
41 | 29 | fill_in "to", :with => "stable" |
... | ... | @@ -48,18 +36,6 @@ Given /^I see compared refs$/ do |
48 | 36 | page.should have_content "Showing 73 changed files" |
49 | 37 | end |
50 | 38 | |
51 | -Given /^I visit project branches page$/ do | |
52 | - visit branches_project_repository_path(@project) | |
53 | -end | |
54 | - | |
55 | -Given /^I visit project commit page$/ do | |
56 | - visit project_commit_path(@project, ValidCommit::ID) | |
57 | -end | |
58 | - | |
59 | -Given /^I visit project tags page$/ do | |
60 | - visit tags_project_repository_path(@project) | |
61 | -end | |
62 | - | |
63 | 39 | Then /^I should see "(.*?)" recent branches list$/ do |arg1| |
64 | 40 | page.should have_content("Branches") |
65 | 41 | page.should have_content("master") |
... | ... | @@ -76,7 +52,7 @@ Then /^I should see "(.*?)" all tags list$/ do |arg1| |
76 | 52 | end |
77 | 53 | |
78 | 54 | Then /^I should see "(.*?)" protected branches list$/ do |arg1| |
79 | - within "table" do | |
55 | + within "table" do | |
80 | 56 | page.should have_content "stable" |
81 | 57 | page.should_not have_content "master" |
82 | 58 | end | ... | ... |
features/step_definitions/project/project_issues_steps.rb
... | ... | @@ -8,16 +8,12 @@ Given /^project "(.*?)" have "(.*?)" closed issue$/ do |arg1, arg2| |
8 | 8 | Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" issues page$/ do |arg1| | |
12 | - visit project_issues_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Given /^I should see "(.*?)" in issues$/ do |arg1| |
16 | - page.should have_content arg1 | |
12 | + page.should have_content arg1 | |
17 | 13 | end |
18 | 14 | |
19 | 15 | Given /^I should not see "(.*?)" in issues$/ do |arg1| |
20 | - page.should_not have_content arg1 | |
16 | + page.should_not have_content arg1 | |
21 | 17 | end |
22 | 18 | |
23 | 19 | Then /^I should see issue "(.*?)"$/ do |arg1| |
... | ... | @@ -27,11 +23,6 @@ Then /^I should see issue "(.*?)"$/ do |arg1| |
27 | 23 | page.should have_content issue.project.name |
28 | 24 | end |
29 | 25 | |
30 | -Given /^I visit issue page "(.*?)"$/ do |arg1| | |
31 | - issue = Issue.find_by_title(arg1) | |
32 | - visit project_issue_path(issue.project, issue) | |
33 | -end | |
34 | - | |
35 | 26 | Given /^I submit new issue "(.*?)"$/ do |arg1| |
36 | 27 | fill_in "issue_title", with: arg1 |
37 | 28 | click_button "Submit new issue" |
... | ... | @@ -51,7 +42,16 @@ Given /^I visit project "(.*?)" labels page$/ do |arg1| |
51 | 42 | end |
52 | 43 | |
53 | 44 | Then /^I should see label "(.*?)"$/ do |arg1| |
54 | - within ".labels-table" do | |
45 | + within ".labels-table" do | |
55 | 46 | page.should have_content arg1 |
56 | 47 | end |
57 | 48 | end |
49 | + | |
50 | +Given /^I fill in issue search with "(.*?)"$/ do |arg1| | |
51 | + # Because fill_in, with: "" triggers nothing | |
52 | + # we need to trigger a keyup event | |
53 | + if arg1 == '' | |
54 | + page.execute_script("$('.issue_search').val('').keyup();"); | |
55 | + end | |
56 | + fill_in 'issue_search', with: arg1 | |
57 | +end | ... | ... |
features/step_definitions/project/project_merge_requests_steps.rb
... | ... | @@ -8,21 +8,17 @@ Given /^project "(.*?)" have "(.*?)" closed merge request$/ do |arg1, arg2| |
8 | 8 | Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" merge requests page$/ do |arg1| | |
12 | - visit project_merge_requests_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Then /^I should see "(.*?)" in merge requests$/ do |arg1| |
16 | - page.should have_content arg1 | |
12 | + page.should have_content arg1 | |
17 | 13 | end |
18 | 14 | |
19 | 15 | Then /^I should not see "(.*?)" in merge requests$/ do |arg1| |
20 | - page.should_not have_content arg1 | |
16 | + page.should_not have_content arg1 | |
21 | 17 | end |
22 | 18 | |
23 | 19 | Then /^I should see merge request "(.*?)"$/ do |arg1| |
24 | 20 | merge_request = MergeRequest.find_by_title(arg1) |
25 | - page.should have_content(merge_request.title[0..10]) | |
21 | + page.should have_content(merge_request.title[0..10]) | |
26 | 22 | page.should have_content(merge_request.target_branch) |
27 | 23 | page.should have_content(merge_request.source_branch) |
28 | 24 | end |
... | ... | @@ -34,11 +30,6 @@ Given /^I submit new merge request "(.*?)"$/ do |arg1| |
34 | 30 | click_button "Save" |
35 | 31 | end |
36 | 32 | |
37 | -Given /^I visit merge request page "(.*?)"$/ do |arg1| | |
38 | - mr = MergeRequest.find_by_title(arg1) | |
39 | - visit project_merge_request_path(mr.project, mr) | |
40 | -end | |
41 | - | |
42 | 33 | Then /^I should see closed merge request "(.*?)"$/ do |arg1| |
43 | 34 | mr = MergeRequest.find_by_title(arg1) |
44 | 35 | mr.closed.should be_true | ... | ... |
features/step_definitions/project/project_milestones_steps.rb
... | ... | @@ -12,11 +12,6 @@ Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2| |
12 | 12 | end |
13 | 13 | end |
14 | 14 | |
15 | -Given /^I visit project "(.*?)" milestones page$/ do |arg1| | |
16 | - @project = Project.find_by_name(arg1) | |
17 | - visit project_milestones_path(@project) | |
18 | -end | |
19 | - | |
20 | 15 | Then /^I should see active milestones$/ do |
21 | 16 | milestone = @project.milestones.first |
22 | 17 | page.should have_content(milestone.title[0..10]) | ... | ... |
features/step_definitions/project/project_team_steps.rb
... | ... | @@ -8,10 +8,6 @@ Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2| |
8 | 8 | project.add_access(user, :write) |
9 | 9 | end |
10 | 10 | |
11 | -Given /^I visit project "(.*?)" team page$/ do |arg1| | |
12 | - visit team_project_path(Project.find_by_name(arg1)) | |
13 | -end | |
14 | - | |
15 | 11 | Then /^I should be able to see myself in team$/ do |
16 | 12 | page.should have_content(@user.name) |
17 | 13 | page.should have_content(@user.email) |
... | ... | @@ -23,13 +19,9 @@ Then /^I should see "(.*?)" in team list$/ do |arg1| |
23 | 19 | page.should have_content(user.email) |
24 | 20 | end |
25 | 21 | |
26 | -Given /^I click link "(.*?)"$/ do |arg1| | |
27 | - click_link arg1 | |
28 | -end | |
29 | - | |
30 | 22 | Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2| |
31 | 23 | user = User.find_by_name(arg1) |
32 | - within "#new_team_member" do | |
24 | + within "#new_team_member" do | |
33 | 25 | select user.name, :from => "team_member_user_id" |
34 | 26 | select arg2, :from => "team_member_project_access" |
35 | 27 | end |
... | ... | @@ -44,7 +36,7 @@ end |
44 | 36 | |
45 | 37 | Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2| |
46 | 38 | user = User.find_by_name(arg1) |
47 | - within ".user_#{user.id}" do | |
39 | + within ".user_#{user.id}" do | |
48 | 40 | select arg2, :from => "team_member_project_access" |
49 | 41 | end |
50 | 42 | end | ... | ... |
features/step_definitions/project/project_wiki_steps.rb
features/step_definitions/project/projects_steps.rb
1 | -include LoginHelpers | |
2 | - | |
3 | -Given /^I signin as a user$/ do | |
4 | - login_as :user | |
5 | -end | |
6 | - | |
7 | 1 | When /^I visit new project page$/ do |
8 | 2 | visit new_project_path |
9 | 3 | end |
... | ... | @@ -65,10 +59,6 @@ Given /^I visit project "(.*?)" network page$/ do |arg1| |
65 | 59 | visit graph_project_path(project) |
66 | 60 | end |
67 | 61 | |
68 | -Given /^show me page$/ do | |
69 | - save_and_open_page | |
70 | -end | |
71 | - | |
72 | 62 | Given /^page should have network graph$/ do |
73 | 63 | page.should have_content "Project Network Graph" |
74 | 64 | within ".graph" do | ... | ... |
... | ... | @@ -0,0 +1,91 @@ |
1 | +Given /^I visit project "(.*?)" issues page$/ do |arg1| | |
2 | + visit project_issues_path(Project.find_by_name(arg1)) | |
3 | +end | |
4 | + | |
5 | +Given /^I visit issue page "(.*?)"$/ do |arg1| | |
6 | + issue = Issue.find_by_title(arg1) | |
7 | + visit project_issue_path(issue.project, issue) | |
8 | +end | |
9 | + | |
10 | +Given /^I visit project "(.*?)" merge requests page$/ do |arg1| | |
11 | + visit project_merge_requests_path(Project.find_by_name(arg1)) | |
12 | +end | |
13 | + | |
14 | +Given /^I visit merge request page "(.*?)"$/ do |arg1| | |
15 | + mr = MergeRequest.find_by_title(arg1) | |
16 | + visit project_merge_request_path(mr.project, mr) | |
17 | +end | |
18 | + | |
19 | +Given /^I visit project "(.*?)" milestones page$/ do |arg1| | |
20 | + @project = Project.find_by_name(arg1) | |
21 | + visit project_milestones_path(@project) | |
22 | +end | |
23 | + | |
24 | +Given /^I visit project commits page$/ do | |
25 | + visit project_commits_path(@project) | |
26 | +end | |
27 | + | |
28 | +Given /^I visit compare refs page$/ do | |
29 | + visit compare_project_commits_path(@project) | |
30 | +end | |
31 | + | |
32 | +Given /^I visit project branches page$/ do | |
33 | + visit branches_project_repository_path(@project) | |
34 | +end | |
35 | + | |
36 | +Given /^I visit project commit page$/ do | |
37 | + visit project_commit_path(@project, ValidCommit::ID) | |
38 | +end | |
39 | + | |
40 | +Given /^I visit project tags page$/ do | |
41 | + visit tags_project_repository_path(@project) | |
42 | +end | |
43 | + | |
44 | +Given /^I click on commit link$/ do | |
45 | + visit project_commit_path(@project, ValidCommit::ID) | |
46 | +end | |
47 | + | |
48 | +Given /^I visit project source page$/ do | |
49 | + visit tree_project_ref_path(@project, @project.root_ref) | |
50 | +end | |
51 | + | |
52 | +Given /^I visit project source page for "(.*?)"$/ do |arg1| | |
53 | + visit tree_project_ref_path(@project, arg1) | |
54 | +end | |
55 | + | |
56 | +Given /^I visit blob file from repo$/ do | |
57 | + visit tree_project_ref_path(@project, ValidCommit::ID, :path => ValidCommit::BLOB_FILE_PATH) | |
58 | +end | |
59 | + | |
60 | +Given /^I visit project "(.*?)" team page$/ do |arg1| | |
61 | + visit team_project_path(Project.find_by_name(arg1)) | |
62 | +end | |
63 | + | |
64 | +Given /^I visit project wiki page$/ do | |
65 | + visit project_wiki_path(@project, :index) | |
66 | +end | |
67 | + | |
68 | +Given /^I visit profile page$/ do | |
69 | + visit profile_path | |
70 | +end | |
71 | + | |
72 | +Given /^I visit profile token page$/ do | |
73 | + visit profile_token_path | |
74 | +end | |
75 | + | |
76 | +Given /^I visit profile password page$/ do | |
77 | + visit profile_password_path | |
78 | +end | |
79 | + | |
80 | +Given /^I visit dashboard page$/ do | |
81 | + visit dashboard_path | |
82 | +end | |
83 | + | |
84 | +Given /^I visit dashboard issues page$/ do | |
85 | + visit dashboard_issues_path | |
86 | +end | |
87 | + | |
88 | +Given /^I visit dashboard merge requests page$/ do | |
89 | + visit dashboard_merge_requests_path | |
90 | +end | |
91 | + | ... | ... |
spec/models/issue_spec.rb
spec/models/milestone_spec.rb
... | ... | @@ -9,6 +9,7 @@ describe Milestone do |
9 | 9 | describe "Validation" do |
10 | 10 | it { should validate_presence_of(:title) } |
11 | 11 | it { should validate_presence_of(:project_id) } |
12 | + it { should ensure_inclusion_of(:closed).in_array([true, false]) } | |
12 | 13 | end |
13 | 14 | |
14 | 15 | let(:milestone) { Factory :milestone } | ... | ... |
spec/models/project_spec.rb
... | ... | @@ -37,6 +37,10 @@ describe Project do |
37 | 37 | # TODO: Formats |
38 | 38 | |
39 | 39 | it { should validate_presence_of(:owner) } |
40 | + it { should ensure_inclusion_of(:issues_enabled).in_array([true, false]) } | |
41 | + it { should ensure_inclusion_of(:wall_enabled).in_array([true, false]) } | |
42 | + it { should ensure_inclusion_of(:merge_requests_enabled).in_array([true, false]) } | |
43 | + it { should ensure_inclusion_of(:wiki_enabled).in_array([true, false]) } | |
40 | 44 | |
41 | 45 | it "should not allow new projects beyond user limits" do |
42 | 46 | project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1)) |
... | ... | @@ -239,7 +243,7 @@ describe Project do |
239 | 243 | end |
240 | 244 | end |
241 | 245 | |
242 | - describe :update_merge_requests do | |
246 | + describe :update_merge_requests do | |
243 | 247 | let(:project) { Factory :project } |
244 | 248 | |
245 | 249 | before do |
... | ... | @@ -259,7 +263,7 @@ describe Project do |
259 | 263 | @merge_request.closed.should be_true |
260 | 264 | end |
261 | 265 | |
262 | - it "should update merge request commits with new one if pushed to source branch" do | |
266 | + it "should update merge request commits with new one if pushed to source branch" do | |
263 | 267 | @merge_request.last_commit.should == nil |
264 | 268 | project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/master", @key.user) |
265 | 269 | @merge_request.reload | ... | ... |