adds controller spec for leave team [fixes SCI-1497]

This commit is contained in:
zmagod 2017-08-29 11:56:46 +02:00
parent 478bd491ff
commit c54dd9473e
6 changed files with 55 additions and 6 deletions

View file

@ -29,6 +29,7 @@ module ClientApi
end
def user_cant_leave
return unless @user_team && @team
@user_team.admin? &&
@team.user_teams.where(role: 2).count <= 1
end

View file

@ -38,12 +38,11 @@ class TeamsDataTable extends Component {
render() {
const options = {
defaultSortName: "name", // default sort column name
defaultSortOrder: "desc", // default sort order
defaultSortName: "name",
defaultSortOrder: "desc",
sizePerPageList: [10, 25, 50, 100],
paginationPosition: "top",
alwaysShowAllBtns: false,
ignoreSinglePage: true
alwaysShowAllBtns: false
};
const columns = [
{

View 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

View file

@ -165,7 +165,8 @@ describe User, type: :model do
name: team.name,
members: 1,
role: 2,
current_team: true
current_team: true,
can_be_leaved: false
}
user_one.teams_data.first.each do |k, v|
@ -181,7 +182,8 @@ describe User, type: :model do
name: team.name,
members: 2,
role: 2,
current_team: true
current_team: true,
can_be_leaved: true
}
user_one.teams_data.first.each do |k, v|

View file

@ -2,6 +2,8 @@
require 'spec_helper'
require 'shoulda-matchers'
require 'database_cleaner'
require 'devise'
require_relative 'support/controller_macros'
ENV['RAILS_ENV'] = 'test'
require File.expand_path('../../config/environment', __FILE__)
# Prevent database truncation if the environment is production
@ -78,6 +80,9 @@ RSpec.configure do |config|
# includes FactoryGirl in rspec
config.include FactoryGirl::Syntax::Methods
# Devise
config.include Devise::Test::ControllerHelpers, type: :controller
config.extend ControllerMacros, :type => :controller
end
# config shoulda matchers to work with rspec

View 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