diff --git a/app/controllers/api/v1/users_controller.rb b/app/controllers/api/v1/users_controller.rb index 9a22225..af2f5ff 100644 --- a/app/controllers/api/v1/users_controller.rb +++ b/app/controllers/api/v1/users_controller.rb @@ -17,6 +17,11 @@ class Api::V1::UsersController < Api::V1::BaseController steam: { url: @steam.base_url, nickname: @steam.nickname + }, + bans: { + gather: @user.banned?(Ban::TYPE_GATHER).present?, + mute: @user.banned?(Ban::TYPE_MUTE).present?, + site: @user.banned?(Ban::TYPE_SITE).present? } } rescue ActiveRecord::RecordNotFound diff --git a/spec/controllers/api/v1/users_controller_spec.rb b/spec/controllers/api/v1/users_controller_spec.rb index 73f1740..4cc19e6 100644 --- a/spec/controllers/api/v1/users_controller_spec.rb +++ b/spec/controllers/api/v1/users_controller_spec.rb @@ -29,6 +29,25 @@ describe Api::V1::UsersController do get :show, id: -1 }.to raise_error(ActionController::RoutingError) end + + it 'returns correct ban if user muted' do + create :ban, :mute, user: @user + get :show, id: @user.id + expect(response).to be_success + expect(json['bans']['mute']).to eq(true) + end + it 'returns correct ban if user gather banned' do + create :ban, :gather, user: @user + get :show, id: @user.id + expect(response).to be_success + expect(json['bans']['gather']).to eq(true) + end + it 'returns correct ban if user site banned' do + create :ban, :site, user: @user + get :show, id: @user.id + expect(response).to be_success + expect(json['bans']['site']).to eq(true) + end end describe '#index' do diff --git a/spec/factories/ban.rb b/spec/factories/ban.rb index 81a5c7b..0f998be 100644 --- a/spec/factories/ban.rb +++ b/spec/factories/ban.rb @@ -1,23 +1,31 @@ FactoryGirl.define do - factory :ban do - ban_type Ban::TYPE_SITE - expiry Date.today + 1 - # Hack because of the awkward way bans are created (requires user_name) - before(:create) do |ban| - if ban.user.nil? - user = create :user - ban.user_name = user.username - else - ban.user_name = ban.user.username - end - end - end + factory :ban do + ban_type Ban::TYPE_SITE + expiry Date.today + 1 + # Hack because of the awkward way bans are created (requires user_name) + before(:create) do |ban| + if ban.user.nil? + user = create :user + ban.user_name = user.username + else + ban.user_name = ban.user.username + end + end + end - trait :mute do - ban_type Ban::TYPE_MUTE - end + trait :mute do + ban_type Ban::TYPE_MUTE + end - trait :expired do - expiry Date.yesterday - 1 - end + trait :site do + ban_type Ban::TYPE_SITE + end + + trait :gather do + ban_type Ban::TYPE_GATHER + end + + trait :expired do + expiry Date.yesterday - 1 + end end \ No newline at end of file