summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2014-04-29 03:41:21 -0400
committerLuke Shumaker <shumakl@purdue.edu>2014-04-29 03:41:21 -0400
commitf9488b183bbd41d74d801a9cbdd41410be4ddba5 (patch)
treea485cfd89181c447a3f471dacdfdf6bc57c823dd
parentcd0c7d73be76feffbaaea9200c485b2316604469 (diff)
Validate everything that I can.
-rw-r--r--app/models/game.rb40
-rw-r--r--app/models/game_setting.rb11
-rw-r--r--app/models/match.rb32
-rw-r--r--app/models/tournament.rb85
-rw-r--r--app/models/tournament_setting.rb12
-rw-r--r--app/models/tournament_stage.rb10
-rw-r--r--app/models/user.rb94
-rw-r--r--db/seeds.rb264
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