merb-admin 0.4.8 → 0.4.9

Sign up to get free protection for your applications and to get access to all the features.
data/README.markdown CHANGED
@@ -16,11 +16,11 @@ At the command prompt, type:
16
16
 
17
17
  In your app, add the following dependency to `config/dependencies.rb`:
18
18
 
19
- dependency "merb-admin", "0.4.8"
19
+ dependency "merb-admin", "0.4.9"
20
20
 
21
21
  Add the following route to `config/router.rb`:
22
22
 
23
- add_slice(:merb_admin, :name_prefix => nil, :path_prefix => "admin", :default_routes => false)
23
+ add_slice(:merb_admin, :path_prefix => "admin")
24
24
 
25
25
  Then, run the following rake task:
26
26
 
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ AUTHOR = "Erik Michaels-Ober"
9
9
  EMAIL = "sferik@gmail.com"
10
10
  HOMEPAGE = "http://twitter.com/sferik"
11
11
  SUMMARY = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
12
- GEM_VERSION = "0.4.8"
12
+ GEM_VERSION = "0.4.9"
13
13
 
14
14
  spec = Gem::Specification.new do |s|
15
15
  s.rubyforge_project = "merb"
@@ -60,11 +60,11 @@ class MerbAdmin::Main < MerbAdmin::Application
60
60
  @object = @abstract_model.new(object)
61
61
  if @object.save && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)}
62
62
  if params[:_continue]
