mirror of
https://github.com/scinote-eln/scinote-web.git
synced 2025-11-10 00:11:22 +08:00
adds controller spec for leave team [fixes SCI-1497]
This commit is contained in:
parent
478bd491ff
commit
c54dd9473e
6 changed files with 55 additions and 6 deletions
|
|
@ -29,6 +29,7 @@ module ClientApi
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_cant_leave
|
def user_cant_leave
|
||||||
|
return unless @user_team && @team
|
||||||
@user_team.admin? &&
|
@user_team.admin? &&
|
||||||
@team.user_teams.where(role: 2).count <= 1
|
@team.user_teams.where(role: 2).count <= 1
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -38,12 +38,11 @@ class TeamsDataTable extends Component {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const options = {
|
const options = {
|
||||||
defaultSortName: "name", // default sort column name
|
defaultSortName: "name",
|
||||||
defaultSortOrder: "desc", // default sort order
|
defaultSortOrder: "desc",
|
||||||
sizePerPageList: [10, 25, 50, 100],
|
sizePerPageList: [10, 25, 50, 100],
|
||||||
paginationPosition: "top",
|
paginationPosition: "top",
|
||||||
alwaysShowAllBtns: false,
|
alwaysShowAllBtns: false
|
||||||
ignoreSinglePage: true
|
|
||||||
};
|
};
|
||||||
const columns = [
|
const columns = [
|
||||||
{
|
{
|
||||||
|
|
|
||||||
32
spec/controllers/client_api/users/user_teams_controller.rb
Normal file
32
spec/controllers/client_api/users/user_teams_controller.rb
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
describe ClientApi::Users::UserTeamsController, type: :controller do
|
||||||
|
describe 'DELETE #leave_team' do
|
||||||
|
login_user
|
||||||
|
before do
|
||||||
|
@user_one = User.first
|
||||||
|
@user_two = FactoryGirl.create(:user, email: 'sec_user@asdf.com')
|
||||||
|
@team = FactoryGirl.create :team
|
||||||
|
FactoryGirl.create :user_team, team: @team, user: @user_one, role: 2
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'Returns HTTP success if user can leave the team' do
|
||||||
|
FactoryGirl.create :user_team, team: @team, user: @user_two, role: 2
|
||||||
|
delete :leave_team, params: { team: @team.id }, format: :json
|
||||||
|
expect(response).to be_success
|
||||||
|
expect(response).to have_http_status(200)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'Returns HTTP unprocessable_entity if user can\'t leave the team' do
|
||||||
|
delete :leave_team, params: { team: @team.id }, format: :json
|
||||||
|
expect(response).to_not be_success
|
||||||
|
expect(response).to have_http_status(:unprocessable_entity)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'Returns HTTP unprocessable_entity if no params given' do
|
||||||
|
delete :leave_team, format: :json
|
||||||
|
expect(response).to_not be_success
|
||||||
|
expect(response).to have_http_status(:unprocessable_entity)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -165,7 +165,8 @@ describe User, type: :model do
|
||||||
name: team.name,
|
name: team.name,
|
||||||
members: 1,
|
members: 1,
|
||||||
role: 2,
|
role: 2,
|
||||||
current_team: true
|
current_team: true,
|
||||||
|
can_be_leaved: false
|
||||||
}
|
}
|
||||||
|
|
||||||
user_one.teams_data.first.each do |k, v|
|
user_one.teams_data.first.each do |k, v|
|
||||||
|
|
@ -181,7 +182,8 @@ describe User, type: :model do
|
||||||
name: team.name,
|
name: team.name,
|
||||||
members: 2,
|
members: 2,
|
||||||
role: 2,
|
role: 2,
|
||||||
current_team: true
|
current_team: true,
|
||||||
|
can_be_leaved: true
|
||||||
}
|
}
|
||||||
|
|
||||||
user_one.teams_data.first.each do |k, v|
|
user_one.teams_data.first.each do |k, v|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
require 'shoulda-matchers'
|
require 'shoulda-matchers'
|
||||||
require 'database_cleaner'
|
require 'database_cleaner'
|
||||||
|
require 'devise'
|
||||||
|
require_relative 'support/controller_macros'
|
||||||
ENV['RAILS_ENV'] = 'test'
|
ENV['RAILS_ENV'] = 'test'
|
||||||
require File.expand_path('../../config/environment', __FILE__)
|
require File.expand_path('../../config/environment', __FILE__)
|
||||||
# Prevent database truncation if the environment is production
|
# Prevent database truncation if the environment is production
|
||||||
|
|
@ -78,6 +80,9 @@ RSpec.configure do |config|
|
||||||
|
|
||||||
# includes FactoryGirl in rspec
|
# includes FactoryGirl in rspec
|
||||||
config.include FactoryGirl::Syntax::Methods
|
config.include FactoryGirl::Syntax::Methods
|
||||||
|
# Devise
|
||||||
|
config.include Devise::Test::ControllerHelpers, type: :controller
|
||||||
|
config.extend ControllerMacros, :type => :controller
|
||||||
end
|
end
|
||||||
|
|
||||||
# config shoulda matchers to work with rspec
|
# config shoulda matchers to work with rspec
|
||||||
|
|
|
||||||
10
spec/support/controller_macros.rb
Normal file
10
spec/support/controller_macros.rb
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
module ControllerMacros
|
||||||
|
def login_user
|
||||||
|
before(:each) do
|
||||||
|
@request.env["devise.mapping"] = Devise.mappings[:user]
|
||||||
|
user = FactoryGirl.create(:user)
|
||||||
|
user.confirm
|
||||||
|
sign_in user
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
Loading…
Add table
Reference in a new issue