Merge branch 'master' into normalize_capitalization
This commit is contained in:
commit
562af7a6a2
30 changed files with 236 additions and 171 deletions
|
@ -323,7 +323,7 @@ GEM
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
rubyzip
|
rubyzip
|
||||||
settingslogic (2.0.8)
|
settingslogic (2.0.8)
|
||||||
shoulda-matchers (1.1.0)
|
shoulda-matchers (1.3.0)
|
||||||
activesupport (>= 3.0.0)
|
activesupport (>= 3.0.0)
|
||||||
simplecov (0.6.4)
|
simplecov (0.6.4)
|
||||||
multi_json (~> 1.0)
|
multi_json (~> 1.0)
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
.btn {
|
.btn {
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 26, color-stop(0.076, #f7f7f7), to(#d5d5d5));
|
@include bg-gradient(#f7f7f7, #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);
|
|
||||||
border-color:#aaa;
|
border-color:#aaa;
|
||||||
&:hover {
|
&:hover {
|
||||||
@include bg-gray-gradient;
|
@include bg-gray-gradient;
|
||||||
|
@ -12,10 +9,8 @@
|
||||||
|
|
||||||
&.primary {
|
&.primary {
|
||||||
background:#2a79A3;
|
background:#2a79A3;
|
||||||
|
@include bg-gradient(#47A7b7, #2585b5);
|
||||||
border-color: #2A79A3;
|
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;
|
color:#fff;
|
||||||
text-shadow: 0 1px 1px #268;
|
text-shadow: 0 1px 1px #268;
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@ -30,16 +25,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
&.success {
|
&.success {
|
||||||
border-color: #4A4;
|
@extend .btn-success;
|
||||||
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;
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background: #6C6;
|
@extend .btn-success;
|
||||||
color: #fff;
|
background: #51a351;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.disabled {
|
&.disabled {
|
||||||
|
@ -62,10 +52,8 @@
|
||||||
padding-right:30px;
|
padding-right:30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.danger,
|
&.danger {
|
||||||
&.btn-danger {
|
@extend .btn-danger;
|
||||||
color:#fff;
|
|
||||||
background: #DA4E49;
|
|
||||||
border-color: #BD362F;
|
border-color: #BD362F;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
.file_holder {
|
.file_holder {
|
||||||
border:1px solid #CCC;
|
border:1px solid #BBB;
|
||||||
margin-bottom:1em;
|
margin-bottom:1em;
|
||||||
@include solid_shade;
|
@include solid_shade;
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,13 @@ $hover: #fdf5d9;
|
||||||
border-radius: $radius;
|
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 {
|
@mixin bg-gray-gradient {
|
||||||
background:#eee;
|
background:#eee;
|
||||||
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
|
background-image: -webkit-gradient(linear, 0 0, 0 30, color-stop(0.066, #eee), to(#dfdfdf));
|
||||||
|
|
|
@ -22,7 +22,7 @@ header {
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
.app_logo {
|
.app_logo {
|
||||||
width:230px;
|
width:200px;
|
||||||
float:left;
|
float:left;
|
||||||
position:relative;
|
position:relative;
|
||||||
top:-5px;
|
top:-5px;
|
||||||
|
@ -31,7 +31,7 @@ header {
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
padding-top: 5px;
|
padding-top: 5px;
|
||||||
width:102px;
|
width:90px;
|
||||||
background: url('logo_dark.png') no-repeat 0px -3px;
|
background: url('logo_dark.png') no-repeat 0px -3px;
|
||||||
float:left;
|
float:left;
|
||||||
margin-left:5px;
|
margin-left:5px;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* Main Menu of Application
|
* Main Menu of Application
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
ul.main_menu {
|
ul.main_menu {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
margin:30px 0;
|
margin:30px 0;
|
||||||
|
@ -12,7 +12,7 @@ ul.main_menu {
|
||||||
position:relative;
|
position:relative;
|
||||||
overflow:hidden;
|
overflow:hidden;
|
||||||
@include shade;
|
@include shade;
|
||||||
.count {
|
.count {
|
||||||
position: relative;
|
position: relative;
|
||||||
top: -1px;
|
top: -1px;
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
@ -29,12 +29,12 @@ ul.main_menu {
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
-moz-border-radius: 8px;
|
-moz-border-radius: 8px;
|
||||||
}
|
}
|
||||||
.label {
|
.label {
|
||||||
background:$hover;
|
background:$hover;
|
||||||
text-shadow:none;
|
text-shadow:none;
|
||||||
color:$style_color;
|
color:$style_color;
|
||||||
}
|
}
|
||||||
li {
|
li {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
display: table-cell;
|
display: table-cell;
|
||||||
|
@ -43,7 +43,7 @@ ul.main_menu {
|
||||||
border-left: 1px solid #EEE;
|
border-left: 1px solid #EEE;
|
||||||
border-bottom:2px solid #CFCFCF;
|
border-bottom:2px solid #CFCFCF;
|
||||||
|
|
||||||
&:first-child{
|
&:first-child{
|
||||||
-webkit-border-top-left-radius: 4px;
|
-webkit-border-top-left-radius: 4px;
|
||||||
-webkit-border-bottom-left-radius: 4px;
|
-webkit-border-bottom-left-radius: 4px;
|
||||||
-moz-border-radius-topleft: 4px;
|
-moz-border-radius-topleft: 4px;
|
||||||
|
@ -53,31 +53,31 @@ ul.main_menu {
|
||||||
border-left: 0;
|
border-left: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
&.current {
|
&.current {
|
||||||
background-color:#D5D5D5;
|
background-color:#D5D5D5;
|
||||||
border-bottom: 2px solid $style_color;
|
border-bottom: 1px solid #AAA;
|
||||||
border-right: 1px solid #BBB;
|
border-right: 1px solid #BBB;
|
||||||
border-left: 1px solid #BBB;
|
border-left: 1px solid #BBB;
|
||||||
border-radius: 0 0 1px 1px;
|
border-radius: 0 0 1px 1px;
|
||||||
&:first-child{
|
&:first-child{
|
||||||
border-bottom:none;
|
border-bottom:none;
|
||||||
border-left:none;
|
border-left:none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&.home {
|
&.home {
|
||||||
a {
|
a {
|
||||||
background: url(home_icon.PNG) no-repeat center center;
|
background: url(home_icon.PNG) no-repeat center center;
|
||||||
text-indent:-9999px;
|
text-indent:-9999px;
|
||||||
min-width:20px;
|
min-width:20px;
|
||||||
img {
|
img {
|
||||||
position:relative;
|
position:relative;
|
||||||
top:4px;
|
top:4px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
a {
|
a {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
|
|
|
@ -104,6 +104,8 @@ class Project < ActiveRecord::Base
|
||||||
length: { within: 1..255 }
|
length: { within: 1..255 }
|
||||||
|
|
||||||
validates :owner, presence: true
|
validates :owner, presence: true
|
||||||
|
validates :issues_enabled, :wall_enabled, :merge_requests_enabled,
|
||||||
|
:wiki_enabled, inclusion: { in: [true, false] }
|
||||||
validate :check_limit
|
validate :check_limit
|
||||||
validate :repo_name
|
validate :repo_name
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ module IssueCommonality
|
||||||
validates :title,
|
validates :title,
|
||||||
presence: true,
|
presence: true,
|
||||||
length: { within: 0..255 }
|
length: { within: 0..255 }
|
||||||
|
validates :closed, inclusion: { in: [true, false] }
|
||||||
|
|
||||||
scope :opened, where(closed: false)
|
scope :opened, where(closed: false)
|
||||||
scope :closed, where(closed: true)
|
scope :closed, where(closed: true)
|
||||||
|
|
|
@ -11,8 +11,13 @@
|
||||||
.input= f.text_field :title
|
.input= f.text_field :title
|
||||||
.clearfix
|
.clearfix
|
||||||
= f.label :key
|
= f.label :key
|
||||||
.input= f.text_area :key, class: "xlarge"
|
.input
|
||||||
.actions
|
= f.text_area :key, class: [:xxlarge, :thin_area]
|
||||||
= f.submit 'Save', class: "primary btn"
|
%p.hint
|
||||||
= link_to "Cancel", project_deploy_keys_path(@project), class: "btn"
|
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"
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,17 @@
|
||||||
= render "repositories/head"
|
= render "repositories/head"
|
||||||
- if can? current_user, :admin_project, @project
|
|
||||||
.alert-message.block-message
|
%p.slead
|
||||||
Deploy keys allow read-only access to repository.
|
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
|
= link_to new_project_deploy_key_path(@project), class: "btn small", title: "New Deploy Key" do
|
||||||
Add Deploy Key
|
Add Deploy Key
|
||||||
|
|
||||||
- if @keys.any?
|
- if @keys.any?
|
||||||
%table
|
%table
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th Keys
|
||||||
|
%th
|
||||||
|
%th
|
||||||
- @keys.each do |key|
|
- @keys.each do |key|
|
||||||
= render(partial: 'show', locals: {key: key})
|
= render(partial: 'show', locals: {key: key})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
= render "repositories/head"
|
= render "repositories/head"
|
||||||
|
|
||||||
%h3 New Deploy key
|
%h3.page_title New Deploy key
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
= render 'form'
|
= render 'form'
|
||||||
|
|
|
@ -1,7 +1,14 @@
|
||||||
= render "repositories/head"
|
= 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
|
%hr
|
||||||
%pre= @key.key
|
%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"
|
= link_to 'Remove', project_deploy_key_path(@key.project, @key), confirm: 'Are you sure?', method: :delete, class: "danger btn delete-key"
|
||||||
.clear
|
|
||||||
|
|
|
@ -10,5 +10,5 @@
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
%pre= @key.key
|
%pre= @key.key
|
||||||
.actions
|
.right
|
||||||
= link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn danger delete-key"
|
= link_to 'Remove', @key, confirm: 'Are you sure?', method: :delete, class: "btn danger delete-key"
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
.team_member_show
|
.team_member_show
|
||||||
- if can? current_user, :admin_project, @project
|
- 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
|
.profile_avatar_holder
|
||||||
= image_tag gravatar_icon(user.email, 60), class: "borders"
|
= image_tag gravatar_icon(user.email, 60), class: "borders"
|
||||||
%h3
|
%h3
|
||||||
|
|
|
@ -4,7 +4,7 @@ Feature: Issues
|
||||||
And I own project "Shop"
|
And I own project "Shop"
|
||||||
And project "Shop" have "Release 0.4" open issue
|
And project "Shop" have "Release 0.4" open issue
|
||||||
And project "Shop" have "Release 0.3" closed 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
|
Scenario: I should see open issues
|
||||||
Given I should see "Release 0.4" in issues
|
Given I should see "Release 0.4" in issues
|
||||||
|
@ -36,3 +36,31 @@ Feature: Issues
|
||||||
Given I visit issue page "Release 0.4"
|
Given I visit issue page "Release 0.4"
|
||||||
And I leave a comment like "XML attached"
|
And I leave a comment like "XML attached"
|
||||||
Then I should see comment "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
|
||||||
|
|
21
features/step_definitions/common_steps.rb
Normal file
21
features/step_definitions/common_steps.rb
Normal file
|
@ -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
|
|
@ -1,7 +1,3 @@
|
||||||
Given /^I visit dashboard page$/ do
|
|
||||||
visit dashboard_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I should see "(.*?)" link$/ do |arg1|
|
Then /^I should see "(.*?)" link$/ do |arg1|
|
||||||
page.should have_link(arg1)
|
page.should have_link(arg1)
|
||||||
end
|
end
|
||||||
|
@ -51,10 +47,10 @@ Then /^I click "(.*?)" link$/ do |arg1|
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I see prefilled new Merge Request page$/ do
|
Then /^I see prefilled new Merge Request page$/ do
|
||||||
current_path.should == new_project_merge_request_path(@project)
|
current_path.should == new_project_merge_request_path(@project)
|
||||||
find("#merge_request_source_branch").value.should == "new_design"
|
find("#merge_request_source_branch").value.should == "new_design"
|
||||||
find("#merge_request_target_branch").value.should == "master"
|
find("#merge_request_target_branch").value.should == "master"
|
||||||
find("#merge_request_title").value.should == "New Design"
|
find("#merge_request_title").value.should == "New Design"
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit dashboard search page$/ do
|
Given /^I visit dashboard search page$/ do
|
||||||
|
@ -66,10 +62,6 @@ Given /^I search for "(.*?)"$/ do |arg1|
|
||||||
click_button "Search"
|
click_button "Search"
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit dashboard issues page$/ do
|
|
||||||
visit dashboard_issues_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I should see issues assigned to me$/ do
|
Then /^I should see issues assigned to me$/ do
|
||||||
issues = @user.issues
|
issues = @user.issues
|
||||||
issues.each do |issue|
|
issues.each do |issue|
|
||||||
|
@ -78,10 +70,6 @@ Then /^I should see issues assigned to me$/ do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit dashboard merge requests page$/ do
|
|
||||||
visit dashboard_merge_requests_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I should see my merge requests$/ do
|
Then /^I should see my merge requests$/ do
|
||||||
merge_requests = @user.merge_requests
|
merge_requests = @user.merge_requests
|
||||||
merge_requests.each do |mr|
|
merge_requests.each do |mr|
|
||||||
|
|
|
@ -1,17 +1,9 @@
|
||||||
Given /^I visit profile page$/ do
|
|
||||||
visit profile_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I should see my profile info$/ do
|
Then /^I should see my profile info$/ do
|
||||||
page.should have_content "Profile"
|
page.should have_content "Profile"
|
||||||
page.should have_content @user.name
|
page.should have_content @user.name
|
||||||
page.should have_content @user.email
|
page.should have_content @user.email
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit profile password page$/ do
|
|
||||||
visit profile_password_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I change my password$/ do
|
Then /^I change my password$/ do
|
||||||
fill_in "user_password", :with => "222333"
|
fill_in "user_password", :with => "222333"
|
||||||
fill_in "user_password_confirmation", :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
|
current_path.should == new_user_session_path
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit profile token page$/ do
|
|
||||||
visit profile_token_path
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I reset my token$/ do
|
Then /^I reset my token$/ do
|
||||||
@old_token = @user.private_token
|
@old_token = @user.private_token
|
||||||
click_button "Reset"
|
click_button "Reset"
|
||||||
|
|
|
@ -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
|
Then /^I should see files from repository$/ do
|
||||||
page.should have_content("app")
|
page.should have_content("app")
|
||||||
page.should have_content("History")
|
page.should have_content("History")
|
||||||
page.should have_content("Gemfile")
|
page.should have_content("Gemfile")
|
||||||
end
|
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|
|
Then /^I should see files from repository for "(.*?)"$/ do |arg1|
|
||||||
current_path.should == tree_project_ref_path(@project, arg1)
|
current_path.should == tree_project_ref_path(@project, arg1)
|
||||||
page.should have_content("app")
|
page.should have_content("app")
|
||||||
|
@ -31,10 +23,6 @@ Given /^I click on raw button$/ do
|
||||||
click_link "raw"
|
click_link "raw"
|
||||||
end
|
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
|
Then /^I should see raw file content$/ do
|
||||||
page.source.should == ValidCommit::BLOB_FILE
|
page.source.should == ValidCommit::BLOB_FILE
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
Given /^I visit project commits page$/ do
|
|
||||||
visit project_commits_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I see project commits$/ do
|
Then /^I see project commits$/ do
|
||||||
current_path.should == project_commits_path(@project)
|
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)
|
page.body.should have_selector("entry summary", :text => commit.description)
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I click on commit link$/ do
|
|
||||||
visit project_commit_path(@project, ValidCommit::ID)
|
|
||||||
end
|
|
||||||
|
|
||||||
Then /^I see commit info$/ do
|
Then /^I see commit info$/ do
|
||||||
page.should have_content ValidCommit::MESSAGE
|
page.should have_content ValidCommit::MESSAGE
|
||||||
page.should have_content "Showing 1 changed file"
|
page.should have_content "Showing 1 changed file"
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I visit compare refs page$/ do
|
|
||||||
visit compare_project_commits_path(@project)
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I fill compare fields with refs$/ do
|
Given /^I fill compare fields with refs$/ do
|
||||||
fill_in "from", :with => "master"
|
fill_in "from", :with => "master"
|
||||||
fill_in "to", :with => "stable"
|
fill_in "to", :with => "stable"
|
||||||
|
@ -48,18 +36,6 @@ Given /^I see compared refs$/ do
|
||||||
page.should have_content "Showing 73 changed files"
|
page.should have_content "Showing 73 changed files"
|
||||||
end
|
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|
|
Then /^I should see "(.*?)" recent branches list$/ do |arg1|
|
||||||
page.should have_content("Branches")
|
page.should have_content("Branches")
|
||||||
page.should have_content("master")
|
page.should have_content("master")
|
||||||
|
@ -76,7 +52,7 @@ Then /^I should see "(.*?)" all tags list$/ do |arg1|
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should see "(.*?)" protected branches list$/ do |arg1|
|
Then /^I should see "(.*?)" protected branches list$/ do |arg1|
|
||||||
within "table" do
|
within "table" do
|
||||||
page.should have_content "stable"
|
page.should have_content "stable"
|
||||||
page.should_not have_content "master"
|
page.should_not have_content "master"
|
||||||
end
|
end
|
||||||
|
|
|
@ -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)
|
Factory.create(:issue, :title => arg2, :project => project, :author => project.users.first, :closed => true)
|
||||||
end
|
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|
|
Given /^I should see "(.*?)" in issues$/ do |arg1|
|
||||||
page.should have_content arg1
|
page.should have_content arg1
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I should not see "(.*?)" in issues$/ do |arg1|
|
Given /^I should not see "(.*?)" in issues$/ do |arg1|
|
||||||
page.should_not have_content arg1
|
page.should_not have_content arg1
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should see issue "(.*?)"$/ do |arg1|
|
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
|
page.should have_content issue.project.name
|
||||||
end
|
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|
|
Given /^I submit new issue "(.*?)"$/ do |arg1|
|
||||||
fill_in "issue_title", with: arg1
|
fill_in "issue_title", with: arg1
|
||||||
click_button "Submit new issue"
|
click_button "Submit new issue"
|
||||||
|
@ -51,7 +42,16 @@ Given /^I visit project "(.*?)" labels page$/ do |arg1|
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should see label "(.*?)"$/ do |arg1|
|
Then /^I should see label "(.*?)"$/ do |arg1|
|
||||||
within ".labels-table" do
|
within ".labels-table" do
|
||||||
page.should have_content arg1
|
page.should have_content arg1
|
||||||
end
|
end
|
||||||
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
|
||||||
|
|
|
@ -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)
|
Factory.create(:merge_request, :title => arg2, :project => project, :author => project.users.first, :closed => true)
|
||||||
end
|
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|
|
Then /^I should see "(.*?)" in merge requests$/ do |arg1|
|
||||||
page.should have_content arg1
|
page.should have_content arg1
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should not see "(.*?)" in merge requests$/ do |arg1|
|
Then /^I should not see "(.*?)" in merge requests$/ do |arg1|
|
||||||
page.should_not have_content arg1
|
page.should_not have_content arg1
|
||||||
end
|
end
|
||||||
|
|
||||||
Then /^I should see merge request "(.*?)"$/ do |arg1|
|
Then /^I should see merge request "(.*?)"$/ do |arg1|
|
||||||
merge_request = MergeRequest.find_by_title(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.target_branch)
|
||||||
page.should have_content(merge_request.source_branch)
|
page.should have_content(merge_request.source_branch)
|
||||||
end
|
end
|
||||||
|
@ -34,11 +30,6 @@ Given /^I submit new merge request "(.*?)"$/ do |arg1|
|
||||||
click_button "Save"
|
click_button "Save"
|
||||||
end
|
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|
|
Then /^I should see closed merge request "(.*?)"$/ do |arg1|
|
||||||
mr = MergeRequest.find_by_title(arg1)
|
mr = MergeRequest.find_by_title(arg1)
|
||||||
mr.closed.should be_true
|
mr.closed.should be_true
|
||||||
|
|
|
@ -12,11 +12,6 @@ Given /^project "(.*?)" has milestone "(.*?)"$/ do |arg1, arg2|
|
||||||
end
|
end
|
||||||
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
|
Then /^I should see active milestones$/ do
|
||||||
milestone = @project.milestones.first
|
milestone = @project.milestones.first
|
||||||
page.should have_content(milestone.title[0..10])
|
page.should have_content(milestone.title[0..10])
|
||||||
|
|
|
@ -8,10 +8,6 @@ Given /^"(.*?)" is "(.*?)" developer$/ do |arg1, arg2|
|
||||||
project.add_access(user, :write)
|
project.add_access(user, :write)
|
||||||
end
|
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
|
Then /^I should be able to see myself in team$/ do
|
||||||
page.should have_content(@user.name)
|
page.should have_content(@user.name)
|
||||||
page.should have_content(@user.email)
|
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)
|
page.should have_content(user.email)
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^I click link "(.*?)"$/ do |arg1|
|
|
||||||
click_link arg1
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2|
|
Given /^I select "(.*?)" as "(.*?)"$/ do |arg1, arg2|
|
||||||
user = User.find_by_name(arg1)
|
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 user.name, :from => "team_member_user_id"
|
||||||
select arg2, :from => "team_member_project_access"
|
select arg2, :from => "team_member_project_access"
|
||||||
end
|
end
|
||||||
|
@ -44,7 +36,7 @@ end
|
||||||
|
|
||||||
Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2|
|
Given /^I change "(.*?)" role to "(.*?)"$/ do |arg1, arg2|
|
||||||
user = User.find_by_name(arg1)
|
user = User.find_by_name(arg1)
|
||||||
within ".user_#{user.id}" do
|
within ".user_#{user.id}" do
|
||||||
select arg2, :from => "team_member_project_access"
|
select arg2, :from => "team_member_project_access"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,7 +1,3 @@
|
||||||
Given /^I visit project wiki page$/ do
|
|
||||||
visit project_wiki_path(@project, :index)
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^I create Wiki page$/ do
|
Given /^I create Wiki page$/ do
|
||||||
fill_in "Title", :with => 'Test title'
|
fill_in "Title", :with => 'Test title'
|
||||||
fill_in "Content", :with => '[link test](test)'
|
fill_in "Content", :with => '[link test](test)'
|
||||||
|
|
|
@ -1,9 +1,3 @@
|
||||||
include LoginHelpers
|
|
||||||
|
|
||||||
Given /^I signin as a user$/ do
|
|
||||||
login_as :user
|
|
||||||
end
|
|
||||||
|
|
||||||
When /^I visit new project page$/ do
|
When /^I visit new project page$/ do
|
||||||
visit new_project_path
|
visit new_project_path
|
||||||
end
|
end
|
||||||
|
@ -65,10 +59,6 @@ Given /^I visit project "(.*?)" network page$/ do |arg1|
|
||||||
visit graph_project_path(project)
|
visit graph_project_path(project)
|
||||||
end
|
end
|
||||||
|
|
||||||
Given /^show me page$/ do
|
|
||||||
save_and_open_page
|
|
||||||
end
|
|
||||||
|
|
||||||
Given /^page should have network graph$/ do
|
Given /^page should have network graph$/ do
|
||||||
page.should have_content "Project Network Graph"
|
page.should have_content "Project Network Graph"
|
||||||
within ".graph" do
|
within ".graph" do
|
||||||
|
|
91
features/step_definitions/visit_steps.rb
Normal file
91
features/step_definitions/visit_steps.rb
Normal file
|
@ -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
|
||||||
|
|
|
@ -7,6 +7,7 @@ describe Issue do
|
||||||
|
|
||||||
describe "Validation" do
|
describe "Validation" do
|
||||||
it { should ensure_length_of(:description).is_within(0..2000) }
|
it { should ensure_length_of(:description).is_within(0..2000) }
|
||||||
|
it { should ensure_inclusion_of(:closed).in_array([true, false]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'modules' do
|
describe 'modules' do
|
||||||
|
|
|
@ -9,6 +9,7 @@ describe Milestone do
|
||||||
describe "Validation" do
|
describe "Validation" do
|
||||||
it { should validate_presence_of(:title) }
|
it { should validate_presence_of(:title) }
|
||||||
it { should validate_presence_of(:project_id) }
|
it { should validate_presence_of(:project_id) }
|
||||||
|
it { should ensure_inclusion_of(:closed).in_array([true, false]) }
|
||||||
end
|
end
|
||||||
|
|
||||||
let(:milestone) { Factory :milestone }
|
let(:milestone) { Factory :milestone }
|
||||||
|
|
|
@ -37,6 +37,10 @@ describe Project do
|
||||||
# TODO: Formats
|
# TODO: Formats
|
||||||
|
|
||||||
it { should validate_presence_of(:owner) }
|
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
|
it "should not allow new projects beyond user limits" do
|
||||||
project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1))
|
project.stub(:owner).and_return(double(can_create_project?: false, projects_limit: 1))
|
||||||
|
@ -239,7 +243,7 @@ describe Project do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe :update_merge_requests do
|
describe :update_merge_requests do
|
||||||
let(:project) { Factory :project }
|
let(:project) { Factory :project }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
@ -259,7 +263,7 @@ describe Project do
|
||||||
@merge_request.closed.should be_true
|
@merge_request.closed.should be_true
|
||||||
end
|
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
|
@merge_request.last_commit.should == nil
|
||||||
project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/master", @key.user)
|
project.update_merge_requests("8716fc78f3c65bbf7bcf7b574febd583bc5d2812", "bcf03b5de6c33f3869ef70d68cf06e679d1d7f9a", "refs/heads/master", @key.user)
|
||||||
@merge_request.reload
|
@merge_request.reload
|
||||||
|
|
Loading…
Reference in a new issue