63
- redirect(url(:admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
63
+ redirect(url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
64
64
  elsif params[:_add_another]
65
- redirect(url(:admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
65
+ redirect(url(:merb_admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
66
66
  else
67
- redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
67
+ redirect(url(:merb_admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully created"})
68
68
  end
69
69
  else
70
70
  message[:error] = "#{@abstract_model.pretty_name} failed to be created"
@@ -82,11 +82,11 @@ class MerbAdmin::Main < MerbAdmin::Application
82
82
  has_many_associations = @abstract_model.has_many_associations.map{|association| [association, (params[:associations] || {}).delete(association[:name])]}
83
83
  if @object.update_attributes(object) && has_one_associations.each{|association, id| update_has_one_association(association, id)} && has_many_associations.each{|association, ids| update_has_many_association(association, ids)}
84
84
  if params[:_continue]
85
- redirect(url(:admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
85
+ redirect(url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
86
86
  elsif params[:_add_another]
87
- redirect(url(:admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
87
+ redirect(url(:merb_admin_new, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
88
88
  else
89
- redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
89
+ redirect(url(:merb_admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully updated"})
90
90
  end
91
91
  else
92
92
  message[:error] = "#{@abstract_model.pretty_name} failed to be updated"
@@ -100,7 +100,7 @@ class MerbAdmin::Main < MerbAdmin::Application
100
100
 
101
101
  def destroy
102
102
  if @object.destroy
103
- redirect(url(:admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully destroyed"})
103
+ redirect(url(:merb_admin_list, :model_name => @abstract_model.singular_name), :message => {:notice => "#{@abstract_model.pretty_name} was successfully destroyed"})
104
104
  else
105
105
  raise BadRequest
106
106
  end
@@ -31,8 +31,8 @@
31
31
  </div>
32
32
  </div>
33
33
  <div class="breadcrumbs">
34
- <%= link_to("Home", url(:admin_dashboard)) %> &rsaquo;
35
- <%= link_to(@abstract_model.plural_name.to_s.capitalize, url(:admin_list, :model_name => @abstract_model.singular_name)) %> &rsaquo;
34
+ <%= link_to("Home", url(:merb_admin_dashboard)) %> &rsaquo;
35
+ <%= link_to(@abstract_model.plural_name.to_s.capitalize, url(:merb_admin_list, :model_name => @abstract_model.singular_name)) %> &rsaquo;
36
36
  <%= page_name %>
37
37
  </div>
38
38
  <%= partial('layout/message', :message => message) unless message.blank? -%>
@@ -26,7 +26,7 @@
26
26
  </div>
27
27
  </div>
28
28
  <div class="breadcrumbs">
29
- <%= link_to("Home", url(:admin_dashboard)) %> &rsaquo;
29
+ <%= link_to("Home", url(:merb_admin_dashboard)) %> &rsaquo;
30
30
  <%= @abstract_model.plural_name.to_s.capitalize %>
31
31
  </div>
32
32
  <%= partial('layout/message', :message => message) unless message.blank? -%>
@@ -1,10 +1,10 @@
1
1
  <p>Are you sure you want to delete the <%= @abstract_model.pretty_name.downcase %>? All of the following related items will be deleted:</p>
2
2
  <ul>
3
3
  <li>
4
- <%= link_to(@model_name, url(:admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id))%>
4
+ <%= link_to(@model_name, url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => @object.id))%>
5
5
  </li>
6
6
  </ul>
7
- <%= form_for(@object, :action => url(:admin_destroy, :model_name => @abstract_model.singular_name, :id => @object.id), :method => :delete) do %>
7
+ <%= form_for(@object, :action => url(:merb_admin_destroy, :model_name => @abstract_model.singular_name, :id => @object.id), :method => :delete) do %>
8
8
  <div>
9
9
  <%= submit "Yes, I'm sure" %>
10
10
  </div>
@@ -1,20 +1,14 @@
1
1
  <div id="content-main">
2
- <%= form_for(@object, :action => url(:admin_update, :model_name => @abstract_model.singular_name, :id => @object.id)) do %>
2
+ <%= form_for(@object, :action => url(:merb_admin_update, :model_name => @abstract_model.singular_name, :id => @object.id)) do %>
3
3
  <div>
4
4
  <%= partial('properties', :properties => @properties) -%>
5
- <% @abstract_model.belongs_to_associations.each do |association| %>
6
- <%= partial('belongs_to', :association => association) -%>
7
- <% end %>
8
- <% @abstract_model.has_one_associations.each do |association| %>
9
- <%= partial('has_one', :association => association) -%>
10
- <% end %>
11
- <% @abstract_model.has_many_associations.each do |association| %>
12
- <%= partial('has_many', :association => association) -%>
13
- <% end %>
5
+ <%= partial('belongs_to', :with => @abstract_model.belongs_to_associations, :as => :association) -%>
6
+ <%= partial('has_one', :with => @abstract_model.has_one_associations, :as => :association) -%>
7
+ <%= partial('has_many', :with => @abstract_model.has_many_associations, :as => :association) -%>
14
8
  <div class="submit-row" >
15
9
  <%= submit "Save", :class => "default", :name => "_save" %>
16
10
  <p class="deletelink-box">
17
- <%= link_to("Delete", url(:admin_delete, :model_name => @abstract_model.singular_name, :id => @object.id), :class => "deletelink") %>
11
+ <%= link_to("Delete", url(:merb_admin_delete, :model_name => @abstract_model.singular_name, :id => @object.id), :class => "deletelink") %>
18
12
  </p>
19
13
  <%= submit "Save and add another", :name => "_add_another" %>
20
14
  <%= submit "Save and continue editing", :name => "_continue" %>
@@ -2,18 +2,18 @@
2
2
  <div class="module">
3
3
  <table summary="Models available in the application.">
4
4
  <caption>
5
- <%= link_to("Models", url(:admin_dashboard), :class => "section") %>
5
+ <%= link_to("Models", url(:merb_admin_dashboard), :class => "section") %>
6
6
  </caption>
7
7
  <% @abstract_models.each do |abstract_model| %>
8
8
  <tr>
9
9
  <th scope="row">
10
- <%= link_to(abstract_model.plural_name.to_s.capitalize, url(:admin_list, :model_name => abstract_model.singular_name)) %>
10
+ <%= link_to(abstract_model.plural_name.to_s.capitalize, url(:merb_admin_list, :model_name => abstract_model.singular_name)) %>
11
11
  </th>
12
12
  <td>
13
- <%= link_to("Add", url(:admin_new, :model_name => abstract_model.singular_name), :class => "addlink") %>
13
+ <%= link_to("Add", url(:merb_admin_new, :model_name => abstract_model.singular_name), :class => "addlink") %>
14
14
  </td>
15
15
  <td>
16
- <%= link_to("Edit", url(:admin_list, :model_name => abstract_model.singular_name), :class => "changelink") %>
16
+ <%= link_to("Edit", url(:merb_admin_list, :model_name => abstract_model.singular_name), :class => "changelink") %>
17
17
  </td>
18
18
  </tr>
19
19
  <% end %>
@@ -8,7 +8,7 @@
8
8
  <div id="content-main">
9
9
  <ul class="object-tools">
10
10
  <li>
11
- <%= link_to("Add #{@abstract_model.pretty_name.downcase}", url(:admin_new, :model_name => @abstract_model.singular_name), :class => "addlink") %>
11
+ <%= link_to("Add #{@abstract_model.pretty_name.downcase}", url(:merb_admin_new, :model_name => @abstract_model.singular_name), :class => "addlink") %>
12
12
  </li>
13
13
  </ul>
14
14
  <div class="module filtered" id="changelist">
@@ -19,7 +19,7 @@
19
19
  <input type="text" size="40" name="query" value="<%= query %>" id="searchbar" />
20
20
  <input type="submit" value="Search" />
21
21
  <% if query || filter %>
22
- <span class="small quiet"><%= @record_count %> <%= @record_count == 1 ? "result" : "results" %> (<a href="?"><%= @abstract_model.count %> total</a>)</span>
22
+ <span class="small quiet"><%= @record_count %> <%= @record_count == 1 ? "result" : "results" %> (<%= link_to("#{@abstract_model.count} total", "?") %>)</span>
23
23
  <% end %>
24
24
  <% if filter %>
25
25
  <% filter.each do |name, value| %>
@@ -40,13 +40,13 @@
40
40
  <h3>By <%= property_pretty_name %></h3>
41
41
  <ul>
42
42
  <li class="<%= filter.nil? || filter[property_name].blank? ? "selected" : nil %>">
43
- <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).reject{|key, value| key.to_sym == property_name})) %>">All</a>
43
+ <%= link_to("All", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).reject{|key, value| key.to_sym == property_name}))) %>
44
44
  </li>
45
45
  <li class="<%= filter && filter[property_name] == "true" ? "selected" : nil %>">
46
- <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "true"}))) %>">Yes</a>
46
+ <%= link_to("Yes", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "true"})))) %>
47
47
  </li>
48
48
  <li class="<%= filter && filter[property_name] == "false" ? "selected" : nil %>">
49
- <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "false"}))) %>">No</a>
49
+ <%= link_to("No", "?" + Merb::Parse.params_to_query_string(params.merge(:filter => (filter || {}).merge({property_name => "false"})))) %>
50
50
  </li>
51
51
  </ul>
52
52
  <% end %>
@@ -59,19 +59,17 @@
59
59
  <% property_name = property[:name] %>
60
60
  <% property_pretty_name = property[:pretty_name] %>
61
61
  <th class="<%= sort == property_name.to_s ? sort_reverse ? 'sorted descending' : 'sorted ascending' : nil %>">
62
- <a href="?<%= Merb::Parse.params_to_query_string(params.merge(:sort => property_name).reject{|key, value| key.to_sym == :sort_reverse}.merge(sort == property_name.to_s && sort_reverse != "true" ? {:sort_reverse => "true"} : {})) %>"><%= property_pretty_name %></a>
62
+ <%= link_to(property_pretty_name, "?" + Merb::Parse.params_to_query_string(params.merge(:sort => property_name).reject{|key, value| key.to_sym == :sort_reverse}.merge(sort == property_name.to_s && sort_reverse != "true" ? {:sort_reverse => "true"} : {}))) %>
63
63
  </th>
64
64
  <% end %>
65
65
  </tr>
66
66
  </thead>
67
67
  <tbody>
68
68
  <% @objects.each_with_index do |object, index| %>
69
- <tr class="row<%= index % 2 == 0 ? '1' : '2' %>">
69
+ <tr class="row<%= index % 2 == 0 ? "1" : "2" %>">
70
70
  <% @properties.each do |property| %>
71
71
  <td>
72
- <a href="<%= url(:admin_edit, :model_name => @abstract_model.singular_name, :id => object.id) %>">
73
- <%= object_property(object, property) %>
74
- </a>
72
+ <%= link_to(object_property(object, property), url(:merb_admin_edit, :model_name => @abstract_model.singular_name, :id => object.id)) %>
75
73
  </td>
76
74
  <% end %>
77
75
  </tr>
@@ -80,11 +78,11 @@
80
78
  </table>
81
79
  <p class="paginator">
82
80
  <% if @page_count.to_i > 1 %>
83
- <%= paginate(@current_page, @page_count, :url => '?' + Merb::Parse.params_to_query_string(params)) %>
81
+ <%= paginate(@current_page, @page_count, :url => "?" + Merb::Parse.params_to_query_string(params)) %>
84
82
  <% end %>
85
83
  <%= @record_count %> <%= @record_count == 1 ? @abstract_model.pretty_name.downcase : @abstract_model.pretty_name.downcase.pluralize %>
86
84
  <% if @page_count.to_i == 2 %>
87
- <%= link_to("Show all", '?' + Merb::Parse.params_to_query_string(params.merge(:all => true)), :class => "showall") %>
85
+ <%= link_to("Show all", "?" + Merb::Parse.params_to_query_string(params.merge(:all => true)), :class => "showall") %>
88
86
  <% end %>
89
87
  </p>
90
88
  </div>
@@ -1,16 +1,10 @@
1
1
  <div id="content-main">
2
- <%= form_for(@object, :action => url(:admin_create, :model_name => @abstract_model.singular_name)) do %>
2
+ <%= form_for(@object, :action => url(:merb_admin_create, :model_name => @abstract_model.singular_name)) do %>
3
3
  <div>
4
4
  <%= partial('properties', :properties => @properties) -%>
5
- <% @abstract_model.belongs_to_associations.each do |association| %>
6
- <%= partial('belongs_to', :association => association) -%>
7
- <% end %>
8
- <% @abstract_model.has_one_associations.each do |association| %>
9
- <%= partial('has_one', :association => association) -%>
10
- <% end %>
11
- <% @abstract_model.has_many_associations.each do |association| %>
12
- <%= partial('has_many', :association => association) -%>
13
- <% end %>
5
+ <%= partial('belongs_to', :with => @abstract_model.belongs_to_associations, :as => :association) -%>
6
+ <%= partial('has_one', :with => @abstract_model.has_one_associations, :as => :association) -%>
7
+ <%= partial('has_many', :with => @abstract_model.has_many_associations, :as => :association) -%>
14
8
  <div class="submit-row" >
15
9
  <%= submit "Save", :class => "default", :name => "_save" %>
16
10
  <%= submit "Save and add another", :name => "_add_another" %>
data/lib/merb-admin.rb CHANGED
@@ -23,7 +23,7 @@ if defined?(Merb::Plugins)
23
23
 
24
24
  # Slice metadata
25
25
  self.description = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
26
- self.version = "0.4.8"
26
+ self.version = "0.4.9"
27
27
  self.author = "Erik Michaels-Ober"
28
28
 
29
29
  # Stub classes loaded hook - runs before LoadClasses BootLoader
@@ -46,35 +46,35 @@ if defined?(Merb::Plugins)
46
46
  def self.setup_router(scope)
47
47
  scope.match("/", :method => :get).
48
48
  to(:controller => "main", :action => "index").
49
- name(:admin_dashboard)
49
+ name(:dashboard)
50
50
 
51
51
  scope.match("/:model_name", :method => :get).
52
52
  to(:controller => "main", :action => "list").
53
- name(:admin_list)
53
+ name(:list)
54
54
 
55
55
  scope.match("/:model_name/new", :method => :get).
56
56
  to(:controller => "main", :action => "new").
57
- name(:admin_new)
57
+ name(:new)
58
58
 
59
59
  scope.match("/:model_name/:id/edit", :method => :get).
60
60
  to(:controller => "main", :action => "edit").
61
- name(:admin_edit)
61
+ name(:edit)
62
62
 
63
63
  scope.match("/:model_name", :method => :post).
64
64
  to(:controller => "main", :action => "create").
65
- name(:admin_create)
65
+ name(:create)
66
66
 
67
67
  scope.match("/:model_name/:id", :method => :put).
68
68
  to(:controller => "main", :action => "update").
69
- name(:admin_update)
69
+ name(:update)
70
70
 
71
71
  scope.match("/:model_name/:id/delete", :method => :get).
72
72
  to(:controller => "main", :action => "delete").
73
- name(:admin_delete)
73
+ name(:delete)
74
74
 
75
75
  scope.match("/:model_name/:id(.:format)", :method => :delete).
76
76
  to(:controller => "main", :action => "destroy").
77
- name(:admin_destroy)
77
+ name(:destroy)
78
78
  end
79
79
 
80
80
  end
@@ -6,15 +6,12 @@ class CreatePlayersMigration < ActiveRecord::Migration
6
6
  t.integer :team_id
7
7
  t.string :name, :limit => 100, :null => false
8
8
  t.string :position, :limit => 50
9
- t.integer :number
10
- t.float :batting_average, :default => 0.0
9
+ t.integer :number, :null => false
11
10
  t.boolean :retired, :default => false
12
11
  t.boolean :injured, :default => false
13
12
  t.date :born_on
14
- t.timestamp :wake_at
15
13
  t.text :notes
16
14
  end
17
- add_index :players, :team_id
18
15
  end
19
16
 
20
17
  def self.down
@@ -5,10 +5,19 @@ class CreateTeamsMigration < ActiveRecord::Migration
5
5
  t.integer :league_id
6
6
  t.integer :division_id
7
7
  t.string :name, :limit => 50, :null => false
8
+ t.string :logo_image_url, :limit => 255
9
+ t.string :manager, :limit => 100, :null => false
10
+ t.string :ballpark, :limit => 100
11
+ t.string :mascot, :limit => 100
12
+ t.integer :founded
13
+ t.integer :wins
14
+ t.integer :losses
15
+ t.float :win_percentage
8
16
  end
9
17
  add_index :teams, :division_id
10
18
  add_index :teams, :league_id
11
19
  add_index :teams, :name
20
+ add_index :teams, :manager
12
21
  end
13
22
 
14
23
  def self.down
@@ -1,6 +1,5 @@
1
1
  class Division < ActiveRecord::Base
2
- validates_presence_of :league_id
3
- validates_numericality_of :league_id
2
+ validates_numericality_of :league_id, :only_integer => true
4
3
  validates_presence_of :name
5
4
 
6
5
  belongs_to :league
@@ -1,15 +1,10 @@
1
1
  class Draft < ActiveRecord::Base
2
- validates_presence_of :player_id
3
- validates_numericality_of :player_id
4
- validates_presence_of :team_id
5
- validates_numericality_of :team_id
2
+ validates_numericality_of :player_id, :only_integer => true
3
+ validates_numericality_of :team_id, :only_integer => true
6
4
  validates_presence_of :date
7
- validates_presence_of :round
8
- validates_numericality_of :round
9
- validates_presence_of :pick
10
- validates_numericality_of :pick
11
- validates_presence_of :overall
12
- validates_numericality_of :overall
5
+ validates_numericality_of :round, :only_integer => true
6
+ validates_numericality_of :pick, :only_integer => true
7
+ validates_numericality_of :overall, :only_integer => true
13
8
 
14
9
  belongs_to :team
15
10
  belongs_to :player
@@ -1,9 +1,7 @@
1
1
  class Player < ActiveRecord::Base
2
- validates_presence_of :team_id
3
- validates_numericality_of :team_id
4
2
  validates_presence_of :name
5
- validates_presence_of :number
6
- validates_numericality_of :number
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"
7
5
 
8
6
  belongs_to :team
9
7
  has_one :draft
@@ -1,9 +1,12 @@
1
1
  class Team < ActiveRecord::Base
2
- validates_presence_of :league_id
3
- validates_numericality_of :league_id
4
- validates_presence_of :division_id
5
- validates_numericality_of :division_id
2
+ validates_numericality_of :league_id, :only_integer => true
3
+ validates_numericality_of :division_id, :only_integer => true
6
4
  validates_presence_of :name
5
+ validates_presence_of :manager
6
+ validates_numericality_of :founded, :only_integer => true
7
+ validates_numericality_of :wins, :only_integer => true
8
+ validates_numericality_of :losses, :only_integer => true
9
+ validates_numericality_of :win_percentage
7
10
 
8
11
  belongs_to :league
9
12
  belongs_to :division
@@ -5,17 +5,17 @@ class Player
5
5
  property :created_at, DateTime
6
6
  property :updated_at, DateTime
7
7
  property :deleted_at, ParanoidDateTime
8
- property :team_id, Integer, :nullable => false, :index => true
9
- property :name, String, :length => 100, :nullable => false
8
+ property :team_id, Integer
9
+ property :name, String, :length => 100, :nullable => false, :index => true
10
10
  property :position, String
11
11
  property :number, Integer, :nullable => false
12
- property :batting_average, Float, :default => 0.0, :precision => 4, :scale => 3
13
12
  property :retired, Boolean, :default => false
14
13
  property :injured, Boolean, :default => false
15
14
  property :born_on, Date
16
- property :wake_at, Time
17
15
  property :notes, Text
18
16
 
17
+ validates_is_unique :number, :scope => :team_id, :message => "There is already a player with that number on this team"
18
+
19
19
  belongs_to :team
20
20
  has 1, :draft
21
21
  end
@@ -7,6 +7,14 @@ class Team
7
7
  property :league_id, Integer, :nullable => false, :index => true
8
8
  property :division_id, Integer, :nullable => false, :index => true
9
9
  property :name, String, :nullable => false, :index => true
10
+ property :logo_image_url, String, :length => 255
11
+ property :manager, String, :length => 100, :nullable => false, :index => true
12
+ property :ballpark, String, :length => 100
13
+ property :mascot, String, :length => 100
14
+ property :founded, Integer, :nullable => false
15
+ property :wins, Integer, :nullable => false
16
+ property :losses, Integer, :nullable => false
17
+ property :win_percentage, Float, :nullable => false, :precision => 4, :scale => 3
10
18
 
11
19
  belongs_to :league
12
20
  belongs_to :division
@@ -1,7 +1,7 @@
1
1
  require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')
2
2
 
3
3
  given "a player exists" do
4
- @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => rand(99), :name => "Player 1")
4
+ @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
5
5
  end
