Finish select2-ajax for users. Added Select2Helper for tests

This commit is contained in:
Dmitriy Zaporozhets 2013-03-14 10:16:27 +02:00
parent 10f14136f5
commit ef05423f47
11 changed files with 256 additions and 222 deletions

View file

@ -19,7 +19,7 @@ $ ->
multiple: $('.ajax-users-select').hasClass('multiselect') multiple: $('.ajax-users-select').hasClass('multiselect')
minimumInputLength: 0 minimumInputLength: 0
ajax: # instead of writing the function to execute the request we use Select2's convenient helper ajax: # instead of writing the function to execute the request we use Select2's convenient helper
url: "/api/v3/users.json" url: "/api/" + gon.api_version + "/users.json"
dataType: "json" dataType: "json"
data: (term, page) -> data: (term, page) ->
search: term # search term search: term # search term
@ -33,11 +33,11 @@ $ ->
initSelection: (element, callback) -> initSelection: (element, callback) ->
id = $(element).val() id = $(element).val()
if id isnt "" if id isnt ""
$.ajax("http://api.rottentomatoes.com/api/public/v1.0/users/" + id + ".json", $.ajax(
"/api/" + gon.api_version + "/users/" + id + ".json",
dataType: "json"
data: data:
apikey: "ju6z9mjyajq2djue3gbvv26t" private_token: gon.api_token
dataType: "jsonp"
).done (data) -> ).done (data) ->
callback data callback data

View file

@ -15,7 +15,7 @@
@import "gitlab_bootstrap.scss"; @import "gitlab_bootstrap.scss";
@import "common.scss"; @import "common.scss";
@import "ref_select.scss"; @import "selects.scss";
@import "sections/header.scss"; @import "sections/header.scss";
@import "sections/nav.scss"; @import "sections/nav.scss";

View file

@ -555,17 +555,3 @@ img.emoji {
display: none; display: none;
} }
.ajax-users-select {
width: 400px;
}
.user-result {
.user-image {
float: left;
}
.user-name {
}
.user-username {
color: #999;
}
}

View file

@ -1,3 +1,23 @@
.ajax-users-select {
width: 400px;
}
.user-result {
.user-image {
float: left;
}
.user-name {
}
.user-username {
color: #999;
}
}
.select2-no-results {
padding: 7px;
color: #666;
}
/** Branch/tag selector **/ /** Branch/tag selector **/
.project-refs-form { .project-refs-form {
margin: 0; margin: 0;

View file

@ -152,9 +152,8 @@ class ApplicationController < ActionController::Base
def add_gon_variables def add_gon_variables
gon.default_issues_tracker = Project.issues_tracker.default_value gon.default_issues_tracker = Project.issues_tracker.default_value
if current_user gon.api_version = Gitlab::API.version
gon.api_token = current_user.private_token gon.api_token = current_user.private_token if current_user
gon.gravatar_url = request.ssl? ? Gitlab.config.gravatar.ssl_url : Gitlab.config.gravatar.plain_url gon.gravatar_url = request.ssl? ? Gitlab.config.gravatar.ssl_url : Gitlab.config.gravatar.plain_url
end end
end end
end

View file

@ -11,6 +11,7 @@ Feature: Project Team management
Then I should be able to see myself in team Then I should be able to see myself in team
And I should see "Sam" in team list And I should see "Sam" in team list
@javascript
Scenario: Add user to project Scenario: Add user to project
Given I click link "New Team Member" Given I click link "New Team Member"
And I select "Mike" as "Reporter" And I select "Mike" as "Reporter"

View file

@ -2,6 +2,7 @@ class ProjectTeamManagement < Spinach::FeatureSteps
include SharedAuthentication include SharedAuthentication
include SharedProject include SharedProject
include SharedPaths include SharedPaths
include Select2Helper
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)
@ -20,8 +21,9 @@ class ProjectTeamManagement < Spinach::FeatureSteps
And 'I select "Mike" as "Reporter"' do And 'I select "Mike" as "Reporter"' do
user = User.find_by_name("Mike") user = User.find_by_name("Mike")
select2(user.id, from: "#user_ids", multiple: true)
within "#new_team_member" do within "#new_team_member" do
select "#{user.name} (#{user.username})", :from => "user_ids"
select "Reporter", :from => "project_access" select "Reporter", :from => "project_access"
end end
click_button "Add users" click_button "Add users"

View file

@ -2,6 +2,7 @@ class Userteams < Spinach::FeatureSteps
include SharedAuthentication include SharedAuthentication
include SharedPaths include SharedPaths
include SharedProject include SharedProject
include Select2Helper
When 'I do not have teams with me' do When 'I do not have teams with me' do
UserTeam.with_member(current_user).destroy_all UserTeam.with_member(current_user).destroy_all
@ -183,8 +184,8 @@ class Userteams < Spinach::FeatureSteps
And 'I select user "John" from list with role "Reporter"' do And 'I select user "John" from list with role "Reporter"' do
user = User.find_by_name("John") user = User.find_by_name("John")
select2(user.id, from: "#user_ids", multiple: true)
within "#team_members" do within "#team_members" do
select "#{user.name} (#{user.username})", from: "user_ids"
select "Reporter", from: "default_project_access" select "Reporter", from: "default_project_access"
end end
click_button "Add" click_button "Add"
@ -257,5 +258,4 @@ class Userteams < Spinach::FeatureSteps
end end
entered entered
end end
end end

View file

@ -14,7 +14,7 @@ require 'spinach/capybara'
require 'sidekiq/testing/inline' require 'sidekiq/testing/inline'
%w(stubbed_repository valid_commit).each do |f| %w(stubbed_repository valid_commit select2_helper).each do |f|
require Rails.root.join('spec', 'support', f) require Rails.root.join('spec', 'support', f)
end end

View file

@ -46,6 +46,7 @@ Feature: UserTeams
When I visit team merge requests page When I visit team merge requests page
Then I should see merge requests from this team assigned to me Then I should see merge requests from this team assigned to me
@javascript
Scenario: I should add user to projects in Team Scenario: I should add user to projects in Team
Given I have team with projects and members Given I have team with projects and members
Given I have new user "John" Given I have new user "John"

View file

@ -0,0 +1,25 @@
# Select2 ajax programatic helper
# It allows you to select value from select2
#
# Params
# value - real value of selected item
# opts - options containing css selector
#
# Usage:
#
# select2(2, from: '#user_ids')
#
module Select2Helper
def select2(value, options={})
raise "Must pass a hash containing 'from'" if not options.is_a?(Hash) or not options.has_key?(:from)
selector = options[:from]
if options[:multiple]
page.execute_script("$('#{selector}').select2('val', ['#{value}']);")
else
page.execute_script("$('#{selector}').select2('val', '#{value}');")
end
end
end