- | <%= link_to "#{weight.max} lbs", weight %> |
+
+ <% if can? :read, @tournament %>
+ <%= link_to "#{weight.max} lbs", weight %>
+ <% else %>
+ <%= "#{weight.max}" %>
+ <% end %>
+ |
<%= weight.bracket_size %> |
<% if can? :manage, @tournament %>
diff --git a/db/migrate/20230102024038_add_is_public_to_tournaments.rb b/db/migrate/20230102024038_add_is_public_to_tournaments.rb
new file mode 100644
index 0000000..64a1f75
--- /dev/null
+++ b/db/migrate/20230102024038_add_is_public_to_tournaments.rb
@@ -0,0 +1,5 @@
+class AddIsPublicToTournaments < ActiveRecord::Migration[6.1]
+ def change
+ add_column :tournaments, :is_public, :boolean
+ end
+end
diff --git a/db/migrate/20230102040503_set_all_existing_tournaments_as_public.rb b/db/migrate/20230102040503_set_all_existing_tournaments_as_public.rb
new file mode 100644
index 0000000..dae3bd9
--- /dev/null
+++ b/db/migrate/20230102040503_set_all_existing_tournaments_as_public.rb
@@ -0,0 +1,9 @@
+class SetAllExistingTournamentsAsPublic < ActiveRecord::Migration[6.1]
+ def up
+ Tournament.update_all(is_public: true)
+ end
+
+ def down
+ Tournament.update_all(is_public: nil)
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index c7fa72b..95dfa3b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 2022_09_12_171922) do
+ActiveRecord::Schema.define(version: 2023_01_02_040503) do
create_table "delayed_jobs", force: :cascade do |t|
t.integer "priority", default: 0, null: false
@@ -108,6 +108,7 @@ ActiveRecord::Schema.define(version: 2022_09_12_171922) do
t.integer "user_id"
t.integer "curently_generating_matches"
t.date "date"
+ t.boolean "is_public"
t.index ["user_id"], name: "index_tournaments_on_user_id"
end
diff --git a/db/seeds.rb b/db/seeds.rb
index d090a24..37506d3 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -31,7 +31,7 @@
User.create(id: 1, email: 'test@test.com', password: 'password', password_confirmation: 'password')
# Pool to bracket
- tournament = Tournament.create(id: 200, name: 'Test1', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Pool to bracket', user_id: 1, date: Date.today)
+ tournament = Tournament.create(id: 200, name: 'Test1', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Pool to bracket', user_id: 1, date: Date.today, is_public: true)
create_schools(tournament, 16)
weight_classes=Weight::HS_WEIGHT_CLASSES.split(",")
tournament.create_pre_defined_weights(weight_classes)
@@ -42,7 +42,7 @@
end
# Modified 16 Man Double Elimination 1-6
- tournament = Tournament.create(id: 201, name: 'Test2', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Modified 16 Man Double Elimination 1-6', user_id: 1, date: Date.today)
+ tournament = Tournament.create(id: 201, name: 'Test2', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Modified 16 Man Double Elimination 1-6', user_id: 1, date: Date.today, is_public: true)
create_schools(tournament, 16)
weight_classes=Weight::HS_WEIGHT_CLASSES.split(",")
tournament.create_pre_defined_weights(weight_classes)
@@ -53,7 +53,7 @@
end
# Modified 16 Man Double Elimination 1-8
- tournament = Tournament.create(id: 202, name: 'Test3', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Modified 16 Man Double Elimination 1-8', user_id: 1, date: Date.today)
+ tournament = Tournament.create(id: 202, name: 'Test3', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Modified 16 Man Double Elimination 1-8', user_id: 1, date: Date.today, is_public: true)
create_schools(tournament, 16)
weight_classes=Weight::HS_WEIGHT_CLASSES.split(",")
tournament.create_pre_defined_weights(weight_classes)
@@ -64,7 +64,7 @@
end
# Regular Double Elimination 1-6
- tournament = Tournament.create(id: 203, name: 'Test4', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Regular Double Elimination 1-6', user_id: 1, date: Date.today)
+ tournament = Tournament.create(id: 203, name: 'Test4', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Regular Double Elimination 1-6', user_id: 1, date: Date.today, is_public: true)
create_schools(tournament, 16)
weight_classes=Weight::HS_WEIGHT_CLASSES.split(",")
tournament.create_pre_defined_weights(weight_classes)
@@ -75,7 +75,7 @@
end
# Regular Double Elimination 1-8
- tournament = Tournament.create(id: 204, name: 'Test5', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Regular Double Elimination 1-8', user_id: 1, date: Date.today)
+ tournament = Tournament.create(id: 204, name: 'Test5', address: 'some place', director: 'some guy', director_email: 'their@email.com', tournament_type: 'Regular Double Elimination 1-8', user_id: 1, date: Date.today, is_public: true)
create_schools(tournament, 16)
weight_classes=Weight::HS_WEIGHT_CLASSES.split(",")
tournament.create_pre_defined_weights(weight_classes)
diff --git a/test/controllers/schools_controller_test.rb b/test/controllers/schools_controller_test.rb
index 1a5dbb1..1d7f8a7 100644
--- a/test/controllers/schools_controller_test.rb
+++ b/test/controllers/schools_controller_test.rb
@@ -17,6 +17,10 @@ class SchoolsControllerTest < ActionController::TestCase
get :new, params: { tournament: @tournament.id }
end
+ def get_show
+ get :show, params: { id: @school.id }
+ end
+
def post_update
patch :update, params: { id: @school.id, school: {name: @school.name, tournament_id: @school.tournament_id} }
end
@@ -205,4 +209,85 @@ Some Guy
redirect
end
+ # SHOW PAGE PERMISSIONS WHEN TOURNAMENT IS NOT PUBLIC
+ test "logged in school delegate can get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_school_delegate
+ get_show
+ success
+ end
+
+ test "logged in user cannot get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_non_owner
+ get_show
+ redirect
+ end
+
+ test "logged in tournament delegate can get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_tournament_delegate
+ get_show
+ success
+ end
+
+ test "logged in tournament owner can get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_owner
+ get_show
+ success
+ end
+
+ test "non logged in user cannot get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ get_show
+ redirect
+ end
+
+ # SHOW PAGE PERMISSIONS WHEN TOURNAMENT IS PUBLIC
+ test "logged in school delegate can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_school_delegate
+ get_show
+ success
+ end
+
+ test "logged in user can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_non_owner
+ get_show
+ success
+ end
+
+ test "logged in tournament delegate can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_tournament_delegate
+ get_show
+ success
+ end
+
+ test "logged in tournament owner can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_owner
+ get_show
+ success
+ end
+
+ test "non logged in user can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ get_show
+ success
+ end
+ # END SHOW PAGE PERMISSIONS
+
end
diff --git a/test/controllers/tournaments_controller_test.rb b/test/controllers/tournaments_controller_test.rb
index 43e1c8a..f7481f0 100644
--- a/test/controllers/tournaments_controller_test.rb
+++ b/test/controllers/tournaments_controller_test.rb
@@ -14,6 +14,18 @@ class TournamentsControllerTest < ActionController::TestCase
def post_update
patch :update, params: { id: 1, tournament: {name: @tournament.name} }
end
+
+ def get_bracket
+ get :up_matches, params: { id: 1 }
+ end
+
+ def get_all_brackets
+ get :all_brackets, params: { id: 1 }
+ end
+
+ def get_up_matches
+ get :up_matches, params: { id: 1 }
+ end
def get_edit
get :edit, params: { id: 1 }
@@ -211,6 +223,248 @@ class TournamentsControllerTest < ActionController::TestCase
redirect
end
+ # BRACKETS PAGE PERMISSIONS WHEN TOURNAMENT IS NOT PUBLIC
+ test "logged in school delegate cannot get bracket page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_school_delegate
+ get_bracket
+ redirect
+ end
+
+ test "logged in user cannot get bracket page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_non_owner
+ get_bracket
+ redirect
+ end
+
+ test "logged in tournament delegate can get bracket page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_delegate
+ get_bracket
+ success
+ end
+
+ test "logged in tournament owner can get bracket page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_owner
+ get_bracket
+ success
+ end
+
+ test "non logged in user cannot get bracket page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ get_bracket
+ redirect
+ end
+
+ # BRACKETS PAGE PERMISSIONS WHEN TOURNAMENT IS PUBLIC
+ test "logged in school delegate can get bracket page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_school_delegate
+ get_bracket
+ success
+ end
+
+ test "logged in user can get bracket page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_non_owner
+ get_bracket
+ success
+ end
+
+ test "logged in tournament delegate can get bracket page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_delegate
+ get_bracket
+ success
+ end
+
+ test "logged in tournament owner can get bracket page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_owner
+ get_bracket
+ success
+ end
+
+ test "non logged in user can get bracket page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ get_bracket
+ success
+ end
+ # END BRACKETS PAGE PERMISSIONS
+
+ # ALL BRACKETS PAGE PERMISSIONS WHEN TOURNAMENT IS NOT PUBLIC
+ test "logged in school delegate cannot get all brackets page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_school_delegate
+ get_all_brackets
+ redirect
+ end
+
+ test "logged in user cannot get all brackets page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_non_owner
+ get_all_brackets
+ redirect
+ end
+
+ test "logged in tournament delegate can get all brackets page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_delegate
+ get_all_brackets
+ success
+ end
+
+ test "logged in tournament owner can get all brackets page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_owner
+ get_all_brackets
+ success
+ end
+
+ test "non logged in user cannot get all brackets page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ get_all_brackets
+ redirect
+ end
+
+ # ALL BRACKETS PAGE PERMISSIONS WHEN TOURNAMENT IS PUBLIC
+ test "logged in school delegate can get all brackets page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_school_delegate
+ get_all_brackets
+ success
+ end
+
+ test "logged in user can get all brackets page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_non_owner
+ get_all_brackets
+ success
+ end
+
+ test "logged in tournament delegate can get all brackets page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_delegate
+ get_all_brackets
+ success
+ end
+
+ test "logged in tournament owner can get all brackets page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_owner
+ get_all_brackets
+ success
+ end
+
+ test "non logged in user can get all brackets page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ get_all_brackets
+ success
+ end
+ # END ALL BRACKETS PAGE PERMISSIONS
+
+ # UP MATCHES PAGE PERMISSIONS WHEN TOURNAMENT IS NOT PUBLIC
+ test "logged in school delegate cannot get up matches page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_school_delegate
+ get_up_matches
+ redirect
+ end
+
+ test "logged in user cannot get up matches page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_non_owner
+ get_up_matches
+ redirect
+ end
+
+ test "logged in tournament delegate can get up matches page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_delegate
+ get_up_matches
+ success
+ end
+
+ test "logged in tournament owner can get up matches page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_owner
+ get_up_matches
+ success
+ end
+
+ test "non logged in user cannot get up matches page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ get_up_matches
+ redirect
+ end
+
+ # UP MATCHES PAGE PERMISSIONS WHEN TOURNAMENT IS PUBLIC
+ test "logged in school delegate can get up matches page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_school_delegate
+ get_up_matches
+ success
+ end
+
+ test "logged in user can get up matches page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_non_owner
+ get_up_matches
+ success
+ end
+
+ test "logged in tournament delegate can get up matches page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_delegate
+ get_up_matches
+ success
+ end
+
+ test "logged in tournament owner can get up matches page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_owner
+ get_up_matches
+ success
+ end
+
+ test "non logged in user can get up matches page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ get_up_matches
+ success
+ end
+ # END UP MATCHES PAGE PERMISSIONS
#TESTS THAT NEED MATCHES PUT ABOVE THIS
test "redirect up_matches if no matches" do
diff --git a/test/controllers/weights_controller_test.rb b/test/controllers/weights_controller_test.rb
index 2b8730c..6c8df59 100644
--- a/test/controllers/weights_controller_test.rb
+++ b/test/controllers/weights_controller_test.rb
@@ -30,6 +30,10 @@ class WeightsControllerTest < ActionController::TestCase
get :edit, params: { id: @weight.id }
end
+ def get_show
+ get :show, params: { id: @weight.id }
+ end
+
def get_pool_order
post :pool_order, params: {pool_to_order: 1, id: @weight.id}
end
@@ -210,6 +214,87 @@ class WeightsControllerTest < ActionController::TestCase
redirect
end
+ # SHOW PAGE PERMISSIONS WHEN TOURNAMENT IS NOT PUBLIC
+ test "logged in school delegate cannot get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_school_delegate
+ get_show
+ redirect
+ end
+
+ test "logged in user cannot get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_non_owner
+ get_show
+ redirect
+ end
+
+ test "logged in tournament delegate can get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_tournament_delegate
+ get_show
+ success
+ end
+
+ test "logged in tournament owner can get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ sign_in_owner
+ get_show
+ success
+ end
+
+ test "non logged in user cannot get show page when tournament is not public" do
+ @tournament.is_public = false
+ @tournament.save
+ get_show
+ redirect
+ end
+
+ # SHOW PAGE PERMISSIONS WHEN TOURNAMENT IS PUBLIC
+ test "logged in school delegate can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_school_delegate
+ get_show
+ success
+ end
+
+ test "logged in user can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_non_owner
+ get_show
+ success
+ end
+
+ test "logged in tournament delegate can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_tournament_delegate
+ get_show
+ success
+ end
+
+ test "logged in tournament owner can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ sign_in_owner
+ get_show
+ success
+ end
+
+ test "non logged in user can get show page when tournament is public" do
+ @tournament.is_public = true
+ @tournament.save
+ get_show
+ success
+ end
+ # END SHOW PAGE PERMISSIONS
+
test "view wegiht" do
get :show, params: { id: 1 }
success
diff --git a/test/fixtures/tournaments.yml b/test/fixtures/tournaments.yml
index f8f7104..2287e6d 100644
--- a/test/fixtures/tournaments.yml
+++ b/test/fixtures/tournaments.yml
@@ -8,4 +8,5 @@ one:
director_email: jacob.wimer@gmail.com
tournament_type: Pool to bracket
user_id: 1
- date: 2015-12-30
\ No newline at end of file
+ date: 2015-12-30
+ is_public: true
\ No newline at end of file
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 91ff6ac..7dc12f0 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -21,6 +21,7 @@ class ActiveSupport::TestCase
@tournament.director_email= "test@test.com"
@tournament.tournament_type = "Pool to bracket"
@tournament.date = "2015-12-30"
+ @tournament.is_public = true
@tournament.save
@school = School.new
@school.name = "Test"
@@ -43,6 +44,7 @@ class ActiveSupport::TestCase
@tournament.director_email= "test@test.com"
@tournament.tournament_type = "Regular Double Elimination 1-6"
@tournament.date = "2015-12-30"
+ @tournament.is_public = true
@tournament.save
@school = School.new
@school.name = "Test"
@@ -65,6 +67,7 @@ class ActiveSupport::TestCase
@tournament.director_email= "test@test.com"
@tournament.tournament_type = tournament_type
@tournament.date = "2015-12-30"
+ @tournament.is_public = true
@tournament.save
@school = School.new
@school.name = "Test"
@@ -100,6 +103,7 @@ class ActiveSupport::TestCase
@tournament.director_email= "test@test.com"
@tournament.tournament_type = "Pool to bracket"
@tournament.date = "2015-12-30"
+ @tournament.is_public = true
@tournament.save
# First school
|