6
6
 
7
7
  given "a draft exists" do
@@ -11,27 +11,27 @@ end
11
11
  given "two players exist" do
12
12
  @players = []
13
13
  2.times do |i|
14
- @players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => rand(99), :name => "Player #{i}")
14
+ @players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => i + 1, :name => "Player #{i + 1}")
15
15
  end
16
16
  end
17
17
 
18
18
  given "three teams exist" do
19
19
  @teams = []
20
20
  3.times do |i|
21
- @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i}")
21
+ @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
22
22
  end
23
23
  end
24
24
 
25
25
  given "a player exists and a draft exists" do
26
- @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => rand(99), :name => "Player 1")
26
+ @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
27
27
  @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))
28
28
  end
29
29
 
30
30
  given "a player exists and three teams exist" do
31
- @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => rand(99), :name => "Player 1")
31
+ @player = MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 1, :name => "Player 1")
32
32
  @teams = []
33
33
  3.times do |i|
34
- @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i}")
34
+ @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
35
35
  end
36
36
  end
37
37
 
@@ -39,19 +39,18 @@ given "a league exists and three teams exist" do
39
39
  @league = League.create(:name => "League 1")
40
40
  @teams = []
41
41
  3.times do |i|
42
- @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i}")
42
+ @teams << MerbAdmin::AbstractModel.new("Team").create(:league_id => rand(99999), :division_id => rand(99999), :name => "Team #{i + 1}", :manager => "Manager #{i + 1}", :founded => 1869 + rand(130), :wins => (wins = rand(163)), :losses => 162 - wins, :win_percentage => "%.3f" % (wins.to_f / 162))
43
43
  end
