|
| 1 | +require 'test_helper' |
| 2 | + |
| 3 | +class SpaceRoleTest < ActiveSupport::TestCase |
| 4 | + setup do |
| 5 | + @space = spaces(:plants) |
| 6 | + end |
| 7 | + |
| 8 | + test 'validates role key' do |
| 9 | + invalid_key = @space.space_roles.build(user: users(:regular_user), key: :yes) |
| 10 | + refute invalid_key.valid? |
| 11 | + assert invalid_key.errors.added?(:key, :inclusion, value: 'yes') |
| 12 | + |
| 13 | + valid_key = @space.space_roles.build(user: users(:regular_user), key: :admin) |
| 14 | + assert valid_key.valid? |
| 15 | + end |
| 16 | + |
| 17 | + test 'can retrieve list of users with a given role in a space' do |
| 18 | + user = users(:regular_user) |
| 19 | + another_user = users(:another_regular_user) |
| 20 | + @space.space_roles.create!(user: user, key: :admin) |
| 21 | + @space.space_roles.create!(user: another_user, key: :admin) |
| 22 | + |
| 23 | + admins = @space.with_space_role?(:admin) |
| 24 | + assert_equal 2, admins.length |
| 25 | + assert_includes admins, user |
| 26 | + assert_includes admins, another_user |
| 27 | + |
| 28 | + assert_equal 2, @space.with_space_role?('admin').length |
| 29 | + |
| 30 | + assert_empty @space.with_space_role?(:badmin) |
| 31 | + end |
| 32 | + |
| 33 | + test 'can check if a user has a given role in a space' do |
| 34 | + user = users(:regular_user) |
| 35 | + another_user = users(:another_regular_user) |
| 36 | + @space.space_roles.create!(user: user, key: :admin) |
| 37 | + |
| 38 | + assert user.has_space_role?(@space, :admin) |
| 39 | + assert user.has_space_role?(@space, 'admin') |
| 40 | + refute user.has_space_role?(spaces(:astro), :admin) |
| 41 | + refute user.has_space_role?(@space, :overlord) |
| 42 | + refute another_user.has_space_role?(@space, :admin) |
| 43 | + end |
| 44 | +end |
0 commit comments