Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Create db/seeds for necessary roles #9462

Merged
merged 2 commits into from
Jul 9, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions app/controllers/users_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@ class UsersController < ApplicationController

RECENT_AUTHENTICATION_DURATION = 10.minutes.freeze

def self.WCA_TEAMS
%w(wst wrt wdc wrc wct)
end

def index
params[:order] = params[:order] == "asc" ? "asc" : "desc"

Expand Down
4 changes: 2 additions & 2 deletions db/seeds/development/competitions.seeds.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# frozen_string_literal: true

after "development:users" do
after "development:users", "development:user_roles" do
class << self
def random_events
official = Event.official
Expand Down Expand Up @@ -29,7 +29,7 @@ def random_city(country)

countries = Country.all

delegate = User.find_by(delegate_status: "delegate")
delegate = RolesMetadataDelegateRegions.includes(:user_role).where.not(status: RolesMetadataDelegateRegions.statuses[:trainee_delegate]).select { |role_metadata| role_metadata.user_role.is_active? }.sample.user
danieljames-dj marked this conversation as resolved.
Show resolved Hide resolved

users = User.where.not(wca_id: nil).sample(93)

Expand Down
4 changes: 2 additions & 2 deletions db/seeds/development/posts.seeds.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

after "development:users" do
results_team_users = Team.find_by_friendly_id('wst').team_members.map(&:user)
wct_users = UserGroup.teams_committees_group_wct.active_users
100.times do
sticky = (rand(25) == 0)
title = Faker::Hacker.say_something_smart
Expand All @@ -10,7 +10,7 @@
created_at: 2.hours.ago,
title: title,
slug: title.parameterize,
author: results_team_users.sample,
author: wct_users.sample,
body: Faker::Lorem.paragraph,
)
end
Expand Down
87 changes: 69 additions & 18 deletions db/seeds/development/user_roles.seeds.rb
Original file line number Diff line number Diff line change
@@ -1,26 +1,77 @@
# frozen_string_literal: true

after :user_groups do
# Delegates on probation roles
3.times { FactoryBot.create(:probation_role) }
9.times { FactoryBot.create(:probation_role, :inactive) }

# Delegate roles
UserGroup.root_groups.delegate_regions.each do |group|
# Senior Delegate
FactoryBot.create(:senior_delegate_role, group: group)
# Past Senior Delegates
2.times { FactoryBot.create(:senior_delegate_role, :inactive, group: group) }

if group.all_child_groups.any?
group.all_child_groups.each do |child_group|
# Regional Delegate
FactoryBot.create(:regional_delegate_role, group: child_group)
# Past Regional Delegates
2.times { FactoryBot.create(:regional_delegate_role, :inactive, group: child_group) }
# Delegates
4.times { FactoryBot.create(:delegate_role, group: child_group) }
3.times { FactoryBot.create(:junior_delegate_role, group: child_group) }
2.times { FactoryBot.create(:trainee_delegate_role, group: child_group) }
# Past Delegates
12.times { FactoryBot.create(:delegate_role, :inactive, group: child_group) }
9.times { FactoryBot.create(:junior_delegate_role, :inactive, group: child_group) }
6.times { FactoryBot.create(:trainee_delegate_role, :inactive, group: child_group) }
end
else
# Delegates
4.times { FactoryBot.create(:delegate_role, group: group) }
3.times { FactoryBot.create(:junior_delegate_role, group: group) }
2.times { FactoryBot.create(:trainee_delegate_role, group: group) }
# Past Delegates
12.times { FactoryBot.create(:delegate_role, :inactive, group: group) }
9.times { FactoryBot.create(:junior_delegate_role, :inactive, group: group) }
6.times { FactoryBot.create(:trainee_delegate_role, :inactive, group: group) }
end
end

# Teams & Committees
UserGroup.teams_committees.each do |group|
# Current roles
leader = FactoryBot.create(:user_role, :active, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:leader]))
leader.user.update_column(:email, "#{group.metadata.friendly_id}_team@valid.domain")
3.times { FactoryBot.create(:user_role, :active, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:senior_member])) }
5.times { FactoryBot.create(:user_role, :active, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:member])) }
# Past roles
3.times { FactoryBot.create(:user_role, :inactive, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:leader])) }
9.times { FactoryBot.create(:user_role, :inactive, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:senior_member])) }
15.times { FactoryBot.create(:user_role, :inactive, group: group, metadata: FactoryBot.create(:roles_metadata_teams_committees, status: RolesMetadataTeamsCommittees.statuses[:member])) }
end