44
44
  end
45
45
 
46
46
  given "twenty players exist" do
47
47
  @players = []
48
48
  20.times do |i|
49
- @players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => rand(99), :name => "Player #{i}")
49
+ @players << MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => i + 1, :name => "Player #{i + 1}")
50
50
  end
51
51
  end
52
52
 
53
53
  describe "MerbAdmin" do
54
-
55
54
  before(:each) do
56
55
  mount_slice
57
56
  MerbAdmin::AbstractModel.new("Division").destroy_all!
@@ -63,7 +62,7 @@ describe "MerbAdmin" do
63
62
 
64
63
  describe "dashboard" do
65
64
  before(:each) do
66
- @response = request(url(:admin_dashboard))
65
+ @response = request(url(:merb_admin_dashboard))
67
66
  end
68
67
 
69
68
  it "should respond sucessfully" do
@@ -77,7 +76,7 @@ describe "MerbAdmin" do
77
76
 
78
77
  describe "list" do
79
78
  before(:each) do
80
- @response = request(url(:admin_list, :model_name => "player"))
79
+ @response = request(url(:merb_admin_list, :model_name => "player"))
81
80
  end
82
81
 
83
82
  it "should respond sucessfully" do
@@ -87,13 +86,21 @@ describe "MerbAdmin" do
87
86
  it "should show \"Select model to edit\"" do
