merb-admin 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +29 -27
- data/Gemfile +24 -22
- data/Gemfile.lock +86 -0
- data/LICENSE +20 -20
- data/README.rdoc +54 -58
- data/Rakefile +11 -44
- data/app/controllers/application.rb +6 -6
- data/app/controllers/main.rb +191 -191
- data/app/helpers/application_helper.rb +64 -64
- data/app/helpers/main_helper.rb +167 -167
- data/app/models/.gitkeep +0 -0
- data/app/views/layout/_message.html.erb +10 -10
- data/app/views/layout/dashboard.html.erb +34 -34
- data/app/views/layout/form.html.erb +48 -48
- data/app/views/layout/list.html.erb +42 -42
- data/app/views/main/_belongs_to.html.erb +29 -29
- data/app/views/main/_big_decimal.html.erb +12 -12
- data/app/views/main/_boolean.html.erb +7 -7
- data/app/views/main/_date.html.erb +12 -12
- data/app/views/main/_datetime.html.erb +12 -12
- data/app/views/main/_float.html.erb +12 -12
- data/app/views/main/_has_many.html.erb +16 -16
- data/app/views/main/_has_one.html.erb +30 -30
- data/app/views/main/_integer.html.erb +12 -12
- data/app/views/main/_properties.html.erb +18 -18
- data/app/views/main/_string.html.erb +15 -15
- data/app/views/main/_text.html.erb +11 -11
- data/app/views/main/_time.html.erb +12 -12
- data/app/views/main/_timestamp.html.erb +12 -12
- data/app/views/main/delete.html.erb +28 -28
- data/app/views/main/edit.html.erb +19 -19
- data/app/views/main/index.html.erb +22 -22
- data/app/views/main/list.html.erb +93 -93
- data/app/views/main/new.html.erb +16 -16
- data/config/init.rb +30 -0
- data/config/router.rb +4 -0
- data/lib/abstract_model.rb +84 -86
- data/lib/active_record_support.rb +147 -147
- data/lib/datamapper_support.rb +139 -140
- data/lib/generic_support.rb +13 -13
- data/lib/merb-admin.rb +99 -99
- data/lib/merb-admin/merbtasks.rb +103 -103
- data/lib/merb-admin/slicetasks.rb +174 -174
- data/lib/merb-admin/spectasks.rb +55 -55
- data/lib/merb-admin/version.rb +3 -0
- data/lib/sequel_support.rb +275 -275
- data/merb-admin.gemspec +42 -232
- data/public/javascripts/CollapsedFieldsets.js +85 -85
- data/public/javascripts/DateTimeShortcuts.js +255 -255
- data/public/javascripts/RelatedObjectLookups.js +96 -96
- data/public/javascripts/SelectBox.js +111 -111
- data/public/javascripts/SelectFilter2.js +113 -113
- data/public/javascripts/actions.js +39 -39
- data/public/javascripts/calendar.js +143 -143
- data/public/javascripts/core.js +176 -176
- data/public/javascripts/dateparse.js +233 -233
- data/public/javascripts/getElementsBySelector.js +167 -167
- data/public/javascripts/i18n.js +33 -33
- data/public/javascripts/ordering.js +137 -137
- data/public/javascripts/timeparse.js +94 -94
- data/public/javascripts/urlify.js +140 -140
- data/public/stylesheets/base.css +746 -746
- data/public/stylesheets/changelists.css +269 -269
- data/public/stylesheets/dashboard.css +24 -24
- data/public/stylesheets/forms.css +327 -327
- data/public/stylesheets/global.css +142 -142
- data/public/stylesheets/ie.css +50 -50
- data/public/stylesheets/layout.css +29 -29
- data/public/stylesheets/login.css +54 -54
- data/public/stylesheets/master.css +1 -1
- data/public/stylesheets/patch-iewin.css +7 -7
- data/public/stylesheets/rtl.css +206 -206
- data/public/stylesheets/widgets.css +506 -506
- data/screenshots/create.png +0 -0
- data/screenshots/delete.png +0 -0
- data/screenshots/edit.png +0 -0
- data/screenshots/index.png +0 -0
- data/screenshots/list.png +0 -0
- data/screenshots/new.png +0 -0
- data/spec/controllers/main_spec.rb +25 -25
- data/spec/migrations/activerecord/001_create_divisions_migration.rb +13 -13
- data/spec/migrations/activerecord/002_create_drafts_migration.rb +19 -19
- data/spec/migrations/activerecord/003_create_leagues_migration.rb +12 -12
- data/spec/migrations/activerecord/004_create_players_migration.rb +19 -20
- data/spec/migrations/activerecord/005_create_teams_migration.rb +22 -22
- data/spec/migrations/sequel/001_create_divisions_migration.rb +15 -15
- data/spec/migrations/sequel/002_create_drafts_migration.rb +21 -21
- data/spec/migrations/sequel/003_create_leagues_migration.rb +14 -14
- data/spec/migrations/sequel/004_create_players_migration.rb +21 -22
- data/spec/migrations/sequel/005_create_teams_migration.rb +24 -24
- data/spec/models/activerecord/division.rb +7 -7
- data/spec/models/activerecord/draft.rb +11 -11
- data/spec/models/activerecord/league.rb +6 -6
- data/spec/models/activerecord/player.rb +8 -8
- data/spec/models/activerecord/team.rb +13 -13
- data/spec/models/datamapper/division.rb +12 -12
- data/spec/models/datamapper/draft.rb +18 -18
- data/spec/models/datamapper/league.rb +11 -11
- data/spec/models/datamapper/player.rb +20 -21
- data/spec/models/datamapper/team.rb +22 -22
- data/spec/models/sequel/division.rb +15 -15
- data/spec/models/sequel/draft.rb +19 -19
- data/spec/models/sequel/league.rb +14 -14
- data/spec/models/sequel/player.rb +18 -18
- data/spec/models/sequel/team.rb +21 -21
- data/spec/requests/main_spec.rb +763 -763
- data/spec/spec_helper.rb +113 -112
- metadata +247 -41
- data/VERSION +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
class Draft < ActiveRecord::Base
|
|
2
|
-
validates_numericality_of(:player_id, :only_integer => true)
|
|
3
|
-
validates_numericality_of(:team_id, :only_integer => true)
|
|
4
|
-
validates_presence_of(:date)
|
|
5
|
-
validates_numericality_of(:round, :only_integer => true)
|
|
6
|
-
validates_numericality_of(:pick, :only_integer => true)
|
|
7
|
-
validates_numericality_of(:overall, :only_integer => true)
|
|
8
|
-
|
|
9
|
-
belongs_to(:team)
|
|
10
|
-
belongs_to(:player)
|
|
11
|
-
end
|
|
1
|
+
class Draft < ActiveRecord::Base
|
|
2
|
+
validates_numericality_of(:player_id, :only_integer => true)
|
|
3
|
+
validates_numericality_of(:team_id, :only_integer => true)
|
|
4
|
+
validates_presence_of(:date)
|
|
5
|
+
validates_numericality_of(:round, :only_integer => true)
|
|
6
|
+
validates_numericality_of(:pick, :only_integer => true)
|
|
7
|
+
validates_numericality_of(:overall, :only_integer => true)
|
|
8
|
+
|
|
9
|
+
belongs_to(:team)
|
|
10
|
+
belongs_to(:player)
|
|
11
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
class League < ActiveRecord::Base
|
|
2
|
-
validates_presence_of(:name)
|
|
3
|
-
|
|
4
|
-
has_many(:divisions)
|
|
5
|
-
has_many(:teams)
|
|
6
|
-
end
|
|
1
|
+
class League < ActiveRecord::Base
|
|
2
|
+
validates_presence_of(:name)
|
|
3
|
+
|
|
4
|
+
has_many(:divisions)
|
|
5
|
+
has_many(:teams)
|
|
6
|
+
end
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
class Player < ActiveRecord::Base
|
|
2
|
-
validates_presence_of(:name)
|
|
3
|
-
validates_numericality_of(:number, :only_integer => true)
|
|
4
|
-
validates_uniqueness_of(:number, :scope => :team_id, :message => "There is already a player with that number on this team")
|
|
5
|
-
|
|
6
|
-
belongs_to(:team)
|
|
7
|
-
has_one(:draft)
|
|
8
|
-
end
|
|
1
|
+
class Player < ActiveRecord::Base
|
|
2
|
+
validates_presence_of(:name)
|
|
3
|
+
validates_numericality_of(:number, :only_integer => true)
|
|
4
|
+
validates_uniqueness_of(:number, :scope => :team_id, :message => "There is already a player with that number on this team")
|
|
5
|
+
|
|
6
|
+
belongs_to(:team)
|
|
7
|
+
has_one(:draft)
|
|
8
|
+
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
class Team < ActiveRecord::Base
|
|
2
|
-
validates_numericality_of(:league_id, :only_integer => true)
|
|
3
|
-
validates_numericality_of(:division_id, :only_integer => true)
|
|
4
|
-
validates_presence_of(:manager)
|
|
5
|
-
validates_numericality_of(:founded, :only_integer => true)
|
|
6
|
-
validates_numericality_of(:wins, :only_integer => true)
|
|
7
|
-
validates_numericality_of(:losses, :only_integer => true)
|
|
8
|
-
validates_numericality_of(:win_percentage)
|
|
9
|
-
|
|
10
|
-
belongs_to(:league)
|
|
11
|
-
belongs_to(:division)
|
|
12
|
-
has_many(:players)
|
|
13
|
-
end
|
|
1
|
+
class Team < ActiveRecord::Base
|
|
2
|
+
validates_numericality_of(:league_id, :only_integer => true)
|
|
3
|
+
validates_numericality_of(:division_id, :only_integer => true)
|
|
4
|
+
validates_presence_of(:manager)
|
|
5
|
+
validates_numericality_of(:founded, :only_integer => true)
|
|
6
|
+
validates_numericality_of(:wins, :only_integer => true)
|
|
7
|
+
validates_numericality_of(:losses, :only_integer => true)
|
|
8
|
+
validates_numericality_of(:win_percentage)
|
|
9
|
+
|
|
10
|
+
belongs_to(:league)
|
|
11
|
+
belongs_to(:division)
|
|
12
|
+
has_many(:players)
|
|
13
|
+
end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
class Division
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property(:id, Serial)
|
|
5
|
-
property(:created_at, DateTime)
|
|
6
|
-
property(:updated_at, DateTime)
|
|
7
|
-
property(:league_id, Integer, :required => true, :index => true)
|
|
8
|
-
property(:name, String, :required => true, :index => true)
|
|
9
|
-
|
|
10
|
-
belongs_to(:league)
|
|
11
|
-
has(n, :teams)
|
|
12
|
-
end
|
|
1
|
+
class Division
|
|
2
|
+
include DataMapper::Resource
|
|
3
|
+
|
|
4
|
+
property(:id, Serial)
|
|
5
|
+
property(:created_at, DateTime)
|
|
6
|
+
property(:updated_at, DateTime)
|
|
7
|
+
property(:league_id, Integer, :required => true, :index => true)
|
|
8
|
+
property(:name, String, :required => true, :index => true)
|
|
9
|
+
|
|
10
|
+
belongs_to(:league)
|
|
11
|
+
has(n, :teams)
|
|
12
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
class Draft
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property(:id, Serial)
|
|
5
|
-
property(:created_at, DateTime)
|
|
6
|
-
property(:updated_at, DateTime)
|
|
7
|
-
property(:player_id, Integer, :required => true, :index => true)
|
|
8
|
-
property(:team_id, Integer, :required => true, :index => true)
|
|
9
|
-
property(:date, Date, :required => true)
|
|
10
|
-
property(:round, Integer, :required => true)
|
|
11
|
-
property(:pick, Integer, :required => true)
|
|
12
|
-
property(:overall, Integer, :required => true)
|
|
13
|
-
property(:college, String, :length => 100, :index => true)
|
|
14
|
-
property(:notes, Text)
|
|
15
|
-
|
|
16
|
-
belongs_to(:team)
|
|
17
|
-
belongs_to(:player)
|
|
18
|
-
end
|
|
1
|
+
class Draft
|
|
2
|
+
include DataMapper::Resource
|
|
3
|
+
|
|
4
|
+
property(:id, Serial)
|
|
5
|
+
property(:created_at, DateTime)
|
|
6
|
+
property(:updated_at, DateTime)
|
|
7
|
+
property(:player_id, Integer, :required => true, :index => true)
|
|
8
|
+
property(:team_id, Integer, :required => true, :index => true)
|
|
9
|
+
property(:date, Date, :required => true)
|
|
10
|
+
property(:round, Integer, :required => true)
|
|
11
|
+
property(:pick, Integer, :required => true)
|
|
12
|
+
property(:overall, Integer, :required => true)
|
|
13
|
+
property(:college, String, :length => 100, :index => true)
|
|
14
|
+
property(:notes, Text)
|
|
15
|
+
|
|
16
|
+
belongs_to(:team)
|
|
17
|
+
belongs_to(:player)
|
|
18
|
+
end
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
class League
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property(:id, Serial)
|
|
5
|
-
property(:created_at, DateTime)
|
|
6
|
-
property(:updated_at, DateTime)
|
|
7
|
-
property(:name, String, :required => true, :index => true)
|
|
8
|
-
|
|
9
|
-
has(n, :divisions)
|
|
10
|
-
has(n, :teams)
|
|
11
|
-
end
|
|
1
|
+
class League
|
|
2
|
+
include DataMapper::Resource
|
|
3
|
+
|
|
4
|
+
property(:id, Serial)
|
|
5
|
+
property(:created_at, DateTime)
|
|
6
|
+
property(:updated_at, DateTime)
|
|
7
|
+
property(:name, String, :required => true, :index => true)
|
|
8
|
+
|
|
9
|
+
has(n, :divisions)
|
|
10
|
+
has(n, :teams)
|
|
11
|
+
end
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
class Player
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property(:id, Serial)
|
|
5
|
-
property(:created_at, DateTime)
|
|
6
|
-
property(:updated_at, DateTime)
|
|
7
|
-
property(:
|
|
8
|
-
property(:
|
|
9
|
-
property(:
|
|
10
|
-
property(:
|
|
11
|
-
property(:
|
|
12
|
-
property(:
|
|
13
|
-
property(:
|
|
14
|
-
property(:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
end
|
|
1
|
+
class Player
|
|
2
|
+
include DataMapper::Resource
|
|
3
|
+
|
|
4
|
+
property(:id, Serial)
|
|
5
|
+
property(:created_at, DateTime)
|
|
6
|
+
property(:updated_at, DateTime)
|
|
7
|
+
property(:team_id, Integer, :index => true)
|
|
8
|
+
property(:name, String, :length => 100, :required => true, :index => true)
|
|
9
|
+
property(:position, String, :index => true)
|
|
10
|
+
property(:number, Integer, :required => true)
|
|
11
|
+
property(:retired, Boolean, :default => false)
|
|
12
|
+
property(:injured, Boolean, :default => false)
|
|
13
|
+
property(:born_on, Date)
|
|
14
|
+
property(:notes, Text)
|
|
15
|
+
|
|
16
|
+
validates_is_unique(:number, :scope => :team_id, :message => "There is already a player with that number on this team")
|
|
17
|
+
|
|
18
|
+
belongs_to(:team)
|
|
19
|
+
has(1, :draft)
|
|
20
|
+
end
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
class Team
|
|
2
|
-
include DataMapper::Resource
|
|
3
|
-
|
|
4
|
-
property(:id, Serial)
|
|
5
|
-
property(:created_at, DateTime)
|
|
6
|
-
property(:updated_at, DateTime)
|
|
7
|
-
property(:league_id, Integer, :required => true, :index => true)
|
|
8
|
-
property(:division_id, Integer, :required => true, :index => true)
|
|
9
|
-
property(:name, String, :index => true)
|
|
10
|
-
property(:logo_url, String, :length => 255)
|
|
11
|
-
property(:manager, String, :length => 100, :required => true, :index => true)
|
|
12
|
-
property(:ballpark, String, :length => 100, :index => true)
|
|
13
|
-
property(:mascot, String, :length => 100, :index => true)
|
|
14
|
-
property(:founded, Integer, :required => true)
|
|
15
|
-
property(:wins, Integer, :required => true)
|
|
16
|
-
property(:losses, Integer, :required => true)
|
|
17
|
-
property(:win_percentage, Float, :required => true, :precision => 4, :scale => 3)
|
|
18
|
-
|
|
19
|
-
belongs_to(:league)
|
|
20
|
-
belongs_to(:division)
|
|
21
|
-
has(n, :players)
|
|
22
|
-
end
|
|
1
|
+
class Team
|
|
2
|
+
include DataMapper::Resource
|
|
3
|
+
|
|
4
|
+
property(:id, Serial)
|
|
5
|
+
property(:created_at, DateTime)
|
|
6
|
+
property(:updated_at, DateTime)
|
|
7
|
+
property(:league_id, Integer, :required => true, :index => true)
|
|
8
|
+
property(:division_id, Integer, :required => true, :index => true)
|
|
9
|
+
property(:name, String, :index => true)
|
|
10
|
+
property(:logo_url, String, :length => 255)
|
|
11
|
+
property(:manager, String, :length => 100, :required => true, :index => true)
|
|
12
|
+
property(:ballpark, String, :length => 100, :index => true)
|
|
13
|
+
property(:mascot, String, :length => 100, :index => true)
|
|
14
|
+
property(:founded, Integer, :required => true)
|
|
15
|
+
property(:wins, Integer, :required => true)
|
|
16
|
+
property(:losses, Integer, :required => true)
|
|
17
|
+
property(:win_percentage, Float, :required => true, :precision => 4, :scale => 3)
|
|
18
|
+
|
|
19
|
+
belongs_to(:league)
|
|
20
|
+
belongs_to(:division)
|
|
21
|
+
has(n, :players)
|
|
22
|
+
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
class Division < Sequel::Model
|
|
2
|
-
set_primary_key(:id)
|
|
3
|
-
plugin(:timestamps, :update_on_create => true)
|
|
4
|
-
plugin(:validation_helpers)
|
|
5
|
-
|
|
6
|
-
many_to_one(:league)
|
|
7
|
-
one_to_many(:teams)
|
|
8
|
-
|
|
9
|
-
self.raise_on_save_failure = false
|
|
10
|
-
self.raise_on_typecast_failure = false
|
|
11
|
-
def validate
|
|
12
|
-
validates_numeric(:league_id, :only_integer => true)
|
|
13
|
-
validates_presence(:name)
|
|
14
|
-
end
|
|
15
|
-
end
|
|
1
|
+
class Division < Sequel::Model
|
|
2
|
+
set_primary_key(:id)
|
|
3
|
+
plugin(:timestamps, :update_on_create => true)
|
|
4
|
+
plugin(:validation_helpers)
|
|
5
|
+
|
|
6
|
+
many_to_one(:league)
|
|
7
|
+
one_to_many(:teams)
|
|
8
|
+
|
|
9
|
+
self.raise_on_save_failure = false
|
|
10
|
+
self.raise_on_typecast_failure = false
|
|
11
|
+
def validate
|
|
12
|
+
validates_numeric(:league_id, :only_integer => true)
|
|
13
|
+
validates_presence(:name)
|
|
14
|
+
end
|
|
15
|
+
end
|
data/spec/models/sequel/draft.rb
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
class Draft < Sequel::Model
|
|
2
|
-
set_primary_key(:id)
|
|
3
|
-
plugin(:timestamps, :update_on_create => true)
|
|
4
|
-
plugin(:validation_helpers)
|
|
5
|
-
|
|
6
|
-
many_to_one(:team)
|
|
7
|
-
many_to_one(:player)
|
|
8
|
-
|
|
9
|
-
self.raise_on_save_failure = false
|
|
10
|
-
self.raise_on_typecast_failure = false
|
|
11
|
-
def validate
|
|
12
|
-
validates_numeric(:player_id, :only_integer => true, :allow_blank => true)
|
|
13
|
-
validates_numeric(:team_id, :only_integer => true, :allow_blank => true)
|
|
14
|
-
validates_presence(:date)
|
|
15
|
-
validates_numeric(:round, :only_integer => true)
|
|
16
|
-
validates_numeric(:pick, :only_integer => true)
|
|
17
|
-
validates_numeric(:overall, :only_integer => true)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
1
|
+
class Draft < Sequel::Model
|
|
2
|
+
set_primary_key(:id)
|
|
3
|
+
plugin(:timestamps, :update_on_create => true)
|
|
4
|
+
plugin(:validation_helpers)
|
|
5
|
+
|
|
6
|
+
many_to_one(:team)
|
|
7
|
+
many_to_one(:player)
|
|
8
|
+
|
|
9
|
+
self.raise_on_save_failure = false
|
|
10
|
+
self.raise_on_typecast_failure = false
|
|
11
|
+
def validate
|
|
12
|
+
validates_numeric(:player_id, :only_integer => true, :allow_blank => true)
|
|
13
|
+
validates_numeric(:team_id, :only_integer => true, :allow_blank => true)
|
|
14
|
+
validates_presence(:date)
|
|
15
|
+
validates_numeric(:round, :only_integer => true)
|
|
16
|
+
validates_numeric(:pick, :only_integer => true)
|
|
17
|
+
validates_numeric(:overall, :only_integer => true)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
class League < Sequel::Model
|
|
2
|
-
set_primary_key(:id)
|
|
3
|
-
plugin(:timestamps, :update_on_create => true)
|
|
4
|
-
plugin(:validation_helpers)
|
|
5
|
-
|
|
6
|
-
one_to_many(:divisions)
|
|
7
|
-
one_to_many(:teams)
|
|
8
|
-
|
|
9
|
-
self.raise_on_save_failure = false
|
|
10
|
-
self.raise_on_typecast_failure = false
|
|
11
|
-
def validate
|
|
12
|
-
validates_presence(:name)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
class League < Sequel::Model
|
|
2
|
+
set_primary_key(:id)
|
|
3
|
+
plugin(:timestamps, :update_on_create => true)
|
|
4
|
+
plugin(:validation_helpers)
|
|
5
|
+
|
|
6
|
+
one_to_many(:divisions)
|
|
7
|
+
one_to_many(:teams)
|
|
8
|
+
|
|
9
|
+
self.raise_on_save_failure = false
|
|
10
|
+
self.raise_on_typecast_failure = false
|
|
11
|
+
def validate
|
|
12
|
+
validates_presence(:name)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
class Player < Sequel::Model
|
|
2
|
-
set_primary_key(:id)
|
|
3
|
-
plugin(:timestamps, :update_on_create => true)
|
|
4
|
-
plugin(:validation_helpers)
|
|
5
|
-
|
|
6
|
-
many_to_one(:team)
|
|
7
|
-
one_to_many(:drafts, :one_to_one => true)
|
|
8
|
-
|
|
9
|
-
self.raise_on_save_failure = false
|
|
10
|
-
self.raise_on_typecast_failure = false
|
|
11
|
-
def validate
|
|
12
|
-
validates_numeric(:number, :only_integer => true)
|
|
13
|
-
validates_unique(:number, :message => "There is already a player with that number on this team") do |dataset|
|
|
14
|
-
dataset.where("team_id = ?", team_id)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
1
|
+
class Player < Sequel::Model
|
|
2
|
+
set_primary_key(:id)
|
|
3
|
+
plugin(:timestamps, :update_on_create => true)
|
|
4
|
+
plugin(:validation_helpers)
|
|
5
|
+
|
|
6
|
+
many_to_one(:team)
|
|
7
|
+
one_to_many(:drafts, :one_to_one => true)
|
|
8
|
+
|
|
9
|
+
self.raise_on_save_failure = false
|
|
10
|
+
self.raise_on_typecast_failure = false
|
|
11
|
+
def validate
|
|
12
|
+
validates_numeric(:number, :only_integer => true)
|
|
13
|
+
validates_unique(:number, :message => "There is already a player with that number on this team") do |dataset|
|
|
14
|
+
dataset.where("team_id = ?", team_id)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
data/spec/models/sequel/team.rb
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
class Team < Sequel::Model
|
|
2
|
-
set_primary_key(:id)
|
|
3
|
-
plugin(:timestamps, :update_on_create => true)
|
|
4
|
-
plugin(:validation_helpers)
|
|
5
|
-
|
|
6
|
-
many_to_one(:league)
|
|
7
|
-
many_to_one(:division)
|
|
8
|
-
one_to_many(:players)
|
|
9
|
-
|
|
10
|
-
self.raise_on_save_failure = false
|
|
11
|
-
self.raise_on_typecast_failure = false
|
|
12
|
-
def validate
|
|
13
|
-
validates_numeric(:league_id, :only_integer => true)
|
|
14
|
-
validates_numeric(:division_id, :only_integer => true)
|
|
15
|
-
validates_presence(:manager)
|
|
16
|
-
validates_numeric(:founded, :only_integer => true)
|
|
17
|
-
validates_numeric(:wins, :only_integer => true)
|
|
18
|
-
validates_numeric(:losses, :only_integer => true)
|
|
19
|
-
validates_numeric(:win_percentage)
|
|
20
|
-
end
|
|
21
|
-
end
|
|
1
|
+
class Team < Sequel::Model
|
|
2
|
+
set_primary_key(:id)
|
|
3
|
+
plugin(:timestamps, :update_on_create => true)
|
|
4
|
+
plugin(:validation_helpers)
|
|
5
|
+
|
|
6
|
+
many_to_one(:league)
|
|
7
|
+
many_to_one(:division)
|
|
8
|
+
one_to_many(:players)
|
|
9
|
+
|
|
10
|
+
self.raise_on_save_failure = false
|
|
11
|
+
self.raise_on_typecast_failure = false
|
|
12
|
+
def validate
|
|
13
|
+
validates_numeric(:league_id, :only_integer => true)
|
|
14
|
+
validates_numeric(:division_id, :only_integer => true)
|
|
15
|
+
validates_presence(:manager)
|
|
16
|
+
validates_numeric(:founded, :only_integer => true)
|
|
17
|
+
validates_numeric(:wins, :only_integer => true)
|
|
18
|
+
validates_numeric(:losses, :only_integer => true)
|
|
19
|
+
validates_numeric(:win_percentage)
|
|
20
|
+
end
|
|
21
|
+
end
|
data/spec/requests/main_spec.rb
CHANGED
|
@@ -1,763 +1,763 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
|
2
|
-
|
|
3
|
-
given "a player exists" do
|
|
4
|
-
@player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
given "a draft exists" do
|
|
8
|
-
@draft = MerbAdmin::AbstractModel.new("Draft").create(:player_id => rand(99999), :team_id => rand(99999), :date => Date.today, :round => rand(50), :pick => rand(30), :overall => rand(1500))
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
given "a league exists" do
|
|
12
|
-
@league = MerbAdmin::AbstractModel.new("League").create(:name => "League 1")
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
given "two players exist" do
|
|
16
|
-
@players = []
|
|
17
|
-
(1..2).each do |number|
|
|
18
|
-
@players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => number, :name => "Player #{number}")
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
given "three teams exist" do
|
|
23
|
-
@teams = []
|
|
24
|
-
(1..3).each do |number|
|
|
25
|
-
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{number}", :manager => "Manager #{number}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
given "three teams with no name exist" do
|
|
30
|
-
@teams = []
|
|
31
|
-
(1..3).each do |number|
|
|
32
|
-
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :manager => "Manager #{number}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
given "twenty players exist" do
|
|
37
|
-
@players = []
|
|
38
|
-
(1..20).each do |number|
|
|
39
|
-
@players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => number, :name => "Player #{number}")
|
|
40
|
-
end
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
describe "MerbAdmin" do
|
|
44
|
-
before(:each) do
|
|
45
|
-
mount_slice
|
|
46
|
-
MerbAdmin::AbstractModel.new("Division").destroy_all!
|
|
47
|
-
MerbAdmin::AbstractModel.new("Draft").destroy_all!
|
|
48
|
-
MerbAdmin::AbstractModel.new("League").destroy_all!
|
|
49
|
-
MerbAdmin::AbstractModel.new("Player").destroy_all!
|
|
50
|
-
MerbAdmin::AbstractModel.new("Team").destroy_all!
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
describe "dashboard" do
|
|
54
|
-
before(:each) do
|
|
55
|
-
@response = visit(url(:merb_admin_dashboard))
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it "should respond sucessfully" do
|
|
59
|
-
@response.should be_successful
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
it "should show \"Site administration\"" do
|
|
63
|
-
@response.body.should contain("Site administration")
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
describe "dashboard with excluded models" do
|
|
68
|
-
before(:each) do
|
|
69
|
-
MerbAdmin[:excluded_models] = ["Player"]
|
|
70
|
-
@response = visit(url(:merb_admin_dashboard))
|
|
71
|
-
MerbAdmin[:excluded_models] = []
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
it "should respond sucessfully" do
|
|
75
|
-
@response.should be_successful
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
it "should not contain excluded models" do
|
|
79
|
-
@response.body.should_not contain(/Player/)
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
describe "list" do
|
|
84
|
-
before(:each) do
|
|
85
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should respond sucessfully" do
|
|
89
|
-
@response.should be_successful
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
it "should show \"Select model to edit\"" do
|
|
93
|
-
@response.body.should contain("Select player to edit")
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
it "should show filters" do
|
|
97
|
-
@response.body.should contain(/Filter\n\s*By Retired\n\s*All\n\s*Yes\n\s*No\n\s*By Injured\n\s*All\n\s*Yes\n\s*No/)
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
it "should show column headers" do
|
|
101
|
-
@response.body.should contain(/Id\n\s*Created at\n\s*Updated at\n\s*
|
|
102
|
-
end
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
describe "list with sort" do
|
|
106
|
-
before(:each) do
|
|
107
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
108
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
109
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name")
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should respond sucessfully" do
|
|
113
|
-
@response.should be_successful
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
it "should be sorted correctly" do
|
|
117
|
-
@response.body.should contain(/Jackie Robinson.*Sandy Koufax/m)
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
describe "list with reverse sort" do
|
|
122
|
-
before(:each) do
|
|
123
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
124
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
125
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name", :sort_reverse => "true")
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
it "should respond sucessfully" do
|
|
129
|
-
@response.should be_successful
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
it "should be sorted correctly" do
|
|
133
|
-
@response.body.should contain(/Sandy Koufax.*Jackie Robinson/m)
|
|
134
|
-
end
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
describe "list with query" do
|
|
138
|
-
before(:each) do
|
|
139
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
140
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
141
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Jackie Robinson")
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
it "should respond sucessfully" do
|
|
145
|
-
@response.should be_successful
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
it "should show a correct result" do
|
|
149
|
-
@response.body.should contain("Jackie Robinson")
|
|
150
|
-
end
|
|
151
|
-
|
|
152
|
-
it "should not contain an incorrect result" do
|
|
153
|
-
@response.body.should_not contain("Sandy Koufax")
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
describe "list with query and boolean filter" do
|
|
158
|
-
before(:each) do
|
|
159
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
|
|
160
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
|
|
161
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
|
|
162
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
|
|
163
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Sandy Koufax", :filter => {:injured => "true"})
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
it "should respond sucessfully" do
|
|
167
|
-
@response.should be_successful
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
it "should show a correct result" do
|
|
171
|
-
@response.body.should contain("Sandy Koufax")
|
|
172
|
-
end
|
|
173
|
-
|
|
174
|
-
it "should not contain an incorrect result" do
|
|
175
|
-
@response.body.should_not contain("Jackie Robinson")
|
|
176
|
-
@response.body.should_not contain("Moises Alou")
|
|
177
|
-
@response.body.should_not contain("David Wright")
|
|
178
|
-
end
|
|
179
|
-
end
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
describe "list with boolean filter" do
|
|
183
|
-
before(:each) do
|
|
184
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :injured => true)
|
|
185
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :injured => false)
|
|
186
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:injured => "true"})
|
|
187
|
-
end
|
|
188
|
-
|
|
189
|
-
it "should respond sucessfully" do
|
|
190
|
-
@response.should be_successful
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
it "should show a correct result" do
|
|
194
|
-
@response.body.should contain("Moises Alou")
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
it "should not contain an incorrect result" do
|
|
198
|
-
@response.body.should_not contain("David Wright")
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
describe "list with boolean filters" do
|
|
203
|
-
before(:each) do
|
|
204
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
|
|
205
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
|
|
206
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
|
|
207
|
-
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
|
|
208
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:retired => "true", :injured => "true"})
|
|
209
|
-
end
|
|
210
|
-
|
|
211
|
-
it "should respond sucessfully" do
|
|
212
|
-
@response.should be_successful
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
it "should show a correct result" do
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
it "should not contain an incorrect result" do
|
|
219
|
-
@response.body.should_not contain("Jackie Robinson")
|
|
220
|
-
@response.body.should_not contain("Moises Alou")
|
|
221
|
-
@response.body.should_not contain("David Wright")
|
|
222
|
-
end
|
|
223
|
-
end
|
|
224
|
-
|
|
225
|
-
describe "list with 2 objects", :given => "two players exist" do
|
|
226
|
-
before(:each) do
|
|
227
|
-
MerbAdmin[:per_page] = 1
|
|
228
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
229
|
-
MerbAdmin[:per_page] = 100
|
|
230
|
-
end
|
|
231
|
-
|
|
232
|
-
it "should respond sucessfully" do
|
|
233
|
-
@response.should be_successful
|
|
234
|
-
end
|
|
235
|
-
|
|
236
|
-
it "should show \"2 results\"" do
|
|
237
|
-
@response.body.should contain("2 players")
|
|
238
|
-
end
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
describe "list with 20 objects", :given => "twenty players exist" do
|
|
242
|
-
before(:each) do
|
|
243
|
-
MerbAdmin[:per_page] = 1
|
|
244
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
245
|
-
MerbAdmin[:per_page] = 100
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
it "should respond sucessfully" do
|
|
249
|
-
@response.should be_successful
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
it "should show \"20 results\"" do
|
|
253
|
-
@response.body.should contain("20 players")
|
|
254
|
-
end
|
|
255
|
-
end
|
|
256
|
-
|
|
257
|
-
describe "list with 20 objects, page 8", :given => "twenty players exist" do
|
|
258
|
-
before(:each) do
|
|
259
|
-
MerbAdmin[:per_page] = 1
|
|
260
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 8)
|
|
261
|
-
MerbAdmin[:per_page] = 100
|
|
262
|
-
end
|
|
263
|
-
|
|
264
|
-
it "should respond sucessfully" do
|
|
265
|
-
@response.should be_successful
|
|
266
|
-
end
|
|
267
|
-
|
|
268
|
-
it "should paginate correctly" do
|
|
269
|
-
@response.body.should contain(/1 2[^0-9]*5 6 7 8 9 10 11[^0-9]*19 20/)
|
|
270
|
-
end
|
|
271
|
-
end
|
|
272
|
-
|
|
273
|
-
describe "list with 20 objects, page 17", :given => "twenty players exist" do
|
|
274
|
-
before(:each) do
|
|
275
|
-
MerbAdmin[:per_page] = 1
|
|
276
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 17)
|
|
277
|
-
MerbAdmin[:per_page] = 100
|
|
278
|
-
end
|
|
279
|
-
|
|
280
|
-
it "should respond sucessfully" do
|
|
281
|
-
@response.should be_successful
|
|
282
|
-
end
|
|
283
|
-
|
|
284
|
-
it "should paginate correctly" do
|
|
285
|
-
@response.body.should contain(/1 2[^0-9]*12 13 14 15 16 17 18 19 20/)
|
|
286
|
-
end
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
describe "list show all", :given => "two players exist" do
|
|
290
|
-
before(:each) do
|
|
291
|
-
MerbAdmin[:per_page] = 1
|
|
292
|
-
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :all => true)
|
|
293
|
-
MerbAdmin[:per_page] = 100
|
|
294
|
-
end
|
|
295
|
-
|
|
296
|
-
it "should respond sucessfully" do
|
|
297
|
-
@response.should be_successful
|
|
298
|
-
end
|
|
299
|
-
end
|
|
300
|
-
|
|
301
|
-
describe "new" do
|
|
302
|
-
before(:each) do
|
|
303
|
-
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
304
|
-
end
|
|
305
|
-
|
|
306
|
-
it "should respond sucessfully" do
|
|
307
|
-
@response.should be_successful
|
|
308
|
-
end
|
|
309
|
-
|
|
310
|
-
it "should show \"New model\"" do
|
|
311
|
-
@response.body.should contain("New player")
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
it "should show required fields as \"Required\"" do
|
|
315
|
-
@response.body.should contain(/Name\n\s*Required/)
|
|
316
|
-
@response.body.should contain(/Number\n\s*Required/)
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
it "should show non-required fields as \"Optional\"" do
|
|
320
|
-
@response.body.should contain(/Position\n\s*Optional/)
|
|
321
|
-
@response.body.should contain(/Born on\n\s*Optional/)
|
|
322
|
-
@response.body.should contain(/Notes\n\s*Optional/)
|
|
323
|
-
@response.body.should contain(/Draft\n\s*Optional/)
|
|
324
|
-
@response.body.should contain(/Team\n\s*Optional/)
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
describe "new with has-one association", :given => "a draft exists" do
|
|
329
|
-
before(:each) do
|
|
330
|
-
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
it "should respond sucessfully" do
|
|
334
|
-
@response.should be_successful
|
|
335
|
-
end
|
|
336
|
-
|
|
337
|
-
it "should show associated objects" do
|
|
338
|
-
@response.body.should contain(/DraftDraft #\d+/)
|
|
339
|
-
end
|
|
340
|
-
end
|
|
341
|
-
|
|
342
|
-
describe "new with has-many association", :given => "three teams exist" do
|
|
343
|
-
before(:each) do
|
|
344
|
-
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
345
|
-
end
|
|
346
|
-
|
|
347
|
-
it "should respond sucessfully" do
|
|
348
|
-
@response.should be_successful
|
|
349
|
-
end
|
|
350
|
-
|
|
351
|
-
it "should show associated objects" do
|
|
352
|
-
@response.body.should contain(/TeamTeam 1Team 2Team 3/)
|
|
353
|
-
end
|
|
354
|
-
end
|
|
355
|
-
|
|
356
|
-
describe "new with missing label", :given => ["a player exists", "three teams with no name exist"] do
|
|
357
|
-
before(:each) do
|
|
358
|
-
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
359
|
-
end
|
|
360
|
-
|
|
361
|
-
it "should respond sucessfully" do
|
|
362
|
-
@response.should be_successful
|
|
363
|
-
end
|
|
364
|
-
end
|
|
365
|
-
|
|
366
|
-
describe "create" do
|
|
367
|
-
before(:each) do
|
|
368
|
-
visit(url(:merb_admin_new, :model_name => "player"))
|
|
369
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
370
|
-
fill_in "Number", :with => "42"
|
|
371
|
-
fill_in "Position", :with => "Second baseman"
|
|
372
|
-
@response = click_button "Save"
|
|
373
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
374
|
-
end
|
|
375
|
-
|
|
376
|
-
it "should be successful" do
|
|
377
|
-
@response.should be_successful
|
|
378
|
-
end
|
|
379
|
-
|
|
380
|
-
it "should create an object with correct attributes" do
|
|
381
|
-
@player.name.should eql("Jackie Robinson")
|
|
382
|
-
@player.number.should eql(42)
|
|
383
|
-
@player.position.should eql("Second baseman")
|
|
384
|
-
end
|
|
385
|
-
end
|
|
386
|
-
|
|
387
|
-
describe "create and edit" do
|
|
388
|
-
before(:each) do
|
|
389
|
-
visit(url(:merb_admin_new, :model_name => "player"))
|
|
390
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
391
|
-
fill_in "Number", :with => "42"
|
|
392
|
-
fill_in "Position", :with => "Second baseman"
|
|
393
|
-
@response = click_button "Save and continue editing"
|
|
394
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
395
|
-
end
|
|
396
|
-
|
|
397
|
-
it "should be successful" do
|
|
398
|
-
@response.should be_successful
|
|
399
|
-
end
|
|
400
|
-
|
|
401
|
-
it "should create an object with correct attributes" do
|
|
402
|
-
@player.name.should eql("Jackie Robinson")
|
|
403
|
-
@player.number.should eql(42)
|
|
404
|
-
@player.position.should eql("Second baseman")
|
|
405
|
-
end
|
|
406
|
-
end
|
|
407
|
-
|
|
408
|
-
describe "create and add another" do
|
|
409
|
-
before(:each) do
|
|
410
|
-
visit(url(:merb_admin_new, :model_name => "player"))
|
|
411
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
412
|
-
fill_in "Number", :with => "42"
|
|
413
|
-
fill_in "Position", :with => "Second baseman"
|
|
414
|
-
@response = click_button "Save and add another"
|
|
415
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
416
|
-
end
|
|
417
|
-
|
|
418
|
-
it "should be successful" do
|
|
419
|
-
@response.should be_successful
|
|
420
|
-
end
|
|
421
|
-
|
|
422
|
-
it "should create an object with correct attributes" do
|
|
423
|
-
@player.name.should eql("Jackie Robinson")
|
|
424
|
-
@player.number.should eql(42)
|
|
425
|
-
@player.position.should eql("Second baseman")
|
|
426
|
-
end
|
|
427
|
-
end
|
|
428
|
-
|
|
429
|
-
describe "create with has-one association", :given => "a draft exists" do
|
|
430
|
-
before(:each) do
|
|
431
|
-
visit(url(:merb_admin_new, :model_name => "player"))
|
|
432
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
433
|
-
fill_in "Number", :with => 42
|
|
434
|
-
fill_in "Position", :with => "Second baseman"
|
|
435
|
-
fill_in "Draft", :with => @draft.id.to_s
|
|
436
|
-
@response = click_button "Save"
|
|
437
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
438
|
-
end
|
|
439
|
-
|
|
440
|
-
it "should create an object with correct associations" do
|
|
441
|
-
@draft.reload
|
|
442
|
-
@player.draft.should eql(@draft)
|
|
443
|
-
end
|
|
444
|
-
end
|
|
445
|
-
|
|
446
|
-
describe "create with has-many association", :given => "three teams exist" do
|
|
447
|
-
before(:each) do
|
|
448
|
-
visit(url(:merb_admin_new, :model_name => "league"))
|
|
449
|
-
fill_in "Name", :with => "National League"
|
|
450
|
-
fill_in "Teams", :with => @teams[0].id.to_s
|
|
451
|
-
@response = click_button "Save"
|
|
452
|
-
@league = MerbAdmin::AbstractModel.new("League").first
|
|
453
|
-
end
|
|
454
|
-
|
|
455
|
-
it "should create an object with correct associations" do
|
|
456
|
-
@teams[0].reload
|
|
457
|
-
@league.teams.should include(@teams[0])
|
|
458
|
-
end
|
|
459
|
-
|
|
460
|
-
it "should not create an object with incorrect associations" do
|
|
461
|
-
@league.teams.should_not include(@teams[1])
|
|
462
|
-
@league.teams.should_not include(@teams[2])
|
|
463
|
-
end
|
|
464
|
-
end
|
|
465
|
-
|
|
466
|
-
describe "create with uniqueness constraint violated", :given => "a player exists" do
|
|
467
|
-
before(:each) do
|
|
468
|
-
visit(url(:merb_admin_new, :model_name => "player"))
|
|
469
|
-
fill_in "Name", :with => @player.name
|
|
470
|
-
fill_in "Number", :with => @player.number.to_s
|
|
471
|
-
fill_in "Position", :with => @player.position
|
|
472
|
-
fill_in "Team", :with => @player.team_id.to_s
|
|
473
|
-
@response = click_button "Save"
|
|
474
|
-
end
|
|
475
|
-
|
|
476
|
-
it "should show an error message" do
|
|
477
|
-
@response.body.should contain("There is already a player with that number on this team")
|
|
478
|
-
end
|
|
479
|
-
end
|
|
480
|
-
|
|
481
|
-
describe "create with invalid object" do
|
|
482
|
-
before(:each) do
|
|
483
|
-
@response = visit(url(:merb_admin_create, :model_name => "player"), :post, :params => {:player => {}})
|
|
484
|
-
end
|
|
485
|
-
|
|
486
|
-
it "should show an error message" do
|
|
487
|
-
@response.body.should contain("Player failed to be created")
|
|
488
|
-
end
|
|
489
|
-
end
|
|
490
|
-
|
|
491
|
-
describe "edit", :given => "a player exists" do
|
|
492
|
-
before(:each) do
|
|
493
|
-
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
494
|
-
end
|
|
495
|
-
|
|
496
|
-
it "should respond sucessfully" do
|
|
497
|
-
@response.should be_successful
|
|
498
|
-
end
|
|
499
|
-
|
|
500
|
-
it "should show \"Edit model\"" do
|
|
501
|
-
@response.body.should contain("Edit player")
|
|
502
|
-
end
|
|
503
|
-
|
|
504
|
-
it "should show required fields as \"Required\"" do
|
|
505
|
-
@response.body.should contain(/Name\n\s*Required/)
|
|
506
|
-
@response.body.should contain(/Number\n\s*Required/)
|
|
507
|
-
end
|
|
508
|
-
|
|
509
|
-
it "should show non-required fields as \"Optional\"" do
|
|
510
|
-
@response.body.should contain(/Position\n\s*Optional/)
|
|
511
|
-
@response.body.should contain(/Born on\n\s*Optional/)
|
|
512
|
-
@response.body.should contain(/Notes\n\s*Optional/)
|
|
513
|
-
@response.body.should contain(/Draft\n\s*Optional/)
|
|
514
|
-
@response.body.should contain(/Team\n\s*Optional/)
|
|
515
|
-
end
|
|
516
|
-
end
|
|
517
|
-
|
|
518
|
-
describe "edit with has-one association", :given => ["a player exists", "a draft exists"] do
|
|
519
|
-
before(:each) do
|
|
520
|
-
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
521
|
-
end
|
|
522
|
-
|
|
523
|
-
it "should respond sucessfully" do
|
|
524
|
-
@response.should be_successful
|
|
525
|
-
end
|
|
526
|
-
|
|
527
|
-
it "should show associated objects" do
|
|
528
|
-
@response.body.should contain(/DraftDraft #\d+/)
|
|
529
|
-
end
|
|
530
|
-
end
|
|
531
|
-
|
|
532
|
-
describe "edit with has-many association", :given => ["a player exists", "three teams exist"] do
|
|
533
|
-
before(:each) do
|
|
534
|
-
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
535
|
-
end
|
|
536
|
-
|
|
537
|
-
it "should respond sucessfully" do
|
|
538
|
-
@response.should be_successful
|
|
539
|
-
end
|
|
540
|
-
|
|
541
|
-
it "should show associated objects" do
|
|
542
|
-
@response.body.should contain(/TeamTeam 1Team 2Team 3/)
|
|
543
|
-
end
|
|
544
|
-
end
|
|
545
|
-
|
|
546
|
-
describe "edit with missing object" do
|
|
547
|
-
before(:each) do
|
|
548
|
-
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => 1))
|
|
549
|
-
end
|
|
550
|
-
|
|
551
|
-
it "should raise NotFound" do
|
|
552
|
-
@response.status.should equal(404)
|
|
553
|
-
end
|
|
554
|
-
end
|
|
555
|
-
|
|
556
|
-
describe "edit with missing label", :given => ["a player exists", "three teams with no name exist"] do
|
|
557
|
-
before(:each) do
|
|
558
|
-
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
559
|
-
end
|
|
560
|
-
|
|
561
|
-
it "should respond sucessfully" do
|
|
562
|
-
@response.should be_successful
|
|
563
|
-
end
|
|
564
|
-
end
|
|
565
|
-
|
|
566
|
-
describe "update", :given => "a player exists" do
|
|
567
|
-
before(:each) do
|
|
568
|
-
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
569
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
570
|
-
fill_in "Number", :with => "42"
|
|
571
|
-
fill_in "Position", :with => "Second baseman"
|
|
572
|
-
@response = click_button "Save"
|
|
573
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
574
|
-
end
|
|
575
|
-
|
|
576
|
-
it "should be successful" do
|
|
577
|
-
@response.should be_successful
|
|
578
|
-
end
|
|
579
|
-
|
|
580
|
-
it "should update an object with correct attributes" do
|
|
581
|
-
@player.name.should eql("Jackie Robinson")
|
|
582
|
-
@player.number.should eql(42)
|
|
583
|
-
@player.position.should eql("Second baseman")
|
|
584
|
-
end
|
|
585
|
-
end
|
|
586
|
-
|
|
587
|
-
describe "update and edit", :given => "a player exists" do
|
|
588
|
-
before(:each) do
|
|
589
|
-
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
590
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
591
|
-
fill_in "Number", :with => "42"
|
|
592
|
-
fill_in "Position", :with => "Second baseman"
|
|
593
|
-
@response = click_button "Save and continue"
|
|
594
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
595
|
-
end
|
|
596
|
-
|
|
597
|
-
it "should be successful" do
|
|
598
|
-
@response.should be_successful
|
|
599
|
-
end
|
|
600
|
-
|
|
601
|
-
it "should update an object with correct attributes" do
|
|
602
|
-
@player.name.should eql("Jackie Robinson")
|
|
603
|
-
@player.number.should eql(42)
|
|
604
|
-
@player.position.should eql("Second baseman")
|
|
605
|
-
end
|
|
606
|
-
end
|
|
607
|
-
|
|
608
|
-
describe "update and add another", :given => "a player exists" do
|
|
609
|
-
before(:each) do
|
|
610
|
-
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
611
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
612
|
-
fill_in "Number", :with => "42"
|
|
613
|
-
fill_in "Position", :with => "Second baseman"
|
|
614
|
-
@response = click_button "Save and add another"
|
|
615
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
616
|
-
end
|
|
617
|
-
|
|
618
|
-
it "should be successful" do
|
|
619
|
-
@response.should be_successful
|
|
620
|
-
end
|
|
621
|
-
|
|
622
|
-
it "should update an object with correct attributes" do
|
|
623
|
-
@player.name.should eql("Jackie Robinson")
|
|
624
|
-
@player.number.should eql(42)
|
|
625
|
-
@player.position.should eql("Second baseman")
|
|
626
|
-
end
|
|
627
|
-
end
|
|
628
|
-
|
|
629
|
-
describe "update with has-one association", :given => ["a player exists", "a draft exists"] do
|
|
630
|
-
before(:each) do
|
|
631
|
-
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
632
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
633
|
-
fill_in "Number", :with => "42"
|
|
634
|
-
fill_in "Position", :with => "Second baseman"
|
|
635
|
-
fill_in "Draft", :with => @draft.id.to_s
|
|
636
|
-
@response = click_button "Save"
|
|
637
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
638
|
-
# @response = visit(url(:merb_admin_update, :model_name => "player", :id => @player.id), :put, :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :associations => {:draft => @draft.id}})
|
|
639
|
-
end
|
|
640
|
-
|
|
641
|
-
it "should update an object with correct attributes" do
|
|
642
|
-
@player.name.should eql("Jackie Robinson")
|
|
643
|
-
@player.number.should eql(42)
|
|
644
|
-
@player.position.should eql("Second baseman")
|
|
645
|
-
end
|
|
646
|
-
|
|
647
|
-
it "should update an object with correct associations" do
|
|
648
|
-
@draft.reload
|
|
649
|
-
@player.draft.should eql(@draft)
|
|
650
|
-
end
|
|
651
|
-
end
|
|
652
|
-
|
|
653
|
-
describe "update with has-many association", :given => ["a league exists", "three teams exist"] do
|
|
654
|
-
before(:each) do
|
|
655
|
-
visit(url(:merb_admin_edit, :model_name => "league", :id => @league.id))
|
|
656
|
-
fill_in "Name", :with => "National League"
|
|
657
|
-
fill_in "Teams", :with => @teams[0].id.to_s
|
|
658
|
-
@response = click_button "Save"
|
|
659
|
-
@league = MerbAdmin::AbstractModel.new("League").first
|
|
660
|
-
end
|
|
661
|
-
|
|
662
|
-
it "should update an object with correct attributes" do
|
|
663
|
-
@league.name.should eql("National League")
|
|
664
|
-
end
|
|
665
|
-
|
|
666
|
-
it "should update an object with correct associations" do
|
|
667
|
-
@teams[0].reload
|
|
668
|
-
@league.teams.should include(@teams[0])
|
|
669
|
-
end
|
|
670
|
-
|
|
671
|
-
it "should not update an object with incorrect associations" do
|
|
672
|
-
@league.teams.should_not include(@teams[1])
|
|
673
|
-
@league.teams.should_not include(@teams[2])
|
|
674
|
-
end
|
|
675
|
-
end
|
|
676
|
-
|
|
677
|
-
describe "update with missing object" do
|
|
678
|
-
before(:each) do
|
|
679
|
-
@response = visit(url(:merb_admin_update, :model_name => "player", :id => 1), :put, {:player => {:name => "Jackie Robinson", :number => 42, :position => "Second baseman"}})
|
|
680
|
-
end
|
|
681
|
-
|
|
682
|
-
it "should raise NotFound" do
|
|
683
|
-
@response.status.should equal(404)
|
|
684
|
-
end
|
|
685
|
-
end
|
|
686
|
-
|
|
687
|
-
describe "update with invalid object", :given => "a player exists" do
|
|
688
|
-
before(:each) do
|
|
689
|
-
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
690
|
-
fill_in "Name", :with => "Jackie Robinson"
|
|
691
|
-
fill_in "Number", :with => "a"
|
|
692
|
-
fill_in "Position", :with => "Second baseman"
|
|
693
|
-
@response = click_button "Save"
|
|
694
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
695
|
-
end
|
|
696
|
-
|
|
697
|
-
it "should show an error message" do
|
|
698
|
-
@response.body.should contain("Player failed to be updated")
|
|
699
|
-
end
|
|
700
|
-
end
|
|
701
|
-
|
|
702
|
-
describe "delete", :given => "a player exists" do
|
|
703
|
-
before(:each) do
|
|
704
|
-
@response = visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
|
|
705
|
-
end
|
|
706
|
-
|
|
707
|
-
it "should respond sucessfully" do
|
|
708
|
-
@response.should be_successful
|
|
709
|
-
end
|
|
710
|
-
|
|
711
|
-
it "should show \"Delete model\"" do
|
|
712
|
-
@response.body.should contain("Delete player")
|
|
713
|
-
end
|
|
714
|
-
end
|
|
715
|
-
|
|
716
|
-
describe "delete with missing object" do
|
|
717
|
-
before(:each) do
|
|
718
|
-
@response = visit(url(:merb_admin_delete, :model_name => "player", :id => 1))
|
|
719
|
-
end
|
|
720
|
-
|
|
721
|
-
it "should raise NotFound" do
|
|
722
|
-
@response.status.should equal(404)
|
|
723
|
-
end
|
|
724
|
-
end
|
|
725
|
-
|
|
726
|
-
describe "delete with missing label" do
|
|
727
|
-
before(:each) do
|
|
728
|
-
@league = MerbAdmin::AbstractModel.new("League").create(:name => "League 1")
|
|
729
|
-
@team = MerbAdmin::AbstractModel.new("Team").create(:league_id => @league.id, :division_id => rand(99999), :manager => "Manager 1", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
730
|
-
@response = visit(url(:merb_admin_delete, :model_name => "league", :id => @league.id))
|
|
731
|
-
end
|
|
732
|
-
|
|
733
|
-
it "should respond sucessfully" do
|
|
734
|
-
@response.should be_successful
|
|
735
|
-
end
|
|
736
|
-
end
|
|
737
|
-
|
|
738
|
-
describe "destroy", :given => "a player exists" do
|
|
739
|
-
before(:each) do
|
|
740
|
-
visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
|
|
741
|
-
@response = click_button "Yes, I'm sure"
|
|
742
|
-
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
743
|
-
end
|
|
744
|
-
|
|
745
|
-
it "should be successful" do
|
|
746
|
-
@response.should be_successful
|
|
747
|
-
end
|
|
748
|
-
|
|
749
|
-
it "should destroy an object" do
|
|
750
|
-
@player.should be_nil
|
|
751
|
-
end
|
|
752
|
-
end
|
|
753
|
-
|
|
754
|
-
describe "destroy with missing object" do
|
|
755
|
-
before(:each) do
|
|
756
|
-
@response = visit(url(:merb_admin_destroy, :model_name => "player", :id => 1), :delete)
|
|
757
|
-
end
|
|
758
|
-
|
|
759
|
-
it "should raise NotFound" do
|
|
760
|
-
@response.status.should equal(404)
|
|
761
|
-
end
|
|
762
|
-
end
|
|
763
|
-
end
|
|
1
|
+
require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
|
|
2
|
+
|
|
3
|
+
given "a player exists" do
|
|
4
|
+
@player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
given "a draft exists" do
|
|
8
|
+
@draft = MerbAdmin::AbstractModel.new("Draft").create(:player_id => rand(99999), :team_id => rand(99999), :date => Date.today, :round => rand(50), :pick => rand(30), :overall => rand(1500))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
given "a league exists" do
|
|
12
|
+
@league = MerbAdmin::AbstractModel.new("League").create(:name => "League 1")
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
given "two players exist" do
|
|
16
|
+
@players = []
|
|
17
|
+
(1..2).each do |number|
|
|
18
|
+
@players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => number, :name => "Player #{number}")
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
given "three teams exist" do
|
|
23
|
+
@teams = []
|
|
24
|
+
(1..3).each do |number|
|
|
25
|
+
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{number}", :manager => "Manager #{number}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
given "three teams with no name exist" do
|
|
30
|
+
@teams = []
|
|
31
|
+
(1..3).each do |number|
|
|
32
|
+
@teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :manager => "Manager #{number}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
given "twenty players exist" do
|
|
37
|
+
@players = []
|
|
38
|
+
(1..20).each do |number|
|
|
39
|
+
@players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => number, :name => "Player #{number}")
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
describe "MerbAdmin" do
|
|
44
|
+
before(:each) do
|
|
45
|
+
mount_slice
|
|
46
|
+
MerbAdmin::AbstractModel.new("Division").destroy_all!
|
|
47
|
+
MerbAdmin::AbstractModel.new("Draft").destroy_all!
|
|
48
|
+
MerbAdmin::AbstractModel.new("League").destroy_all!
|
|
49
|
+
MerbAdmin::AbstractModel.new("Player").destroy_all!
|
|
50
|
+
MerbAdmin::AbstractModel.new("Team").destroy_all!
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
describe "dashboard" do
|
|
54
|
+
before(:each) do
|
|
55
|
+
@response = visit(url(:merb_admin_dashboard))
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "should respond sucessfully" do
|
|
59
|
+
@response.should be_successful
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "should show \"Site administration\"" do
|
|
63
|
+
@response.body.should contain("Site administration")
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
describe "dashboard with excluded models" do
|
|
68
|
+
before(:each) do
|
|
69
|
+
MerbAdmin[:excluded_models] = ["Player"]
|
|
70
|
+
@response = visit(url(:merb_admin_dashboard))
|
|
71
|
+
MerbAdmin[:excluded_models] = []
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "should respond sucessfully" do
|
|
75
|
+
@response.should be_successful
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "should not contain excluded models" do
|
|
79
|
+
@response.body.should_not contain(/Player/)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "list" do
|
|
84
|
+
before(:each) do
|
|
85
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "should respond sucessfully" do
|
|
89
|
+
@response.should be_successful
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "should show \"Select model to edit\"" do
|
|
93
|
+
@response.body.should contain("Select player to edit")
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "should show filters" do
|
|
97
|
+
@response.body.should contain(/Filter\n\s*By Retired\n\s*All\n\s*Yes\n\s*No\n\s*By Injured\n\s*All\n\s*Yes\n\s*No/)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should show column headers" do
|
|
101
|
+
@response.body.should contain(/Id\n\s*Created at\n\s*Updated at\n\s*Team\n\s*Name\n\s*Position\n\s*Number\n\s*Retired\n\s*Injured\n\s*Born on\n\s*Notes/)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
describe "list with sort" do
|
|
106
|
+
before(:each) do
|
|
107
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
108
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
109
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name")
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it "should respond sucessfully" do
|
|
113
|
+
@response.should be_successful
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "should be sorted correctly" do
|
|
117
|
+
@response.body.should contain(/Jackie Robinson.*Sandy Koufax/m)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
describe "list with reverse sort" do
|
|
122
|
+
before(:each) do
|
|
123
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
124
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
125
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name", :sort_reverse => "true")
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "should respond sucessfully" do
|
|
129
|
+
@response.should be_successful
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
it "should be sorted correctly" do
|
|
133
|
+
@response.body.should contain(/Sandy Koufax.*Jackie Robinson/m)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
describe "list with query" do
|
|
138
|
+
before(:each) do
|
|
139
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
|
|
140
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
|
|
141
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Jackie Robinson")
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it "should respond sucessfully" do
|
|
145
|
+
@response.should be_successful
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
it "should show a correct result" do
|
|
149
|
+
@response.body.should contain("Jackie Robinson")
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "should not contain an incorrect result" do
|
|
153
|
+
@response.body.should_not contain("Sandy Koufax")
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
describe "list with query and boolean filter" do
|
|
158
|
+
before(:each) do
|
|
159
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
|
|
160
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
|
|
161
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
|
|
162
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
|
|
163
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Sandy Koufax", :filter => {:injured => "true"})
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it "should respond sucessfully" do
|
|
167
|
+
@response.should be_successful
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it "should show a correct result" do
|
|
171
|
+
@response.body.should contain("Sandy Koufax")
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it "should not contain an incorrect result" do
|
|
175
|
+
@response.body.should_not contain("Jackie Robinson")
|
|
176
|
+
@response.body.should_not contain("Moises Alou")
|
|
177
|
+
@response.body.should_not contain("David Wright")
|
|
178
|
+
end
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
describe "list with boolean filter" do
|
|
183
|
+
before(:each) do
|
|
184
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :injured => true)
|
|
185
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :injured => false)
|
|
186
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:injured => "true"})
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
it "should respond sucessfully" do
|
|
190
|
+
@response.should be_successful
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it "should show a correct result" do
|
|
194
|
+
@response.body.should contain("Moises Alou")
|
|
195
|
+
end
|
|
196
|
+
|
|
197
|
+
it "should not contain an incorrect result" do
|
|
198
|
+
@response.body.should_not contain("David Wright")
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
describe "list with boolean filters" do
|
|
203
|
+
before(:each) do
|
|
204
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
|
|
205
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
|
|
206
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
|
|
207
|
+
MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
|
|
208
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:retired => "true", :injured => "true"})
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
it "should respond sucessfully" do
|
|
212
|
+
@response.should be_successful
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it "should show a correct result" do
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
it "should not contain an incorrect result" do
|
|
219
|
+
@response.body.should_not contain("Jackie Robinson")
|
|
220
|
+
@response.body.should_not contain("Moises Alou")
|
|
221
|
+
@response.body.should_not contain("David Wright")
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
describe "list with 2 objects", :given => "two players exist" do
|
|
226
|
+
before(:each) do
|
|
227
|
+
MerbAdmin[:per_page] = 1
|
|
228
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
229
|
+
MerbAdmin[:per_page] = 100
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
it "should respond sucessfully" do
|
|
233
|
+
@response.should be_successful
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
it "should show \"2 results\"" do
|
|
237
|
+
@response.body.should contain("2 players")
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
describe "list with 20 objects", :given => "twenty players exist" do
|
|
242
|
+
before(:each) do
|
|
243
|
+
MerbAdmin[:per_page] = 1
|
|
244
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"))
|
|
245
|
+
MerbAdmin[:per_page] = 100
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "should respond sucessfully" do
|
|
249
|
+
@response.should be_successful
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "should show \"20 results\"" do
|
|
253
|
+
@response.body.should contain("20 players")
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
describe "list with 20 objects, page 8", :given => "twenty players exist" do
|
|
258
|
+
before(:each) do
|
|
259
|
+
MerbAdmin[:per_page] = 1
|
|
260
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 8)
|
|
261
|
+
MerbAdmin[:per_page] = 100
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
it "should respond sucessfully" do
|
|
265
|
+
@response.should be_successful
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
it "should paginate correctly" do
|
|
269
|
+
@response.body.should contain(/1 2[^0-9]*5 6 7 8 9 10 11[^0-9]*19 20/)
|
|
270
|
+
end
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
describe "list with 20 objects, page 17", :given => "twenty players exist" do
|
|
274
|
+
before(:each) do
|
|
275
|
+
MerbAdmin[:per_page] = 1
|
|
276
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 17)
|
|
277
|
+
MerbAdmin[:per_page] = 100
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
it "should respond sucessfully" do
|
|
281
|
+
@response.should be_successful
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
it "should paginate correctly" do
|
|
285
|
+
@response.body.should contain(/1 2[^0-9]*12 13 14 15 16 17 18 19 20/)
|
|
286
|
+
end
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
describe "list show all", :given => "two players exist" do
|
|
290
|
+
before(:each) do
|
|
291
|
+
MerbAdmin[:per_page] = 1
|
|
292
|
+
@response = visit(url(:merb_admin_list, :model_name => "player"), :get, :all => true)
|
|
293
|
+
MerbAdmin[:per_page] = 100
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
it "should respond sucessfully" do
|
|
297
|
+
@response.should be_successful
|
|
298
|
+
end
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
describe "new" do
|
|
302
|
+
before(:each) do
|
|
303
|
+
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
it "should respond sucessfully" do
|
|
307
|
+
@response.should be_successful
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
it "should show \"New model\"" do
|
|
311
|
+
@response.body.should contain("New player")
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
it "should show required fields as \"Required\"" do
|
|
315
|
+
@response.body.should contain(/Name\n\s*Required/)
|
|
316
|
+
@response.body.should contain(/Number\n\s*Required/)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
it "should show non-required fields as \"Optional\"" do
|
|
320
|
+
@response.body.should contain(/Position\n\s*Optional/)
|
|
321
|
+
@response.body.should contain(/Born on\n\s*Optional/)
|
|
322
|
+
@response.body.should contain(/Notes\n\s*Optional/)
|
|
323
|
+
@response.body.should contain(/Draft\n\s*Optional/)
|
|
324
|
+
@response.body.should contain(/Team\n\s*Optional/)
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
describe "new with has-one association", :given => "a draft exists" do
|
|
329
|
+
before(:each) do
|
|
330
|
+
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
it "should respond sucessfully" do
|
|
334
|
+
@response.should be_successful
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
it "should show associated objects" do
|
|
338
|
+
@response.body.should contain(/DraftDraft #\d+/)
|
|
339
|
+
end
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
describe "new with has-many association", :given => "three teams exist" do
|
|
343
|
+
before(:each) do
|
|
344
|
+
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
it "should respond sucessfully" do
|
|
348
|
+
@response.should be_successful
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
it "should show associated objects" do
|
|
352
|
+
@response.body.should contain(/TeamTeam 1Team 2Team 3/)
|
|
353
|
+
end
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
describe "new with missing label", :given => ["a player exists", "three teams with no name exist"] do
|
|
357
|
+
before(:each) do
|
|
358
|
+
@response = visit(url(:merb_admin_new, :model_name => "player"))
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
it "should respond sucessfully" do
|
|
362
|
+
@response.should be_successful
|
|
363
|
+
end
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
describe "create" do
|
|
367
|
+
before(:each) do
|
|
368
|
+
visit(url(:merb_admin_new, :model_name => "player"))
|
|
369
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
370
|
+
fill_in "Number", :with => "42"
|
|
371
|
+
fill_in "Position", :with => "Second baseman"
|
|
372
|
+
@response = click_button "Save"
|
|
373
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
it "should be successful" do
|
|
377
|
+
@response.should be_successful
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
it "should create an object with correct attributes" do
|
|
381
|
+
@player.name.should eql("Jackie Robinson")
|
|
382
|
+
@player.number.should eql(42)
|
|
383
|
+
@player.position.should eql("Second baseman")
|
|
384
|
+
end
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
describe "create and edit" do
|
|
388
|
+
before(:each) do
|
|
389
|
+
visit(url(:merb_admin_new, :model_name => "player"))
|
|
390
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
391
|
+
fill_in "Number", :with => "42"
|
|
392
|
+
fill_in "Position", :with => "Second baseman"
|
|
393
|
+
@response = click_button "Save and continue editing"
|
|
394
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
it "should be successful" do
|
|
398
|
+
@response.should be_successful
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
it "should create an object with correct attributes" do
|
|
402
|
+
@player.name.should eql("Jackie Robinson")
|
|
403
|
+
@player.number.should eql(42)
|
|
404
|
+
@player.position.should eql("Second baseman")
|
|
405
|
+
end
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
describe "create and add another" do
|
|
409
|
+
before(:each) do
|
|
410
|
+
visit(url(:merb_admin_new, :model_name => "player"))
|
|
411
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
412
|
+
fill_in "Number", :with => "42"
|
|
413
|
+
fill_in "Position", :with => "Second baseman"
|
|
414
|
+
@response = click_button "Save and add another"
|
|
415
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
416
|
+
end
|
|
417
|
+
|
|
418
|
+
it "should be successful" do
|
|
419
|
+
@response.should be_successful
|
|
420
|
+
end
|
|
421
|
+
|
|
422
|
+
it "should create an object with correct attributes" do
|
|
423
|
+
@player.name.should eql("Jackie Robinson")
|
|
424
|
+
@player.number.should eql(42)
|
|
425
|
+
@player.position.should eql("Second baseman")
|
|
426
|
+
end
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
describe "create with has-one association", :given => "a draft exists" do
|
|
430
|
+
before(:each) do
|
|
431
|
+
visit(url(:merb_admin_new, :model_name => "player"))
|
|
432
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
433
|
+
fill_in "Number", :with => 42
|
|
434
|
+
fill_in "Position", :with => "Second baseman"
|
|
435
|
+
fill_in "Draft", :with => @draft.id.to_s
|
|
436
|
+
@response = click_button "Save"
|
|
437
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
it "should create an object with correct associations" do
|
|
441
|
+
@draft.reload
|
|
442
|
+
@player.draft.should eql(@draft)
|
|
443
|
+
end
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
describe "create with has-many association", :given => "three teams exist" do
|
|
447
|
+
before(:each) do
|
|
448
|
+
visit(url(:merb_admin_new, :model_name => "league"))
|
|
449
|
+
fill_in "Name", :with => "National League"
|
|
450
|
+
fill_in "Teams", :with => @teams[0].id.to_s
|
|
451
|
+
@response = click_button "Save"
|
|
452
|
+
@league = MerbAdmin::AbstractModel.new("League").first
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
it "should create an object with correct associations" do
|
|
456
|
+
@teams[0].reload
|
|
457
|
+
@league.teams.should include(@teams[0])
|
|
458
|
+
end
|
|
459
|
+
|
|
460
|
+
it "should not create an object with incorrect associations" do
|
|
461
|
+
@league.teams.should_not include(@teams[1])
|
|
462
|
+
@league.teams.should_not include(@teams[2])
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
describe "create with uniqueness constraint violated", :given => "a player exists" do
|
|
467
|
+
before(:each) do
|
|
468
|
+
visit(url(:merb_admin_new, :model_name => "player"))
|
|
469
|
+
fill_in "Name", :with => @player.name
|
|
470
|
+
fill_in "Number", :with => @player.number.to_s
|
|
471
|
+
fill_in "Position", :with => @player.position
|
|
472
|
+
fill_in "Team", :with => @player.team_id.to_s
|
|
473
|
+
@response = click_button "Save"
|
|
474
|
+
end
|
|
475
|
+
|
|
476
|
+
it "should show an error message" do
|
|
477
|
+
@response.body.should contain("There is already a player with that number on this team")
|
|
478
|
+
end
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
describe "create with invalid object" do
|
|
482
|
+
before(:each) do
|
|
483
|
+
@response = visit(url(:merb_admin_create, :model_name => "player"), :post, :params => {:player => {}})
|
|
484
|
+
end
|
|
485
|
+
|
|
486
|
+
it "should show an error message" do
|
|
487
|
+
@response.body.should contain("Player failed to be created")
|
|
488
|
+
end
|
|
489
|
+
end
|
|
490
|
+
|
|
491
|
+
describe "edit", :given => "a player exists" do
|
|
492
|
+
before(:each) do
|
|
493
|
+
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
it "should respond sucessfully" do
|
|
497
|
+
@response.should be_successful
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
it "should show \"Edit model\"" do
|
|
501
|
+
@response.body.should contain("Edit player")
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
it "should show required fields as \"Required\"" do
|
|
505
|
+
@response.body.should contain(/Name\n\s*Required/)
|
|
506
|
+
@response.body.should contain(/Number\n\s*Required/)
|
|
507
|
+
end
|
|
508
|
+
|
|
509
|
+
it "should show non-required fields as \"Optional\"" do
|
|
510
|
+
@response.body.should contain(/Position\n\s*Optional/)
|
|
511
|
+
@response.body.should contain(/Born on\n\s*Optional/)
|
|
512
|
+
@response.body.should contain(/Notes\n\s*Optional/)
|
|
513
|
+
@response.body.should contain(/Draft\n\s*Optional/)
|
|
514
|
+
@response.body.should contain(/Team\n\s*Optional/)
|
|
515
|
+
end
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
describe "edit with has-one association", :given => ["a player exists", "a draft exists"] do
|
|
519
|
+
before(:each) do
|
|
520
|
+
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
521
|
+
end
|
|
522
|
+
|
|
523
|
+
it "should respond sucessfully" do
|
|
524
|
+
@response.should be_successful
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
it "should show associated objects" do
|
|
528
|
+
@response.body.should contain(/DraftDraft #\d+/)
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
describe "edit with has-many association", :given => ["a player exists", "three teams exist"] do
|
|
533
|
+
before(:each) do
|
|
534
|
+
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
it "should respond sucessfully" do
|
|
538
|
+
@response.should be_successful
|
|
539
|
+
end
|
|
540
|
+
|
|
541
|
+
it "should show associated objects" do
|
|
542
|
+
@response.body.should contain(/TeamTeam 1Team 2Team 3/)
|
|
543
|
+
end
|
|
544
|
+
end
|
|
545
|
+
|
|
546
|
+
describe "edit with missing object" do
|
|
547
|
+
before(:each) do
|
|
548
|
+
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => 1))
|
|
549
|
+
end
|
|
550
|
+
|
|
551
|
+
it "should raise NotFound" do
|
|
552
|
+
@response.status.should equal(404)
|
|
553
|
+
end
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
describe "edit with missing label", :given => ["a player exists", "three teams with no name exist"] do
|
|
557
|
+
before(:each) do
|
|
558
|
+
@response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
it "should respond sucessfully" do
|
|
562
|
+
@response.should be_successful
|
|
563
|
+
end
|
|
564
|
+
end
|
|
565
|
+
|
|
566
|
+
describe "update", :given => "a player exists" do
|
|
567
|
+
before(:each) do
|
|
568
|
+
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
569
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
570
|
+
fill_in "Number", :with => "42"
|
|
571
|
+
fill_in "Position", :with => "Second baseman"
|
|
572
|
+
@response = click_button "Save"
|
|
573
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
it "should be successful" do
|
|
577
|
+
@response.should be_successful
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
it "should update an object with correct attributes" do
|
|
581
|
+
@player.name.should eql("Jackie Robinson")
|
|
582
|
+
@player.number.should eql(42)
|
|
583
|
+
@player.position.should eql("Second baseman")
|
|
584
|
+
end
|
|
585
|
+
end
|
|
586
|
+
|
|
587
|
+
describe "update and edit", :given => "a player exists" do
|
|
588
|
+
before(:each) do
|
|
589
|
+
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
590
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
591
|
+
fill_in "Number", :with => "42"
|
|
592
|
+
fill_in "Position", :with => "Second baseman"
|
|
593
|
+
@response = click_button "Save and continue"
|
|
594
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
it "should be successful" do
|
|
598
|
+
@response.should be_successful
|
|
599
|
+
end
|
|
600
|
+
|
|
601
|
+
it "should update an object with correct attributes" do
|
|
602
|
+
@player.name.should eql("Jackie Robinson")
|
|
603
|
+
@player.number.should eql(42)
|
|
604
|
+
@player.position.should eql("Second baseman")
|
|
605
|
+
end
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
describe "update and add another", :given => "a player exists" do
|
|
609
|
+
before(:each) do
|
|
610
|
+
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
611
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
612
|
+
fill_in "Number", :with => "42"
|
|
613
|
+
fill_in "Position", :with => "Second baseman"
|
|
614
|
+
@response = click_button "Save and add another"
|
|
615
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
616
|
+
end
|
|
617
|
+
|
|
618
|
+
it "should be successful" do
|
|
619
|
+
@response.should be_successful
|
|
620
|
+
end
|
|
621
|
+
|
|
622
|
+
it "should update an object with correct attributes" do
|
|
623
|
+
@player.name.should eql("Jackie Robinson")
|
|
624
|
+
@player.number.should eql(42)
|
|
625
|
+
@player.position.should eql("Second baseman")
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
|
|
629
|
+
describe "update with has-one association", :given => ["a player exists", "a draft exists"] do
|
|
630
|
+
before(:each) do
|
|
631
|
+
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
632
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
633
|
+
fill_in "Number", :with => "42"
|
|
634
|
+
fill_in "Position", :with => "Second baseman"
|
|
635
|
+
fill_in "Draft", :with => @draft.id.to_s
|
|
636
|
+
@response = click_button "Save"
|
|
637
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
638
|
+
# @response = visit(url(:merb_admin_update, :model_name => "player", :id => @player.id), :put, :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :associations => {:draft => @draft.id}})
|
|
639
|
+
end
|
|
640
|
+
|
|
641
|
+
it "should update an object with correct attributes" do
|
|
642
|
+
@player.name.should eql("Jackie Robinson")
|
|
643
|
+
@player.number.should eql(42)
|
|
644
|
+
@player.position.should eql("Second baseman")
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
it "should update an object with correct associations" do
|
|
648
|
+
@draft.reload
|
|
649
|
+
@player.draft.should eql(@draft)
|
|
650
|
+
end
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
describe "update with has-many association", :given => ["a league exists", "three teams exist"] do
|
|
654
|
+
before(:each) do
|
|
655
|
+
visit(url(:merb_admin_edit, :model_name => "league", :id => @league.id))
|
|
656
|
+
fill_in "Name", :with => "National League"
|
|
657
|
+
fill_in "Teams", :with => @teams[0].id.to_s
|
|
658
|
+
@response = click_button "Save"
|
|
659
|
+
@league = MerbAdmin::AbstractModel.new("League").first
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
it "should update an object with correct attributes" do
|
|
663
|
+
@league.name.should eql("National League")
|
|
664
|
+
end
|
|
665
|
+
|
|
666
|
+
it "should update an object with correct associations" do
|
|
667
|
+
@teams[0].reload
|
|
668
|
+
@league.teams.should include(@teams[0])
|
|
669
|
+
end
|
|
670
|
+
|
|
671
|
+
it "should not update an object with incorrect associations" do
|
|
672
|
+
@league.teams.should_not include(@teams[1])
|
|
673
|
+
@league.teams.should_not include(@teams[2])
|
|
674
|
+
end
|
|
675
|
+
end
|
|
676
|
+
|
|
677
|
+
describe "update with missing object" do
|
|
678
|
+
before(:each) do
|
|
679
|
+
@response = visit(url(:merb_admin_update, :model_name => "player", :id => 1), :put, {:player => {:name => "Jackie Robinson", :number => 42, :position => "Second baseman"}})
|
|
680
|
+
end
|
|
681
|
+
|
|
682
|
+
it "should raise NotFound" do
|
|
683
|
+
@response.status.should equal(404)
|
|
684
|
+
end
|
|
685
|
+
end
|
|
686
|
+
|
|
687
|
+
describe "update with invalid object", :given => "a player exists" do
|
|
688
|
+
before(:each) do
|
|
689
|
+
visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
|
|
690
|
+
fill_in "Name", :with => "Jackie Robinson"
|
|
691
|
+
fill_in "Number", :with => "a"
|
|
692
|
+
fill_in "Position", :with => "Second baseman"
|
|
693
|
+
@response = click_button "Save"
|
|
694
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
695
|
+
end
|
|
696
|
+
|
|
697
|
+
it "should show an error message" do
|
|
698
|
+
@response.body.should contain("Player failed to be updated")
|
|
699
|
+
end
|
|
700
|
+
end
|
|
701
|
+
|
|
702
|
+
describe "delete", :given => "a player exists" do
|
|
703
|
+
before(:each) do
|
|
704
|
+
@response = visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
|
|
705
|
+
end
|
|
706
|
+
|
|
707
|
+
it "should respond sucessfully" do
|
|
708
|
+
@response.should be_successful
|
|
709
|
+
end
|
|
710
|
+
|
|
711
|
+
it "should show \"Delete model\"" do
|
|
712
|
+
@response.body.should contain("Delete player")
|
|
713
|
+
end
|
|
714
|
+
end
|
|
715
|
+
|
|
716
|
+
describe "delete with missing object" do
|
|
717
|
+
before(:each) do
|
|
718
|
+
@response = visit(url(:merb_admin_delete, :model_name => "player", :id => 1))
|
|
719
|
+
end
|
|
720
|
+
|
|
721
|
+
it "should raise NotFound" do
|
|
722
|
+
@response.status.should equal(404)
|
|
723
|
+
end
|
|
724
|
+
end
|
|
725
|
+
|
|
726
|
+
describe "delete with missing label" do
|
|
727
|
+
before(:each) do
|
|
728
|
+
@league = MerbAdmin::AbstractModel.new("League").create(:name => "League 1")
|
|
729
|
+
@team = MerbAdmin::AbstractModel.new("Team").create(:league_id => @league.id, :division_id => rand(99999), :manager => "Manager 1", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => ("%.3f" % (wins.to_f / 162)).to_f)
|
|
730
|
+
@response = visit(url(:merb_admin_delete, :model_name => "league", :id => @league.id))
|
|
731
|
+
end
|
|
732
|
+
|
|
733
|
+
it "should respond sucessfully" do
|
|
734
|
+
@response.should be_successful
|
|
735
|
+
end
|
|
736
|
+
end
|
|
737
|
+
|
|
738
|
+
describe "destroy", :given => "a player exists" do
|
|
739
|
+
before(:each) do
|
|
740
|
+
visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
|
|
741
|
+
@response = click_button "Yes, I'm sure"
|
|
742
|
+
@player = MerbAdmin::AbstractModel.new("Player").first
|
|
743
|
+
end
|
|
744
|
+
|
|
745
|
+
it "should be successful" do
|
|
746
|
+
@response.should be_successful
|
|
747
|
+
end
|
|
748
|
+
|
|
749
|
+
it "should destroy an object" do
|
|
750
|
+
@player.should be_nil
|
|
751
|
+
end
|
|
752
|
+
end
|
|
753
|
+
|
|
754
|
+
describe "destroy with missing object" do
|
|
755
|
+
before(:each) do
|
|
756
|
+
@response = visit(url(:merb_admin_destroy, :model_name => "player", :id => 1), :delete)
|
|
757
|
+
end
|
|
758
|
+
|
|
759
|
+
it "should raise NotFound" do
|
|
760
|
+
@response.status.should equal(404)
|
|
761
|
+
end
|
|
762
|
+
end
|
|
763
|
+
end
|