# Board Roles
past_board_roles = 9.times.collect { |index| FactoryBot.create!(:board_role, :inactive) }
current_board_roles = 4.times.collect { |index| FactoryBot.create!(:board_role, :active) }
past_board_roles = 9.times.collect { |index| FactoryBot.create(:board_role, :inactive) }
current_board_roles = 4.times.collect { |index| FactoryBot.create(:board_role, :active) }

# Officer Roles
# Giving officer roles to all board users except past_board_roles[0] and current_board_roles[0]
FactoryBot.create!(:executive_director_role, :inactive, user: past_board_roles[1].user)
FactoryBot.create!(:executive_director_role, :inactive, user: past_board_roles[2].user)
FactoryBot.create!(:executive_director_role, user: current_board_roles[1].user)
FactoryBot.create!(:chair_role, :inactive, user: past_board_roles[2].user)
FactoryBot.create!(:chair_role, :inactive, user: past_board_roles[3].user)
FactoryBot.create!(:chair_role, user: current_board_roles[1].user)
FactoryBot.create!(:vice_chair_role, :inactive, user: past_board_roles[4].user)
FactoryBot.create!(:vice_chair_role, :inactive, user: past_board_roles[5].user)
FactoryBot.create!(:vice_chair_role, user: current_board_roles[2].user)
FactoryBot.create!(:secretary_role, :inactive, user: past_board_roles[6].user)
FactoryBot.create!(:secretary_role, :inactive, user: past_board_roles[7].user)
FactoryBot.create!(:secretary_role, user: current_board_roles[3].user)
FactoryBot.create!(:secretary_role)
FactoryBot.create!(:treasurer_role, :inactive, user: past_board_roles[8].user)
FactoryBot.create!(:treasurer_role, :inactive)
FactoryBot.create!(:treasurer_role)
FactoryBot.create(:executive_director_role, :inactive, user: past_board_roles[1].user)
FactoryBot.create(:executive_director_role, :inactive, user: past_board_roles[2].user)
FactoryBot.create(:executive_director_role, user: current_board_roles[1].user)
FactoryBot.create(:chair_role, :inactive, user: past_board_roles[2].user)
FactoryBot.create(:chair_role, :inactive, user: past_board_roles[3].user)
FactoryBot.create(:chair_role, user: current_board_roles[1].user)
FactoryBot.create(:vice_chair_role, :inactive, user: past_board_roles[4].user)
FactoryBot.create(:vice_chair_role, :inactive, user: past_board_roles[5].user)
FactoryBot.create(:vice_chair_role, user: current_board_roles[2].user)
FactoryBot.create(:secretary_role, :inactive, user: past_board_roles[6].user)
FactoryBot.create(:secretary_role, :inactive, user: past_board_roles[7].user)
FactoryBot.create(:secretary_role, user: current_board_roles[3].user)
FactoryBot.create(:secretary_role)
FactoryBot.create(:treasurer_role, :inactive, user: past_board_roles[8].user)
FactoryBot.create(:treasurer_role, :inactive)
FactoryBot.create(:treasurer_role)
end
43 changes: 0 additions & 43 deletions db/seeds/development/users.seeds.rb
Original file line number Diff line number Diff line change
@@ -1,48 +1,5 @@
# frozen_string_literal: true

after :teams do
def self.random_user
{
name: Faker::Name.name,
country_iso2: "US",
gender: "m",
dob: Date.new(1980, 1, 1),
email: Faker::Internet.email,
password: "wca",
password_confirmation: "wca",
}
end

# Create senior delegates and their subordinate delegates
5.times do
senior_delegate = FactoryBot.create(:senior_delegate_role)
rand(10).times do
FactoryBot.create([:delegate, :junior_delegate].sample,
region_id: senior_delegate.group.id)
end
end

# Create some delegates without a senior delegate
5.times do
FactoryBot.create([:delegate, :junior_delegate].sample)
end

# Create members and leaders for every WCA team
UsersController.WCA_TEAMS.each do |team_friendly_id|
team_id = Team.find_by_friendly_id(team_friendly_id).id

leader = FactoryBot.create(:user)
FactoryBot.create(:team_member, user_id: leader.id, team_id: team_id, team_leader: true)
# The team name isn't a valid email, but it's so much easier to type.
leader.update_column(:email, "#{team_friendly_id}_team@valid.domain")

3.times do
member = FactoryBot.create(:user)
FactoryBot.create(:team_member, user_id: member.id, team_id: team_id)
end
end
end

# Create a bunch of people with WCA IDs so we can seed large competitions.
100.times do
FactoryBot.create :user, :wca_id
Expand Down