88
87
  @response.body.should contain("Select player to edit")
89
88
  end
89
+
90
+ it "should show filters" do
91
+ @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/)
92
+ end
93
+
94
+ it "should show column headers" do
95
+ @response.body.should contain(/Id\n\s*Created at\n\s*Updated at\n\s*Deleted 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/)
96
+ end
90
97
  end
91
98
 
92
99
  describe "list with sort" do
93
100
  before(:each) do
94
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "pitcher")
95
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "second")
96
- @response = request(url(:admin_list, :model_name => "player"), :params => {:sort => "name"})
101
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
102
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
103
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:sort => "name"})
97
104
  end
98
105
 
99
106
  it "should respond sucessfully" do
@@ -107,9 +114,9 @@ describe "MerbAdmin" do
107
114
 
108
115
  describe "list with reverse sort" do
109
116
  before(:each) do
110
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "pitcher")
111
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "second")
112
- @response = request(url(:admin_list, :model_name => "player"), :params => {:sort => "name", :sort_reverse => "true"})
117
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
118
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
119
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:sort => "name", :sort_reverse => "true"})
113
120
  end
114
121
 
115
122
  it "should respond sucessfully" do
@@ -123,9 +130,9 @@ describe "MerbAdmin" do
123
130
 
124
131
  describe "list with query" do
125
132
  before(:each) do
126
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "pitcher")
127
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "second")
128
- @response = request(url(:admin_list, :model_name => "player"), :params => {:query => "Jackie Robinson"})
133
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
134
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
135
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:query => "Jackie Robinson"})
129
136
  end
130
137
 
131
138
  it "should respond sucessfully" do
@@ -143,11 +150,11 @@ describe "MerbAdmin" do
143
150
 
144
151
  describe "list with query and boolean filter" do
145
152
  before(:each) do
146
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "pitcher", :retired => true, :injured => true)
147
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "second", :retired => true, :injured => false)
148
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "left", :retired => false, :injured => true)
149
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "third", :retired => false, :injured => false)
150
- @response = request(url(:admin_list, :model_name => "player"), :params => {:query => "Sandy Koufax", :filter => {:injured => "true"}})
153
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
154
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
155
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
156
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
157
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:query => "Sandy Koufax", :filter => {:injured => "true"}})
151
158
  end
