commit
10a5a099e7
5 changed files with 6 additions and 60 deletions
|
@ -83,15 +83,4 @@ class Topic < ActiveRecord::Base
|
||||||
def mk_permission
|
def mk_permission
|
||||||
Perm.short(permission)
|
Perm.short(permission)
|
||||||
end
|
end
|
||||||
|
|
||||||
# has no viewable synapses helper function
|
|
||||||
def has_viewable_synapses(current)
|
|
||||||
result = false
|
|
||||||
synapses.each do |synapse|
|
|
||||||
if synapse.authorize_to_show(current)
|
|
||||||
result = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
result
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -20,7 +20,7 @@ class MappingPolicy < ApplicationPolicy
|
||||||
end
|
end
|
||||||
|
|
||||||
def create?
|
def create?
|
||||||
map_policy.update?
|
record.map.present? && map_policy.update?
|
||||||
end
|
end
|
||||||
|
|
||||||
def update?
|
def update?
|
||||||
|
|
|
@ -89,7 +89,8 @@ RSpec.describe MapsController, type: :controller do
|
||||||
expect do
|
expect do
|
||||||
delete :destroy, { id: unowned_map.to_param, format: :json }
|
delete :destroy, { id: unowned_map.to_param, format: :json }
|
||||||
end.to change(Map, :count).by(0)
|
end.to change(Map, :count).by(0)
|
||||||
expect(response.body).to eq("unauthorized")
|
expect(response.body).to eq ''
|
||||||
|
expect(response.status).to eq 403
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'deletes owned map' do
|
it 'deletes owned map' do
|
||||||
|
@ -97,7 +98,8 @@ RSpec.describe MapsController, type: :controller do
|
||||||
expect do
|
expect do
|
||||||
delete :destroy, { id: owned_map.to_param, format: :json }
|
delete :destroy, { id: owned_map.to_param, format: :json }
|
||||||
end.to change(Map, :count).by(-1)
|
end.to change(Map, :count).by(-1)
|
||||||
expect(response.body).to eq("success")
|
expect(response.body).to eq ''
|
||||||
|
expect(response.status).to eq 204
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -92,10 +92,7 @@ RSpec.describe TopicsController, type: :controller do
|
||||||
expect do
|
expect do
|
||||||
delete :destroy, { id: owned_topic.to_param, format: :json }
|
delete :destroy, { id: owned_topic.to_param, format: :json }
|
||||||
end.to change(Topic, :count).by(-1)
|
end.to change(Topic, :count).by(-1)
|
||||||
end
|
expect(response.body).to eq ''
|
||||||
|
|
||||||
it 'return 204 NO CONTENT' do
|
|
||||||
delete :destroy, { id: topic.to_param, format: :json }
|
|
||||||
expect(response.status).to eq 204
|
expect(response.status).to eq 204
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -7,46 +7,4 @@ RSpec.describe Topic, type: :model do
|
||||||
it { is_expected.to have_many :mappings }
|
it { is_expected.to have_many :mappings }
|
||||||
it { is_expected.to validate_presence_of :permission }
|
it { is_expected.to validate_presence_of :permission }
|
||||||
it { is_expected.to validate_inclusion_of(:permission).in_array Perm::ISSIONS.map(&:to_s) }
|
it { is_expected.to validate_inclusion_of(:permission).in_array Perm::ISSIONS.map(&:to_s) }
|
||||||
|
|
||||||
context 'has_viewable_synapses function' do
|
|
||||||
let (:user) { create(:user) }
|
|
||||||
let (:other_user) { create(:user) }
|
|
||||||
|
|
||||||
context 'topic with no synapses' do
|
|
||||||
let (:topic) { create(:topic) }
|
|
||||||
|
|
||||||
it 'returns false' do
|
|
||||||
expect(topic.has_viewable_synapses(user)).to eq false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'topic with one unpermitted synapse' do
|
|
||||||
let (:synapse) { create(:synapse, permission: :private, user: other_user) }
|
|
||||||
let (:topic) { create(:topic, synapses1: [synapse]) }
|
|
||||||
|
|
||||||
it 'returns false' do
|
|
||||||
expect(topic.has_viewable_synapses(user)).to eq false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'topic with one permitted synapse' do
|
|
||||||
let (:synapse) { create(:synapse, permission: :private, user: user) }
|
|
||||||
let(:topic) { create(:topic, synapses1: [synapse]) }
|
|
||||||
|
|
||||||
it 'returns true' do
|
|
||||||
expect(topic.has_viewable_synapses(user)).to eq true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context 'topic with one unpermitted, one permitted synapse' do
|
|
||||||
let (:synapse1) { create(:synapse, permission: :private, user: other_user) }
|
|
||||||
let (:synapse2) { create(:synapse, permission: :private, user: user) }
|
|
||||||
let (:topic) { create(:topic, synapses1: [synapse1, synapse2]) }
|
|
||||||
|
|
||||||
it 'returns true' do
|
|
||||||
expect(topic.synapses.count).to eq 2
|
|
||||||
expect(topic.has_viewable_synapses(user)).to eq true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue