From f9488b183bbd41d74d801a9cbdd41410be4ddba5 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Tue, 29 Apr 2014 03:41:21 -0400 Subject: Validate everything that I can. --- app/models/game.rb | 40 +++++- app/models/game_setting.rb | 11 ++ app/models/match.rb | 32 ++++- app/models/tournament.rb | 85 ++++++++++--- app/models/tournament_setting.rb | 12 ++ app/models/tournament_stage.rb | 10 ++ app/models/user.rb | 94 +++++++------- db/seeds.rb | 264 +++++++++++++++++++++------------------ 8 files changed, 354 insertions(+), 194 deletions(-) diff --git a/app/models/game.rb b/app/models/game.rb index c5cb32a..d5622af 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -1,7 +1,45 @@ class Game < ActiveRecord::Base belongs_to :parent, class_name: "Game" + has_many :children, class_name: "Game" - has_many :game_settings + has_many :game_settings + validates_associated :game_settings alias_attribute :settings, :game_settings + + validates(:name, + presence: true, + length: {minimum: 5}, + uniqueness: {case_sensitive: true}) + + validates(:min_players_per_team, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_players_per_team, + }) + validates(:max_players_per_team, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_players_per_team, + }) + + validates(:min_teams_per_match, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_teams_per_match, + }) + validates(:max_teams_per_match, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_teams_per_match, + }) + + validate :validate_scoring_method + def validate_scoring_method + (not self.scoring_method.try(:empty?)) and (Tournament.scoring_methods.include? scoring_method) + end end diff --git a/app/models/game_setting.rb b/app/models/game_setting.rb index e701cae..40ab32f 100644 --- a/app/models/game_setting.rb +++ b/app/models/game_setting.rb @@ -3,6 +3,17 @@ class GameSetting < ActiveRecord::Base alias_attribute :value, :default + validates(:vartype, presence: true, numericality: {only_integer: true}) + validates(:type_opt, presence: true, if: :needs_type_opt?) + + def needs_type_opt? + [ + GameSetting.types[:pick_one_radio], + GameSetting.types[:pick_one_dropdown], + GameSetting.types[:pick_several], + ].include? self.vartype + end + def self.types return { :text_short => 0, diff --git a/app/models/match.rb b/app/models/match.rb index 85084f5..7b36777 100644 --- a/app/models/match.rb +++ b/app/models/match.rb @@ -5,6 +5,18 @@ class Match < ActiveRecord::Base belongs_to :winner, class_name: "Team" + # status:integer + before_save { self.status ||= 0 } + + # tournament_stage:references + validates_presence_of :tournament_stage + + # winner:references + # not validated + + ## + # Returns whether or not all the statistics have been collected + # such that the match may be considered finished. def finished? ok = true tournament_stage.scoring.stats_needed.each do |stat| @@ -13,26 +25,35 @@ class Match < ActiveRecord::Base ok end - def win?(player) - winner.players.include? player - end - + ## + # Returns all players involved in this match (from all teams). def users ret = [] self.teams.each{|t| ret.concat(t.users)} return ret end + ## + # Given a sampling class (a class that implements the interface + # described in `/lib/sampling/README.md`), this returns which + # statistics (in an Array of Strings) an instance of the class + # should collect. def stats_from(sampling_class) figure_sampling_methods.map{|stat,klass| (sampling_class==klass) ? stat : nil}.select{|s| not s.nil?} end + ## + # Delagates PUT/PATCH HTTP params to the appropriate sampling + # methods. def handle_sampling(user, params) method_classes.each do |klass| klass.new(self).handle_user_interaction(user, params) end end + ## + # Delagates out rendering forms to the appropriate sampling + # methods. def render_sampling(user) require 'set' html = '' @@ -46,6 +67,9 @@ class Match < ActiveRecord::Base return html.html_safe end + ## + # Calls `Sampling#start` on every sampling method that this match + # uses. def start_sampling method_classes.each do |klass| klass.new(self).start diff --git a/app/models/tournament.rb b/app/models/tournament.rb index b867716..8a96dcc 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,15 +1,60 @@ class Tournament < ActiveRecord::Base belongs_to :game + has_many :tournament_stages + # Don't validate presence of stages; sadly, it seems to break things + #validates_presence_of :tournament_stages + alias_attribute :stages, :tournament_stages + has_many :brackets + has_many :tournament_settings + has_and_belongs_to_many :players, class_name: "User", association_foreign_key: "player_id", join_table: "players_tournaments" + has_and_belongs_to_many :hosts, class_name: "User", association_foreign_key: "host_id", join_table: "hosts_tournaments" + validates_presence_of :hosts - alias_attribute :stages, :tournament_stages + validates_presence_of :game before_save { self.status ||= 0 } + validates(:name, + presence: true, + length: {minimum: 5}, + uniqueness: {case_sensitive: true}) + + validates(:min_players_per_team, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_players_per_team, + }) + validates(:max_players_per_team, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_players_per_team, + }) + + validates(:min_teams_per_match, + presence: true, + numericality: { + only_integer: true, + less_than_or_equal_to: :max_teams_per_match, + }) + validates(:max_teams_per_match, + presence: true, + numericality: { + only_integer: true, + greater_than_or_equal_to: :min_teams_per_match, + }) + + validate :validate_scoring_method + def validate_scoring_method + (not self.scoring_method.try(:empty?)) and (scoring_methods.include? scoring_method) + end + # Settings ################################################################# def settings @@ -69,16 +114,10 @@ class Tournament < ActiveRecord::Base end end - # Misc. #################################################################### - - def open? - return true - end - # Joining/Leaving ########################################################## def joinable_by?(user) - return (open? and user.can?(:join_tournament) and !players.include?(user)) + return (status==0 and user.can?(:join_tournament) and !players.include?(user)) end def join(user) @@ -100,32 +139,42 @@ class Tournament < ActiveRecord::Base @scoring ||= "Scoring::#{self.scoring_method.camelcase}".constantize end - # YISSSSSS + # Options for configured methods/modules ################################### + # We're conflicted about whether these should be `self.` or not. ########### - def scoring_methods + def self.scoring_methods make_methods "scoring" end + def scoring_methods + self.class.scoring_methods + end def sampling_methods - make_methods("sampling").select do |name| + self.class.make_methods("sampling").select do |name| "Sampling::#{name.camelcase}".constantize.works_with?(self.game) end end - def scheduling_methods + def self.scheduling_methods make_methods "scheduling" end + def scheduling_methods + self.class.scheduling_methods + end - def seeding_methods + def self.seeding_methods make_methods "seeding" end + def seeding_methods + self.class.seeding_methods + end private - def make_methods(dir) - @@methods ||= {} - if @@methods[dir].nil? or Rails.env.development? - @@methods[dir] = Dir.glob("#{Rails.root}/lib/#{dir}/*.rb").map{|filename| File.basename(filename, ".rb") } + def self.make_methods(dir) + @methods ||= {} + if @methods[dir].nil? or Rails.env.development? + @methods[dir] = Dir.glob("#{Rails.root}/lib/#{dir}/*.rb").map{|filename| File.basename(filename, ".rb") } end - return @@methods[dir] + return @methods[dir] end end diff --git a/app/models/tournament_setting.rb b/app/models/tournament_setting.rb index 9efaaea..20d9842 100644 --- a/app/models/tournament_setting.rb +++ b/app/models/tournament_setting.rb @@ -1,6 +1,18 @@ class TournamentSetting < ActiveRecord::Base belongs_to :tournament + validates(:vartype, presence: true, numericality: {only_integer: true}) + validates(:type_opt, presence: true, if: :needs_type_opt?) + + def needs_type_opt? + [ + GameSetting.types[:pick_one_radio], + GameSetting.types[:pick_one_dropdown], + GameSetting.types[:pick_several], + ].include? self.vartype + end + + def self.types GameSetting.types end diff --git a/app/models/tournament_stage.rb b/app/models/tournament_stage.rb index 19b9c23..72aa14c 100644 --- a/app/models/tournament_stage.rb +++ b/app/models/tournament_stage.rb @@ -1,7 +1,17 @@ class TournamentStage < ActiveRecord::Base belongs_to :tournament + validates_presence_of :tournament + has_many :matches + validates(:scheduling_method, + presence: true, + inclusion: {in: Tournament.new.scheduling_methods}) + + validates(:seeding_method, + presence: true, + inclusion: {in: Tournament.new.seeding_methods}) + # A 1-indexed hash of matches def matches_ordered h = {} diff --git a/app/models/user.rb b/app/models/user.rb index b2c7862..a39037c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,7 @@ class User < ActiveRecord::Base - before_save :default_values - + ################################################################## + # Relationships # + ################################################################## has_and_belongs_to_many :tournaments_played, class_name: "Tournament", foreign_key: "player_id", join_table: "players_tournaments" has_and_belongs_to_many :tournaments_hosted, class_name: "Tournament", foreign_key: "host_id", join_table: "hosts_tournaments" has_and_belongs_to_many :teams @@ -8,20 +9,49 @@ class User < ActiveRecord::Base has_many :statistics has_many :remote_usernames - apply_simple_captcha + ################################################################## + # Attributes # + ################################################################## - acts_as_messageable + # name:string + validates(:name, presence: true, length: { maximum: 50 }) + # email:string:uniq + before_save { self.email = email.downcase } + validates(:email, + presence: true, + format: {with: /\A\S+@\S+\.\S+\z/i}, + uniqueness: { case_sensitive: false }) + + # user_name:string_uniq + validates(:user_name, + presence: true, + length:{maximum: 50}, + format: {with: /\A[a-zA-Z0-9 _\-]+\z/}, + uniqueness: {case_sensitive: false }) + + # password_digest:string + has_secure_password validations: false # maps :password and :password_confirmation to :password_digest + validates(:password, + length: { minimum: 6 }, + confirmation: true, + unless: Proc.new { |u| u.password.try(:empty?) and not u.password_digest.try(:empty?) }) + + # permissions:integer + before_save { self.permissions ||= Server.first.default_user_permissions } + + ################################################################## + # XXX: hard-coded-ish. It makes me feel dirty. # + ################################################################## + apply_simple_captcha + acts_as_messageable def mailboxer_email(object) return nil end - before_save { self.email = email.downcase } - before_save { self.user_name = user_name } - - def default_values - self.permissions ||= Server.first.default_user_permissions - end + ################################################################## + # remote_usernames # + ################################################################## def set_remote_username(game, data) remote = self.remote_usernames.where(:game => game).first @@ -46,6 +76,10 @@ class User < ActiveRecord::Base end end + ################################################################## + # Permissions # + ################################################################## + def self.permission_bits return { :create_tournament => (2**1), @@ -104,7 +138,6 @@ class User < ActiveRecord::Base end end - # A representation of the permission bits as a mock-array. def abilities @abilities ||= Abilities.new(self) @@ -122,7 +155,7 @@ class User < ActiveRecord::Base # easy to modify them using a form. class Abilities def initialize(user) - @user = user +o @user = user end def [](ability) return @user.can?(ability) @@ -146,40 +179,9 @@ class User < ActiveRecord::Base end end - # VAILD_EMAIL is the regex used to validate a user given email. - VALID_EMAIL_REG = /\A\S+@\S+\.\S+\z/i - - # VALID_USER_NAME checks to make sure a user's user_name - # is in the proper format. - VALID_USER_NAME_REG = /\A[a-zA-Z0-9 _\-]+\z/ - - # The following lines put a user account through a series of - # validations in order to make sure all of their information - # is in the proper format. - # - # validates :symbol_to_be_validated - # - # - presence: determines whether or not a symbol is filled or not - # - length: ensures there is a length limit on the symbol - # - format: checks the format of given information to ensure - # validity - validates(:name, presence: true, length: { maximum: 50 }) - validates(:email, presence: true, format: {with: - VALID_EMAIL_REG}, - uniqueness: { case_sensitive: false }) - validates(:user_name, presence: true, length:{maximum: 50}, - format: {with: VALID_USER_NAME_REG }, - uniqueness: {case_sensitive: false }) - - # Instead of adding password and password_confirmation - # attributes, requiring the presence of a password, - # requiring that pw and pw_com match, and add an authenticate - # method to compare an encrypted password to the - # password_digest to authenticate users, I can just add - # has_secure_password which does all of this for me. - has_secure_password - - validates :password, length: { minimum: 6 } + ################################################################## + # Null-object pattern # + ################################################################## class NilUser def nil? diff --git a/db/seeds.rb b/db/seeds.rb index 8327e30..cccf3e5 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -3,136 +3,148 @@ # # Examples: # -# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }]) -# Mayor.create(name: 'Emanuel', city: cities.first) +# cities = City.create!([{ name: 'Chicago' }, { name: 'Copenhagen' }]) +# Mayor.create!(name: 'Emanuel', city: cities.first) # p = User.permission_bits -Server.create(default_user_permissions: p[:join_tournament] | p[:create_pm] | p[:edit_pm] | p[:create_bracket]) +Server.create!(default_user_permissions: p[:join_tournament] | p[:create_pm] | p[:edit_pm] | p[:create_bracket]) -league = Game.create(name: "League of Legends", min_players_per_team: 5, max_players_per_team: 5, min_teams_per_match: 2, max_teams_per_match: 2) -league.settings.create(display_order: 1, name: "map" , description: "Select a map to play on.", vartype: GameSetting::types[:pick_one_dropdown], type_opt: "summoners_rift,twisted_treeline,crystal_scar,haunted_abyss", default: "summoners_rift") -league.settings.create(display_order: 2, name: "pick_type", description: "Select a pick type." , vartype: GameSetting::types[:pick_one_dropdown], type_opt: "blind_pick,draft" , default: "draft") +league = Game.create!(name: "League of Legends", min_players_per_team: 5, max_players_per_team: 5, min_teams_per_match: 2, max_teams_per_match: 2) +league.settings.create!(display_order: 1, name: "map" , description: "Select a map to play on.", vartype: GameSetting::types[:pick_one_dropdown], type_opt: "summoners_rift,twisted_treeline,crystal_scar,haunted_abyss", default: "summoners_rift") +league.settings.create!(display_order: 2, name: "pick_type", description: "Select a pick type." , vartype: GameSetting::types[:pick_one_dropdown], type_opt: "blind_pick,draft" , default: "draft") -chess = Game.create(name: "Chess", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, max_teams_per_match: 2) -chess.settings.create(display_order: 1, name: "time_control", description: "Enter a value for Time Control (ie. 5-5, 30, 6hr, or None)", vartype: GameSetting::types[:text_short], default: "") +chess = Game.create!(name: "Chess", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, max_teams_per_match: 2) +chess.settings.create!(display_order: 1, name: "time_control", description: "Enter a value for Time Control (ie. 5-5, 30, 6hr, or None)", vartype: GameSetting::types[:text_short], default: "") -hearthstone = Game.create(name: "Hearthstone", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, max_teams_per_match: 2) -hearthstone.settings.create(display_order: 1, name: "deck_name", description: "Enter a name for your deck, be descriptive.", vartype: GameSetting::types[:text_long], default: "") +hearthstone = Game.create!(name: "Hearthstone", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, max_teams_per_match: 2) +hearthstone.settings.create!(display_order: 1, name: "deck_name", description: "Enter a name for your deck, be descriptive.", vartype: GameSetting::types[:text_long], default: "") -rockpaperscissors = Game.create(name: "Rock, Paper, Scissors", min_players_per_team: 1, max_players_per_team: 3, min_teams_per_match: 2, max_teams_per_match: 2) -rockpaperscissors.settings.create(display_order: 4, name: "lizard_spock_allowed", description: "Will you allow Lizard and Spock?" , vartype: GameSetting::types[:true_false] , default: false) -rockpaperscissors.settings.create(display_order: 5, name: "favorite_object" , description: "What is your favorite object in RPS?", vartype: GameSetting::types[:pick_one_radio], type_opt: "rock,paper,scissors", default: "rock") -rockpaperscissors.settings.create(display_order: 6, name: "check_boxes" , description: "Example boxes" , vartype: GameSetting::types[:pick_several] , type_opt: "i_do_not_know,there_is_now_spoon,wow,because_electricity,wat?", default: "wow,wat?") +rockpaperscissors = Game.create!(name: "Rock, Paper, Scissors", min_players_per_team: 1, max_players_per_team: 3, min_teams_per_match: 2, max_teams_per_match: 2) +rockpaperscissors.settings.create!(display_order: 4, name: "lizard_spock_allowed", description: "Will you allow Lizard and Spock?" , vartype: GameSetting::types[:true_false] , default: false) +rockpaperscissors.settings.create!(display_order: 5, name: "favorite_object" , description: "What is your favorite object in RPS?", vartype: GameSetting::types[:pick_one_radio], type_opt: "rock,paper,scissors", default: "rock") +rockpaperscissors.settings.create!(display_order: 6, name: "check_boxes" , description: "Example boxes" , vartype: GameSetting::types[:pick_several] , type_opt: "i_do_not_know,there_is_now_spoon,wow,because_electricity,wat?", default: "wow,wat?") if Rails.env.development? # User 1, the ADMIN - User.create(name: "Administrator", user_name: "admin", email: "root@localhost.lan", password: "password", password_confirmation: "password", permissions: 0xFFFFFFFF) + admin = User.create!(name: "Administrator", user_name: "admin", email: "root@localhost.lan", password: "password", permissions: 0xFFFFFFFF) # John Doe's for testing - User.create(name: "John 0", password: "password", email: "john0@gmail.com", user_name: "johndoe0", password_confirmation: "password") - User.create(name: "John 1", password: "password", email: "john1@gmail.com", user_name: "johndoe1", password_confirmation: "password") - User.create(name: "John 2", password: "password", email: "john2@gmail.com", user_name: "johndoe2", password_confirmation: "password") - User.create(name: "John 3", password: "password", email: "john3@gmail.com", user_name: "johndoe3", password_confirmation: "password") - User.create(name: "John 4", password: "password", email: "john4@gmail.com", user_name: "johndoe4", password_confirmation: "password") - User.create(name: "John 5", password: "password", email: "john5@gmail.com", user_name: "johndoe5", password_confirmation: "password") - User.create(name: "John 6", password: "password", email: "john6@gmail.com", user_name: "johndoe6", password_confirmation: "password") - User.create(name: "John 7", password: "password", email: "john7@gmail.com", user_name: "johndoe7", password_confirmation: "password") - User.create(name: "John 8", password: "password", email: "john8@gmail.com", user_name: "johndoe8", password_confirmation: "password") - User.create(name: "John 9", password: "password", email: "john9@gmail.com", user_name: "johndoe9", password_confirmation: "password") + User.create!(name: "John 0", password: "password", email: "john0@gmail.com", user_name: "johndoe0") + User.create!(name: "John 1", password: "password", email: "john1@gmail.com", user_name: "johndoe1") + User.create!(name: "John 2", password: "password", email: "john2@gmail.com", user_name: "johndoe2") + User.create!(name: "John 3", password: "password", email: "john3@gmail.com", user_name: "johndoe3") + User.create!(name: "John 4", password: "password", email: "john4@gmail.com", user_name: "johndoe4") + User.create!(name: "John 5", password: "password", email: "john5@gmail.com", user_name: "johndoe5") + User.create!(name: "John 6", password: "password", email: "john6@gmail.com", user_name: "johndoe6") + User.create!(name: "John 7", password: "password", email: "john7@gmail.com", user_name: "johndoe7") + User.create!(name: "John 8", password: "password", email: "john8@gmail.com", user_name: "johndoe8") + User.create!(name: "John 9", password: "password", email: "john9@gmail.com", user_name: "johndoe9") # Users for mocked Riot API calls players_for_league = [] - players_for_league.push(User.create(name: "Sytrie" , password: "password", email: "Sytrie@gmail.com" , user_name: "Sytrie" , password_confirmation: "password")) - players_for_league.push(User.create(name: "Derpanator115" , password: "password", email: "Derpanator115@gmail.com" , user_name: "Derpanator115" , password_confirmation: "password")) - players_for_league.push(User.create(name: "Wlknexe56" , password: "password", email: "Wlknexe56@gmail.com" , user_name: "Wlknexe56" , password_confirmation: "password")) - players_for_league.push(User.create(name: "DVisionzz" , password: "password", email: "DVisionzz@gmail.com" , user_name: "DVisionzz" , password_confirmation: "password")) - players_for_league.push(User.create(name: "HYP3RTONIC" , password: "password", email: "HYP3RTONIC@gmail.com" , user_name: "HYP3RTONIC" , password_confirmation: "password")) - players_for_league.push(User.create(name: "M9Fumjaa" , password: "password", email: "M9Fumjaa@gmail.com" , user_name: "M9Fumjaa" , password_confirmation: "password")) - players_for_league.push(User.create(name: "spikevsnaruto" , password: "password", email: "spikevsnaruto@gmail.com" , user_name: "spikevsnaruto" , password_confirmation: "password")) - players_for_league.push(User.create(name: "GoogleMaSkills" , password: "password", email: "GoogleMaSkills@gmail.com" , user_name: "GoogleMaSkills" , password_confirmation: "password")) - players_for_league.push(User.create(name: "james chamberlan", password: "password", email: "jameschamberlan@gmail.com", user_name: "james chamberlan", password_confirmation: "password")) - players_for_league.push(User.create(name: "Kaceytron" , password: "password", email: "Kaceytron@gmail.com" , user_name: "Kaceytron" , password_confirmation: "password")) + players_for_league.push(User.create!(name: "Sytrie" , password: "password", email: "Sytrie@gmail.com" , user_name: "Sytrie" )) + players_for_league.push(User.create!(name: "Derpanator115" , password: "password", email: "Derpanator115@gmail.com" , user_name: "Derpanator115" )) + players_for_league.push(User.create!(name: "Wlknexe56" , password: "password", email: "Wlknexe56@gmail.com" , user_name: "Wlknexe56" )) + players_for_league.push(User.create!(name: "DVisionzz" , password: "password", email: "DVisionzz@gmail.com" , user_name: "DVisionzz" )) + players_for_league.push(User.create!(name: "HYP3RTONIC" , password: "password", email: "HYP3RTONIC@gmail.com" , user_name: "HYP3RTONIC" )) + players_for_league.push(User.create!(name: "M9Fumjaa" , password: "password", email: "M9Fumjaa@gmail.com" , user_name: "M9Fumjaa" )) + players_for_league.push(User.create!(name: "spikevsnaruto" , password: "password", email: "spikevsnaruto@gmail.com" , user_name: "spikevsnaruto" )) + players_for_league.push(User.create!(name: "GoogleMaSkills" , password: "password", email: "GoogleMaSkills@gmail.com" , user_name: "GoogleMaSkills" )) + players_for_league.push(User.create!(name: "james chamberlan", password: "password", email: "jameschamberlan@gmail.com", user_name: "james chamberlan")) + players_for_league.push(User.create!(name: "Kaceytron" , password: "password", email: "Kaceytron@gmail.com" , user_name: "Kaceytron" )) # Semi-real users - guntas = User.create(name: "Guntas Grewal" , password: "password", email: "guntasgrewal@gmail.com" , user_name: "guntasgrewal", password_confirmation: "password") - luke = User.create(name: "Luke Shumaker" , password: "password", email: "lukeshu@emacs4lyfe.com" , user_name: "lukeshu" , password_confirmation: "password") - tomer = User.create(name: "Tomer Kimia" , password: "password", email: "tomer@2majors4lyfe.com" , user_name: "tkimia" , password_confirmation: "password") - josh = User.create(name: "Josh Huser" , password: "password", email: "jhuser@iownabusiness.net" , user_name: "WinterWorks" , password_confirmation: "password") - dunsmore = User.create(name: "Professor Dunsmore", password: "password", email: "bxd@purdue.edu" , user_name: "Dumbledore" , password_confirmation: "password") - marco = User.create(name: "Marco Polo" , password: "password", email: "marco@ta4lyfe.com" , user_name: "iCoordinate" , password_confirmation: "password") - jordan = User.create(name: "Geoffrey Webb" , password: "password", email: "imnotjoffreybarathian@gameofthrones.com", user_name: "GTBPhoenix" , password_confirmation: "password") - obama = User.create(name: "Obama" , password: "password", email: "obama@whitehouse.gov" , user_name: "Obama" , password_confirmation: "password") - - g = Array.new - - davis = User.create(name: "Davis Webb" , password: "password", email: "davislwebb@gmail.com" , user_name: "TeslasMind" , password_confirmation: "password") - foy = User.create(name: "Nathaniel Foy" , password: "password", email: "nfoy@purdue.edu" , user_name: "NalfeinX" , password_confirmation: "password") - andrew = User.create(name: "Andrew Murrell" , password: "password", email: "murrel@murrel.gov" , user_name: "ImFromNasa" , password_confirmation: "password") - joey = User.create(name: "Joseph Adams" , password: "password", email: "alpha142@fluttershyop.com" , user_name: "alpha142" , password_confirmation: "password") - panda = User.create(name: "Panda" , password: "password", email: "panda@gmail.com" , user_name: "InspectorPanderp" , password_confirmation: "password") - mesa = User.create(name: "Mesataki" , password: "password", email: "mesataki@gmail.com" , user_name: "Mesataki" , password_confirmation: "password") - guntas_league = User.create(name: "TolkiensButt" , password: "password", email: "TolkiensButt@gmail.com" , user_name: "TolkiensButt" , password_confirmation: "password") - lyra = User.create(name: "Lyra Heartstings" , password: "password", email: "LyraHeartstings@gmail.com" , user_name: "Lyra Heartstings" , password_confirmation: "password") - josh_league = User.create(name: "Josh_league" , password: "password", email: "josh_league@gmail.com" , user_name: "Joshoowah" , password_confirmation: "password") - jeff = User.create(name: "Jeff Linguinee" , password: "password", email: "jefflingueeneeeee@gmail.com" , user_name: "SenorJeffafa" , password_confirmation: "password") - sarah = User.create(name: "Sarah Lawson" , password: "password", email: "sarah@gmail.com" , user_name: "LittlexSurah" , password_confirmation: "password") - + guntas = User.create!(name: "Guntas Grewal" , password: "password", email: "guntasgrewal@gmail.com" , user_name: "guntasgrewal") + luke = User.create!(name: "Luke Shumaker" , password: "password", email: "lukeshu@emacs4lyfe.com" , user_name: "lukeshu" ) + tomer = User.create!(name: "Tomer Kimia" , password: "password", email: "tomer@2majors4lyfe.com" , user_name: "tkimia" ) + josh = User.create!(name: "Josh Huser" , password: "password", email: "jhuser@iownabusiness.net" , user_name: "WinterWorks" ) + dunsmore = User.create!(name: "Professor Dunsmore", password: "password", email: "bxd@purdue.edu" , user_name: "Dumbledore" ) + marco = User.create!(name: "Marco Polo" , password: "password", email: "marco@ta4lyfe.com" , user_name: "iCoordinate" ) + jordan = User.create!(name: "Geoffrey Webb" , password: "password", email: "imnotjoffreybarathian@gameofthrones.com", user_name: "GTBPhoenix" ) + obama = User.create!(name: "Obama" , password: "password", email: "obama@whitehouse.gov" , user_name: "Obama" ) + + davis = User.create!(name: "Davis Webb" , password: "password", email: "davislwebb@gmail.com" , user_name: "TeslasMind" ) + foy = User.create!(name: "Nathaniel Foy" , password: "password", email: "nfoy@purdue.edu" , user_name: "NalfeinX" ) + andrew = User.create!(name: "Andrew Murrell" , password: "password", email: "murrel@murrel.gov" , user_name: "ImFromNasa" ) + joey = User.create!(name: "Joseph Adams" , password: "password", email: "alpha142@fluttershyop.com" , user_name: "alpha142" ) + panda = User.create!(name: "Panda" , password: "password", email: "panda@gmail.com" , user_name: "InspectorPanderp") + mesa = User.create!(name: "Mesataki" , password: "password", email: "mesataki@gmail.com" , user_name: "Mesataki" ) + guntas_league = User.create!(name: "TolkiensButt" , password: "password", email: "TolkiensButt@gmail.com" , user_name: "TolkiensButt" ) + lyra = User.create!(name: "Lyra Heartstings" , password: "password", email: "LyraHeartstings@gmail.com" , user_name: "Lyra Heartstings") + josh_league = User.create!(name: "Josh_league" , password: "password", email: "josh_league@gmail.com" , user_name: "Joshoowah" ) + jeff = User.create!(name: "Jeff Linguinee" , password: "password", email: "jefflingueeneeeee@gmail.com" , user_name: "SenorJeffafa" ) + sarah = User.create!(name: "Sarah Lawson" , password: "password", email: "sarah@gmail.com" , user_name: "LittlexSurah" ) # League of Legends tournament - league_tourn = Tournament.create(game: league, name: "League of Legends Seed", - min_players_per_team: 5, max_players_per_team: 5, - min_teams_per_match: 2, max_teams_per_match: 2, - scoring_method: "winner_takes_all") - - league_tourn.stages.create(scheduling_method: "round_robin" , seeding_method: "random_seeding") - - league_tourn.hosts.push(User.find(1)) + league_tourn = Tournament.create!( + game: league, + name: "League of Legends Seed", + min_players_per_team: 5, + max_players_per_team: 5, + min_teams_per_match: 2, + max_teams_per_match: 2, + scoring_method: "winner_takes_all", + hosts: [admin]) + league_tourn.stages.create!(scheduling_method: "round_robin" , seeding_method: "random_seeding") players_for_league.each do |player| league_tourn.join(player) end # Chess - chess_tourn = Tournament.create(game: chess, name: "Chess Seed", - min_players_per_team: 1, max_players_per_team: 1, - min_teams_per_match: 2, max_teams_per_match: 2, - scoring_method: "winner_takes_all") - - chess_tourn.stages.create(scheduling_method: "round_robin" , seeding_method: "random_seeding") - - chess_tourn.hosts.push(davis) + chess_tourn = Tournament.create!( + game: chess, + name: "Chess Seed", + min_players_per_team: 1, + max_players_per_team: 1, + min_teams_per_match: 2, + max_teams_per_match: 2, + scoring_method: "winner_takes_all", + hosts: [davis]) + chess_tourn.stages.create!(scheduling_method: "round_robin" , seeding_method: "random_seeding") chess_tourn.join(davis) chess_tourn.join(foy) # Rock Paper Scissors - rps = Tournament.create(game: rockpaperscissors, name: "Rock, Paper, Scissors Seed", - min_players_per_team: 1, max_players_per_team: 3, - min_teams_per_match: 2, max_teams_per_match: 2, - scoring_method: "winner_takes_all") - rps.stages.create(scheduling_method: "round_robin" , seeding_method: "random_seeding") - rps.hosts.push(davis) + rps = Tournament.create!( + game: rockpaperscissors, + name: "Rock, Paper, Scissors Seed", + min_players_per_team: 1, + max_players_per_team: 3, + min_teams_per_match: 2, + max_teams_per_match: 2, + scoring_method: "winner_takes_all", + hosts: [davis]) + rps.stages.create!(scheduling_method: "round_robin" , seeding_method: "random_seeding") rps.join(davis) rps.join(foy) rps.join(guntas) # Another League tournament - tourn5 = Tournament.create(game: league, name: "5 Teams, 2 Teams Per Match", - min_players_per_team: 1, max_players_per_team: 1, - min_teams_per_match: 2, max_teams_per_match: 2, - scoring_method: "winner_takes_all") - tourn5.hosts.push(User.find(1)) + tourn5 = Tournament.create!( + game: league, + name: "5 Teams, 2 Teams Per Match", + min_players_per_team: 1, + max_players_per_team: 1, + min_teams_per_match: 2, + max_teams_per_match: 2, + scoring_method: "winner_takes_all", + hosts: [admin]) + tourn5.stages.create!(scheduling_method: "elimination" , seeding_method: "random_seeding") players_for_league.each do |player| tourn5.join(player) end - tourn5.stages.create(scheduling_method: "elimination" , seeding_method: "random_seeding") # Yet another League tournament - tourn6 = Tournament.create(game_id: 1, name: "3 teams per match", - min_players_per_team: 1, max_players_per_team: 1, - min_teams_per_match: 3, max_teams_per_match: 3, - scoring_method: "winner_takes_all") - - tourn6.hosts.push(User.find(1)) - tourn6.stages.create(scheduling_method: "round_robin" , seeding_method: "random_seeding") + tourn6 = Tournament.create!( + game_id: 1, + name: "3 teams per match", + min_players_per_team: 1, + max_players_per_team: 1, + min_teams_per_match: 3, + max_teams_per_match: 3, + scoring_method: "winner_takes_all", + hosts: [admin]) + tourn6.stages.create!(scheduling_method: "round_robin" , seeding_method: "random_seeding") players_for_league.each do |player| tourn6.join(player) end @@ -146,42 +158,44 @@ if Rails.env.development? tourn6.join(joey) #Hearthstone tournament - hearth = Tournament.create(game: hearthstone, name: "Hearthstone Seed", min_teams_per_match: 1, min_players_per_team: 1, - max_teams_per_match: 2, max_players_per_team: 1, scoring_method: "winner_takes_all") - hearth.hosts.push(User.find(1)) - + hearth = Tournament.create!( + game: hearthstone, + name: "Hearthstone Seed", + min_teams_per_match: 1, + min_players_per_team: 1, + max_teams_per_match: 2, + max_players_per_team: 1, + scoring_method: "winner_takes_all", + hosts: [admin]) + hearth.stages.create!(scheduling_method: "round_robin" , seeding_method: "random_seeding") hearth.join(davis) hearth.join(foy) - hearth.stages.create(scheduling_method: "round_robin" , seeding_method: "random_seeding") - #THE REAL GAME WE ARE PLAYING AT 10 - davis.remote_usernames.create(game: league, value: {"name" => "TeslasMind", "id" => 30533514} ) - foy.remote_usernames.create(game: league, value: {"name" => "NalfeinX", "id" => 29538130} ) - andrew.remote_usernames.create(game: league, value: {"name" => "ImFromNasa", "id" => 29782091} ) - joey.remote_usernames.create(game: league, value: {"name" => "Alpha142", "id" => 29732514} ) - sarah.remote_usernames.create(game: league, value: {"name" => "LittlexSurah", "id" => 30613787} ) - mesa.remote_usernames.create(game: league, value: {"name" => "Mesataki", "id" => 37259275} ) - panda.remote_usernames.create(game: league, value: {"name" => "NalfeinX", "id" => 47953989} ) - jordan.remote_usernames.create(game: league, value: {"name" => "GTBPhoenix", "id" => 29812020} ) - josh_league.remote_usernames.create(game: league, value: {"name" => "Joshoowah", "id" => 26083333} ) - jeff.remote_usernames.create(game: league, value: {"name" => "SenorJeffafa", "id" => 32612067} ) - lyra.remote_usernames.create(game: league, value: {"name" => "Lyra Heartstings", "id" => 32240762} ) - - g.push(davis, joey, panda, mesa, josh_league, jordan, jeff, sarah, foy, andrew) - - custom = Tournament.create(game: league, name: "Real League Game", - min_players_per_team: 5, max_players_per_team: 5, - min_teams_per_match: 2, max_teams_per_match: 2, - scoring_method: "winner_takes_all") - - custom.hosts.push(User.find(1)) - - custom.stages.create(scheduling_method: "round_robin" , seeding_method: "early_bird_seeding") - - - custom.hosts.push(User.find(1)) + davis.remote_usernames.create!( game: league, value: {"name" => "TeslasMind" , "id" => 30533514} ) + foy.remote_usernames.create!( game: league, value: {"name" => "NalfeinX" , "id" => 29538130} ) + andrew.remote_usernames.create!( game: league, value: {"name" => "ImFromNasa" , "id" => 29782091} ) + joey.remote_usernames.create!( game: league, value: {"name" => "Alpha142" , "id" => 29732514} ) + sarah.remote_usernames.create!( game: league, value: {"name" => "LittlexSurah" , "id" => 30613787} ) + mesa.remote_usernames.create!( game: league, value: {"name" => "Mesataki" , "id" => 37259275} ) + panda.remote_usernames.create!( game: league, value: {"name" => "NalfeinX" , "id" => 47953989} ) + jordan.remote_usernames.create!( game: league, value: {"name" => "GTBPhoenix" , "id" => 29812020} ) + josh_league.remote_usernames.create!(game: league, value: {"name" => "Joshoowah" , "id" => 26083333} ) + jeff.remote_usernames.create!( game: league, value: {"name" => "SenorJeffafa" , "id" => 32612067} ) + lyra.remote_usernames.create!( game: league, value: {"name" => "Lyra Heartstings", "id" => 32240762} ) + g = [davis, joey, panda, mesa, josh_league, jordan, jeff, sarah, foy, andrew] + + custom = Tournament.create!( + game: league, + name: "Real League Game", + min_players_per_team: 5, + max_players_per_team: 5, + min_teams_per_match: 2, + max_teams_per_match: 2, + scoring_method: "winner_takes_all", + hosts: [admin]) + custom.stages.create!(scheduling_method: "round_robin" , seeding_method: "early_bird_seeding") g.each do |player| custom.join(player) end -end \ No newline at end of file +end -- cgit v1.2.3