152
159
 
153
160
  it "should respond sucessfully" do
@@ -168,9 +175,9 @@ describe "MerbAdmin" do
168
175
 
169
176
  describe "list with boolean filter" do
170
177
  before(:each) do
171
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "left", :injured => true)
172
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "third", :injured => false)
173
- @response = request(url(:admin_list, :model_name => "player"), :params => {:filter => {:injured => "true"}})
178
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :injured => true)
179
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :injured => false)
180
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:filter => {:injured => "true"}})
174
181
  end
175
182
 
176
183
  it "should respond sucessfully" do
@@ -188,11 +195,11 @@ describe "MerbAdmin" do
188
195
 
189
196
  describe "list with boolean filters" do
190
197
  before(:each) do
191
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "pitcher", :retired => true, :injured => true)
192
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "second", :retired => true, :injured => false)
193
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "left", :retired => false, :injured => true)
194
- MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "third", :retired => false, :injured => false)
195
- @response = request(url(:admin_list, :model_name => "player"), :params => {:filter => {:retired => "true", :injured => "true"}})
198
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher", :retired => true, :injured => true)
199
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
200
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
201
+ MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
202
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:filter => {:retired => "true", :injured => "true"}})
196
203
  end
197
204
 
198
205
  it "should respond sucessfully" do
@@ -213,7 +220,7 @@ describe "MerbAdmin" do
213
220
  before(:each) do
214
221
  MerbAdmin[:paginate] = true
215
222
  MerbAdmin[:per_page] = 1
216
- @response = request(url(:admin_list, :model_name => "player"))
223
+ @response = request(url(:merb_admin_list, :model_name => "player"))
217
224
  end
218
225
 
219
226
  it "should respond sucessfully" do
@@ -229,7 +236,7 @@ describe "MerbAdmin" do
229
236
  before(:each) do
230
237
  MerbAdmin[:paginate] = true
231
238
  MerbAdmin[:per_page] = 1
232
- @response = request(url(:admin_list, :model_name => "player"))
239
+ @response = request(url(:merb_admin_list, :model_name => "player"))
233
240
  end
234
241
 
235
242
  it "should respond sucessfully" do
@@ -245,7 +252,7 @@ describe "MerbAdmin" do
245
252
  before(:each) do
246
253
  MerbAdmin[:paginate] = true
247
254
  MerbAdmin[:per_page] = 1
248
- @response = request(url(:admin_list, :model_name => "player"), :params => {:page => 8})
255
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 8})
249
256
  end
250
257
 
251
258
  it "should respond sucessfully" do
@@ -261,7 +268,7 @@ describe "MerbAdmin" do
261
268
  before(:each) do
262
269
  MerbAdmin[:paginate] = true
263
270
  MerbAdmin[:per_page] = 1
264
- @response = request(url(:admin_list, :model_name => "player"), :params => {:page => 17})
271
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 17})
265
272
  end
266
273
 
267
274
  it "should respond sucessfully" do
@@ -277,7 +284,7 @@ describe "MerbAdmin" do
277
284
  before(:each) do
278
285
  MerbAdmin[:paginate] = true
279
286
  MerbAdmin[:per_page] = 1
280
- @response = request(url(:admin_list, :model_name => "player"), :params => {:all => true})
287
+ @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:all => true})
281
288
  end
282
289
 
283
290
  it "should respond sucessfully" do
@@ -287,7 +294,7 @@ describe "MerbAdmin" do
287
294
 
288
295
  describe "new" do
289
296
  before(:each) do
290
- @response = request(url(:admin_new, :model_name => "player"))
297
+ @response = request(url(:merb_admin_new, :model_name => "player"))
291
298
  end
292
299
 
293
300
  it "should respond sucessfully" do
@@ -297,11 +304,24 @@ describe "MerbAdmin" do
297
304
  it "should show \"New model\"" do
298
305
  @response.body.should contain("New player")
299
306
  end
307
+
308
+ it "should show required fields as \"Required\"" do
309
+ @response.body.should contain(/Name\n\s*Required/)
310
+ @response.body.should contain(/Number\n\s*Required/)
311
+ end
312
+
313
+ it "should show non-required fields as \"Optional\"" do
314
+ @response.body.should contain(/Position\n\s*Optional/)
315
+ @response.body.should contain(/Born on\n\s*Optional/)
316
+ @response.body.should contain(/Notes\n\s*Optional/)
317
+ @response.body.should contain(/Draft\n\s*Optional/)
318
+ @response.body.should contain(/Team\n\s*Optional/)
319
+ end
300
320
  end
301
321
 
302
322
  describe "new with has-one association", :given => "a draft exists" do
303
323
  before(:each) do
304
- @response = request(url(:admin_new, :model_name => "player"))
324
+ @response = request(url(:merb_admin_new, :model_name => "player"))
305
325
  end
306
326
 
307
327
  it "should respond sucessfully" do
@@ -311,7 +331,7 @@ describe "MerbAdmin" do
311
331
 
312
332
  describe "new with has-many association", :given => "three teams exist" do
313
333
  before(:each) do
314
- @response = request(url(:admin_new, :model_name => "player"))
334
+ @response = request(url(:merb_admin_new, :model_name => "player"))
315
335
  end
316
336
 
317
337
  it "should respond sucessfully" do
@@ -321,7 +341,7 @@ describe "MerbAdmin" do
321
341
 
322
342
  describe "edit", :given => "a player exists" do
323
343
  before(:each) do
324
- @response = request(url(:admin_edit, :model_name => "player", :id => @player.id))
344
+ @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
325
345
  end
326
346
 
327
347
  it "should respond sucessfully" do
@@ -335,22 +355,20 @@ describe "MerbAdmin" do
335
355
  it "should show required fields as \"Required\"" do
336
356
  @response.body.should contain(/Name\n\s*Required/)
337
357
  @response.body.should contain(/Number\n\s*Required/)
338
- @response.body.should contain(/Team\n\s*Required/)
339
358
  end
340
359
 
341
360
  it "should show non-required fields as \"Optional\"" do
342
361
  @response.body.should contain(/Position\n\s*Optional/)
343
- @response.body.should contain(/Batting average\n\s*Optional/)
344
362
  @response.body.should contain(/Born on\n\s*Optional/)
345
- @response.body.should contain(/Wake at\n\s*Optional/)
346
363
  @response.body.should contain(/Notes\n\s*Optional/)
347
364
  @response.body.should contain(/Draft\n\s*Optional/)
365
+ @response.body.should contain(/Team\n\s*Optional/)
348
366
  end
349
367
  end
350
368
 
351
369
  describe "edit with has-one association", :given => "a player exists and a draft exists" do
352
370
  before(:each) do
353
- @response = request(url(:admin_edit, :model_name => "player", :id => @player.id))
371
+ @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
354
372
  end
355
373
 
356
374
  it "should respond sucessfully" do
@@ -360,7 +378,7 @@ describe "MerbAdmin" do
360
378
 
361
379
  describe "edit with has-many association", :given => "a player exists and three teams exist" do
362
380
  before(:each) do
363
- @response = request(url(:admin_edit, :model_name => "player", :id => @player.id))
381
+ @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
364
382
  end
365
383
 
366
384
  it "should respond sucessfully" do
@@ -371,7 +389,7 @@ describe "MerbAdmin" do
371
389
 
372
390
  describe "edit with missing object" do
373
391
  before(:each) do
374
- @response = request(url(:admin_edit, :model_name => "player", :id => 1))
392
+ @response = request(url(:merb_admin_edit, :model_name => "player", :id => 1))
375
393
  end
376
394
 
377
395
  it "should raise NotFound" do
@@ -381,11 +399,11 @@ describe "MerbAdmin" do
381
399
 
382
400
  describe "create" do
383
401
  before(:each) do
384
- @response = request(url(:admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "second"}})
402
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}})
385
403
  end
386
404
 
387
405
  it "should redirect to list" do
388
- @response.should redirect_to(url(:admin_list, :model_name => "player"))
406
+ @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
389
407
  end
390
408
 
391
409
  it "should create a new object" do
@@ -395,11 +413,11 @@ describe "MerbAdmin" do
395
413
 
396
414
  describe "create and edit" do
397
415
  before(:each) do
398
- @response = request(url(:admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "second"}, :_continue => true})
416
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :_continue => true})
399
417
  end
400
418
 
401
419
  it "should redirect to edit" do
402
- @response.should redirect_to(url(:admin_edit, :model_name => "player", :id => MerbAdmin::AbstractModel.new("Player").first.id))
420
+ @response.should redirect_to(url(:merb_admin_edit, :model_name => "player", :id => MerbAdmin::AbstractModel.new("Player").first.id))
403
421
  end
404
422
 
405
423
  it "should create a new object" do
@@ -409,11 +427,11 @@ describe "MerbAdmin" do
409
427
 
410
428
  describe "create and add another" do
411
429
  before(:each) do
412
- @response = request(url(:admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "second"}, :_add_another => true})
430
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :_add_another => true})
413
431
  end
414
432
 
415
433
  it "should redirect to new" do
416
- @response.should redirect_to(url(:admin_new, :model_name => "player"))
434
+ @response.should redirect_to(url(:merb_admin_new, :model_name => "player"))
417
435
  end
418
436
 
419
437
  it "should create a new object" do
@@ -423,7 +441,7 @@ describe "MerbAdmin" do
423
441
 
424
442
  describe "create with has-one association", :given => "a draft exists" do
425
443
  before(:each) do
426
- @response = request(url(:admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "second"}, :associations => {:draft => @draft.id}})
444
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :associations => {:draft => @draft.id}})
427
445
  end
428
446
 
429
447
  it "should create a new object" do
@@ -437,7 +455,7 @@ describe "MerbAdmin" do
437
455
 
438
456
  describe "create with has-many association", :given => "three teams exist" do
439
457
  before(:each) do
440
- @response = request(url(:admin_create, :model_name => "league"), :method => "post", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[0].id, @teams[1].id]}})
458
+ @response = request(url(:merb_admin_create, :model_name => "league"), :method => "post", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[0].id, @teams[1].id]}})
441
459
  end
442
460
 
443
461
  it "should create a new object" do
@@ -454,9 +472,19 @@ describe "MerbAdmin" do
454
472
  end
455
473
  end
456
474
 
475
+ describe "create with uniqueness constraint violated", :given => "a player exists" do
476
+ before(:each) do
477
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => @player.name, :number => @player.number, :team_id => @player.team_id, :position => @player.position}})
478
+ end
479
+
480
+ it "should show an error message" do
481
+ @response.body.should contain("There is already a player with that number on this team")
482
+ end
483
+ end
484
+
457
485
  describe "create with invalid object" do
458
486
  before(:each) do
459
- @response = request(url(:admin_create, :model_name => "player"), :method => "post", :params => {:player => {}})
487
+ @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {}})
460
488
  end
461
489
 
462
490
  it "should show an error message" do
@@ -466,11 +494,11 @@ describe "MerbAdmin" do
466
494
 
467
495
  describe "update", :given => "a player exists" do
468
496
  before(:each) do
469
- @response = request(url(:admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
497
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
470
498
  end
471
499
 
472
500
  it "should redirect to list" do
473
- @response.should redirect_to(url(:admin_list, :model_name => "player"))
501
+ @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
474
502
  end
475
503
 
476
504
  it "should update an object that already exists" do
@@ -480,11 +508,11 @@ describe "MerbAdmin" do
480
508
 
481
509
  describe "update and edit", :given => "a player exists" do
482
510
  before(:each) do
483
- @response = request(url(:admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}, :_continue => true})
511
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}, :_continue => true})
484
512
  end
485
513
 
486
514
  it "should redirect to edit" do
487
- @response.should redirect_to(url(:admin_edit, :model_name => "player", :id => @player.id))
515
+ @response.should redirect_to(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
488
516
  end
489
517
 
490
518
  it "should update an object that already exists" do
@@ -494,11 +522,11 @@ describe "MerbAdmin" do
494
522
 
495
523
  describe "update and add another", :given => "a player exists" do
496
524
  before(:each) do
497
- @response = request(url(:admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}, :_add_another => true})
525
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}, :_add_another => true})
498
526
  end
499
527
 
500
528
  it "should redirect to new" do
501
- @response.should redirect_to(url(:admin_new, :model_name => "player"))
529
+ @response.should redirect_to(url(:merb_admin_new, :model_name => "player"))
502
530
  end
503
531
 
504
532
  it "should update an object that already exists" do
@@ -508,7 +536,7 @@ describe "MerbAdmin" do
508
536
 
509
537
  describe "update with has-one association", :given => "a player exists and a draft exists" do
510
538
  before(:each) do
511
- @response = request(url(:admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "second"}, :associations => {:draft => @draft.id}})
539
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}, :associations => {:draft => @draft.id}})
512
540
  end
513
541
 
514
542
  it "should update an object that already exists" do
@@ -522,7 +550,7 @@ describe "MerbAdmin" do
522
550
 
523
551
  describe "update with has-many association", :given => "a league exists and three teams exist" do
524
552
  before(:each) do
525
- @response = request(url(:admin_update, :model_name => "league", :id => @league.id), :method => "put", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[0].id, @teams[1].id]}})
553
+ @response = request(url(:merb_admin_update, :model_name => "league", :id => @league.id), :method => "put", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[0].id, @teams[1].id]}})
526
554
  end
527
555
 
528
556
  it "should update an object that already exists" do
@@ -541,7 +569,7 @@ describe "MerbAdmin" do
541
569
 
542
570
  describe "update with missing object" do
543
571
  before(:each) do
544
- @response = request(url(:admin_update, :model_name => "player", :id => 1), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
572
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => 1), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
545
573
  end
546
574
 
547
575
  it "should raise NotFound" do
@@ -551,7 +579,7 @@ describe "MerbAdmin" do
551
579
 
552
580
  describe "update with invalid object", :given => "a player exists" do
553
581
  before(:each) do
554
- @response = request(url(:admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:number => "a"}})
582
+ @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:number => "a"}})
555
583
  end
556
584
 
557
585
  it "should show an error message" do
@@ -561,7 +589,7 @@ describe "MerbAdmin" do
561
589
 
562
590
  describe "delete", :given => "a player exists" do
563
591
  before(:each) do
564
- @response = request(url(:admin_delete, :model_name => "player", :id => @player.id))
592
+ @response = request(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
565
593
  end
566
594
 
567
595
  it "should respond sucessfully" do
@@ -575,7 +603,7 @@ describe "MerbAdmin" do
575
603
 
576
604
  describe "delete with missing object" do
577
605
  before(:each) do
578
- @response = request(url(:admin_delete, :model_name => "player", :id => 1))
606
+ @response = request(url(:merb_admin_delete, :model_name => "player", :id => 1))
579
607
  end
580
608
 
581
609
  it "should raise NotFound" do
@@ -585,11 +613,11 @@ describe "MerbAdmin" do
585
613
 
586
614
  describe "destroy", :given => "a player exists" do
587
615
  before(:each) do
588
- @response = request(url(:admin_destroy, :model_name => "player", :id => @player.id), :method => "delete")
616
+ @response = request(url(:merb_admin_destroy, :model_name => "player", :id => @player.id), :method => "delete")
589
617
  end
590
618
 
591
619
  it "should redirect to list" do
592
- @response.should redirect_to(url(:admin_list, :model_name => "player"))
620
+ @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
593
621
  end
594
622
 
595
623
  it "should destroy an object" do
@@ -599,12 +627,11 @@ describe "MerbAdmin" do
599
627
 
600
628
  describe "destroy with missing object" do
601
629
  before(:each) do
602
- @response = request(url(:admin_destroy, :model_name => "player", :id => 1), :method => "delete")
630
+ @response = request(url(:merb_admin_destroy, :model_name => "player", :id => 1), :method => "delete")
603
631
  end
604
632
 
605
633
  it "should raise NotFound" do
606
634
  @response.status.should == 404
607
635
  end
608
636
  end
609
-
610
637
  end
data/spec/spec_helper.rb CHANGED
@@ -106,7 +106,7 @@ Merb::Test.add_helpers do
106
106
  def mount_slice
107
107
  if standalone?
108
108
  Merb::Router.reset!
109
- Merb::Router.prepare{add_slice(:merb_admin, :name_prefix => nil, :path_prefix => "admin", :default_routes => false)}
109
+ Merb::Router.prepare{add_slice(:merb_admin, :path_prefix => "admin")}
110
110
  end
111
111
  end
112
112
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merb-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Michaels-Ober
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-29 00:00:00 -07:00
12
+ date: 2009-10-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency