merb-admin 0.6.9 → 0.7.0

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/README.rdoc CHANGED
@@ -11,7 +11,7 @@ http://github.com/sferik/merb-admin/raw/master/screenshots/edit.png
11
11
  == Installation
12
12
  $ gem install merb-admin -s http://gemcutter.org
13
13
  In your app, add the following dependency to <tt>config/dependencies.rb</tt>:
14
- dependency "merb-admin", "0.6.9"
14
+ dependency "merb-admin", "0.7.0"
15
15
  Add the following route to <tt>config/router.rb</tt>:
16
16
  add_slice(:merb_admin, :path_prefix => "admin")
17
17
  Then, run the following rake task:
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.6.9
1
+ 0.7.0
@@ -40,10 +40,6 @@ class MerbAdmin::Main < MerbAdmin::Application
40
40
  render(:layout => 'form')
41
41
  end
42
42
 
43
- def edit
44
- render(:layout => 'form')
45
- end
46
-
47
43
  def create
48
44
  @object = @abstract_model.new(@attributes)
49
45
  if @object.save && update_all_associations
@@ -53,6 +49,10 @@ class MerbAdmin::Main < MerbAdmin::Application
53
49
  end
54
50
  end
55
51
 
52
+ def edit
53
+ render(:layout => 'form')
54
+ end
55
+
56
56
  def update
57
57
  if @object.update_attributes(@attributes) && update_all_associations
58
58
  redirect_on_success
@@ -4,7 +4,7 @@ module MerbAdmin
4
4
  class AbstractModel
5
5
  module ActiverecordSupport
6
6
  def get(id)
7
- model.find(id).extend(InstanceMethods)
7
+ model.find_by_id(id).extend(InstanceMethods)
8
8
  rescue ActiveRecord::RecordNotFound
9
9
  nil
10
10
  end
@@ -91,6 +91,8 @@ def load_data
91
91
  return
92
92
  end
93
93
 
94
+ require_models
95
+
94
96
  puts "Loading current MLB leagues, divisions, teams, and players"
95
97
  MLB::Team.all.each do |mlb_team|
96
98
  unless league = MerbAdmin::AbstractModel.new("League").first(:conditions => ["name = ?", mlb_team.league])
@@ -136,9 +138,8 @@ def copy_migrations(orm = nil)
136
138
  duplicated.each { |f| puts "! duplicated override as #{f}" }
137
139
  end
138
140
 
139
- def require_models(orm = nil)
140
- orm ||= set_orm
141
- Dir.glob(File.dirname(__FILE__) / "models" / orm.to_s.downcase / Merb.glob_for(:model)).each do |model_filename|
141
+ def require_models
142
+ Dir.glob(Merb.dir_for(:model) / Merb.glob_for(:model)).each do |model_filename|
142
143
  require model_filename
143
144
  end
144
145
  end
data/lib/merb-admin.rb CHANGED
@@ -24,7 +24,7 @@ if defined?(Merb::Plugins)
24
24
 
25
25
  # Slice metadata
26
26
  self.description = "MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data."
27
- self.version = "0.6.9"
27
+ self.version = "0.7.0"
28
28
  self.author = "Erik Michaels-Ober"
29
29
 
30
30
  # Stub classes loaded hook - runs before LoadClasses BootLoader
data/merb-admin.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{merb-admin}
8
- s.version = "0.6.9"
8
+ s.version = "0.7.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Erik Michaels-Ober"]
12
- s.date = %q{2009-11-23}
12
+ s.date = %q{2009-11-28}
13
13
  s.description = %q{MerbAdmin is a Merb plugin that provides an easy-to-use interface for managing your data.}
14
14
  s.email = %q{sferik@gmail.com}
15
15
  s.extra_rdoc_files = [
@@ -70,7 +70,7 @@ describe "MerbAdmin" do
70
70
 
71
71
  describe "dashboard" do
72
72
  before(:each) do
73
- @response = request(url(:merb_admin_dashboard))
73
+ @response = visit(url(:merb_admin_dashboard))
74
74
  end
75
75
 
76
76
  it "should respond sucessfully" do
@@ -85,7 +85,7 @@ describe "MerbAdmin" do
85
85
  describe "dashboard with excluded models" do
86
86
  before(:each) do
87
87
  MerbAdmin[:excluded_models] = ["Player"]
88
- @response = request(url(:merb_admin_dashboard))
88
+ @response = visit(url(:merb_admin_dashboard))
89
89
  MerbAdmin[:excluded_models] = []
90
90
  end
91
91
 
@@ -100,7 +100,7 @@ describe "MerbAdmin" do
100
100
 
101
101
  describe "list" do
102
102
  before(:each) do
103
- @response = request(url(:merb_admin_list, :model_name => "player"))
103
+ @response = visit(url(:merb_admin_list, :model_name => "player"))
104
104
  end
105
105
 
106
106
  it "should respond sucessfully" do
@@ -124,7 +124,7 @@ describe "MerbAdmin" do
124
124
  before(:each) do
125
125
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
126
126
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
127
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:sort => "name"})
127
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name")
128
128
  end
129
129
 
130
130
  it "should respond sucessfully" do
@@ -140,7 +140,7 @@ describe "MerbAdmin" do
140
140
  before(:each) do
141
141
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
142
142
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
143
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:sort => "name", :sort_reverse => "true"})
143
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :sort => "name", :sort_reverse => "true")
144
144
  end
145
145
 
146
146
  it "should respond sucessfully" do
@@ -156,7 +156,7 @@ describe "MerbAdmin" do
156
156
  before(:each) do
157
157
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 32, :name => "Sandy Koufax", :position => "Starting patcher")
158
158
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman")
159
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:query => "Jackie Robinson"})
159
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Jackie Robinson")
160
160
  end
161
161
 
162
162
  it "should respond sucessfully" do
@@ -178,7 +178,7 @@ describe "MerbAdmin" do
178
178
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
179
179
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
180
180
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
181
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:query => "Sandy Koufax", :filter => {:injured => "true"}})
181
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :query => "Sandy Koufax", :filter => {:injured => "true"})
182
182
  end
183
183
 
184
184
  it "should respond sucessfully" do
@@ -201,7 +201,7 @@ describe "MerbAdmin" do
201
201
  before(:each) do
202
202
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :injured => true)
203
203
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :injured => false)
204
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:filter => {:injured => "true"}})
204
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:injured => "true"})
205
205
  end
206
206
 
207
207
  it "should respond sucessfully" do
@@ -223,7 +223,7 @@ describe "MerbAdmin" do
223
223
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 42, :name => "Jackie Robinson", :position => "Second baseman", :retired => true, :injured => false)
224
224
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 18, :name => "Moises Alou", :position => "Left fielder", :retired => false, :injured => true)
225
225
  MerbAdmin::AbstractModel.new("Player").create(:team_id => rand(99999), :number => 5, :name => "David Wright", :position => "Third baseman", :retired => false, :injured => false)
226
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:filter => {:retired => "true", :injured => "true"}})
226
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :filter => {:retired => "true", :injured => "true"})
227
227
  end
228
228
 
229
229
  it "should respond sucessfully" do
@@ -243,7 +243,7 @@ describe "MerbAdmin" do
243
243
  describe "list with 2 objects", :given => "two players exist" do
244
244
  before(:each) do
245
245
  MerbAdmin[:per_page] = 1
246
- @response = request(url(:merb_admin_list, :model_name => "player"))
246
+ @response = visit(url(:merb_admin_list, :model_name => "player"))
247
247
  MerbAdmin[:per_page] = 100
248
248
  end
249
249
 
@@ -259,7 +259,7 @@ describe "MerbAdmin" do
259
259
  describe "list with 20 objects", :given => "twenty players exist" do
260
260
  before(:each) do
261
261
  MerbAdmin[:per_page] = 1
262
- @response = request(url(:merb_admin_list, :model_name => "player"))
262
+ @response = visit(url(:merb_admin_list, :model_name => "player"))
263
263
  MerbAdmin[:per_page] = 100
264
264
  end
265
265
 
@@ -275,7 +275,7 @@ describe "MerbAdmin" do
275
275
  describe "list with 20 objects, page 8", :given => "twenty players exist" do
276
276
  before(:each) do
277
277
  MerbAdmin[:per_page] = 1
278
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 8})
278
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 8)
279
279
  MerbAdmin[:per_page] = 100
280
280
  end
281
281
 
@@ -291,7 +291,7 @@ describe "MerbAdmin" do
291
291
  describe "list with 20 objects, page 17", :given => "twenty players exist" do
292
292
  before(:each) do
293
293
  MerbAdmin[:per_page] = 1
294
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:page => 17})
294
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :page => 17)
295
295
  MerbAdmin[:per_page] = 100
296
296
  end
297
297
 
@@ -307,7 +307,7 @@ describe "MerbAdmin" do
307
307
  describe "list show all", :given => "two players exist" do
308
308
  before(:each) do
309
309
  MerbAdmin[:per_page] = 1
310
- @response = request(url(:merb_admin_list, :model_name => "player"), :params => {:all => true})
310
+ @response = visit(url(:merb_admin_list, :model_name => "player"), :get, :all => true)
311
311
  MerbAdmin[:per_page] = 100
312
312
  end
313
313
 
@@ -318,7 +318,7 @@ describe "MerbAdmin" do
318
318
 
319
319
  describe "new" do
320
320
  before(:each) do
321
- @response = request(url(:merb_admin_new, :model_name => "player"))
321
+ @response = visit(url(:merb_admin_new, :model_name => "player"))
322
322
  end
323
323
 
324
324
  it "should respond sucessfully" do
@@ -345,7 +345,7 @@ describe "MerbAdmin" do
345
345
 
346
346
  describe "new with has-one association", :given => "a draft exists" do
347
347
  before(:each) do
348
- @response = request(url(:merb_admin_new, :model_name => "player"))
348
+ @response = visit(url(:merb_admin_new, :model_name => "player"))
349
349
  end
350
350
 
351
351
  it "should respond sucessfully" do
@@ -359,7 +359,7 @@ describe "MerbAdmin" do
359
359
 
360
360
  describe "new with has-many association", :given => "three teams exist" do
361
361
  before(:each) do
362
- @response = request(url(:merb_admin_new, :model_name => "player"))
362
+ @response = visit(url(:merb_admin_new, :model_name => "player"))
363
363
  end
364
364
 
365
365
  it "should respond sucessfully" do
@@ -373,7 +373,7 @@ describe "MerbAdmin" do
373
373
 
374
374
  describe "new with missing label", :given => "a player exists and three teams with no name exist" do
375
375
  before(:each) do
376
- @response = request(url(:merb_admin_new, :model_name => "player"))
376
+ @response = visit(url(:merb_admin_new, :model_name => "player"))
377
377
  end
378
378
 
379
379
  it "should respond sucessfully" do
@@ -381,271 +381,335 @@ describe "MerbAdmin" do
381
381
  end
382
382
  end
383
383
 
384
- describe "edit", :given => "a player exists" do
384
+ describe "create" do
385
385
  before(:each) do
386
- @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
386
+ visit(url(:merb_admin_new, :model_name => "player"))
387
+ fill_in "Name", :with => "Jackie Robinson"
388
+ fill_in "Number", :with => "42"
389
+ fill_in "Position", :with => "Second baseman"
390
+ @response = click_button "Save"
391
+ @player = MerbAdmin::AbstractModel.new("Player").first
387
392
  end
388
393
 
389
- it "should respond sucessfully" do
394
+ it "should be successful" do
390
395
  @response.should be_successful
391
396
  end
392
397
 
393
- it "should show \"Edit model\"" do
394
- @response.body.should contain("Edit player")
395
- end
396
-
397
- it "should show required fields as \"Required\"" do
398
- @response.body.should contain(/Name\n\s*Required/)
399
- @response.body.should contain(/Number\n\s*Required/)
400
- end
401
-
402
- it "should show non-required fields as \"Optional\"" do
403
- @response.body.should contain(/Position\n\s*Optional/)
404
- @response.body.should contain(/Born on\n\s*Optional/)
405
- @response.body.should contain(/Notes\n\s*Optional/)
406
- @response.body.should contain(/Draft\n\s*Optional/)
407
- @response.body.should contain(/Team\n\s*Optional/)
398
+ it "should create an object with correct attributes" do
399
+ @player.name.should eql("Jackie Robinson")
400
+ @player.number.should eql(42)
401
+ @player.position.should eql("Second baseman")
408
402
  end
409
403
  end
410
404
 
411
- describe "edit with has-one association", :given => "a player exists and a draft exists" do
405
+ describe "create and edit" do
412
406
  before(:each) do
413
- @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
407
+ visit(url(:merb_admin_new, :model_name => "player"))
408
+ fill_in "Name", :with => "Jackie Robinson"
409
+ fill_in "Number", :with => "42"
410
+ fill_in "Position", :with => "Second baseman"
411
+ @response = click_button "Save and continue editing"
412
+ @player = MerbAdmin::AbstractModel.new("Player").first
414
413
  end
415
414
 
416
- it "should respond sucessfully" do
415
+ it "should be successful" do
417
416
  @response.should be_successful
418
417
  end
419
418
 
420
- it "should show associated objects" do
421
- @response.body.should contain(/DraftDraft #\d+/)
419
+ it "should create an object with correct attributes" do
420
+ @player.name.should eql("Jackie Robinson")
421
+ @player.number.should eql(42)
422
+ @player.position.should eql("Second baseman")
422
423
  end
423
424
  end
424
425
 
425
- describe "edit with has-many association", :given => "a player exists and three teams exist" do
426
+ describe "create and add another" do
426
427
  before(:each) do
427
- @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
428
+ visit(url(:merb_admin_new, :model_name => "player"))
429
+ fill_in "Name", :with => "Jackie Robinson"
430
+ fill_in "Number", :with => "42"
431
+ fill_in "Position", :with => "Second baseman"
432
+ @response = click_button "Save and add another"
433
+ @player = MerbAdmin::AbstractModel.new("Player").first
428
434
  end
429
435
 
430
- it "should respond sucessfully" do
436
+ it "should be successful" do
431
437
  @response.should be_successful
432
438
  end
433
439
 
434
- it "should show associated objects" do
435
- @response.body.should contain(/TeamTeam 1Team 2Team 3/)
440
+ it "should create an object with correct attributes" do
441
+ @player.name.should eql("Jackie Robinson")
442
+ @player.number.should eql(42)
443
+ @player.position.should eql("Second baseman")
436
444
  end
437
445
  end
438
446
 
439
- describe "edit with missing object" do
447
+ describe "create with has-one association", :given => "a draft exists" do
440
448
  before(:each) do
441
- @response = request(url(:merb_admin_edit, :model_name => "player", :id => 1))
449
+ visit(url(:merb_admin_new, :model_name => "player"))
450
+ fill_in "Name", :with => "Jackie Robinson"
451
+ fill_in "Number", :with => 42
452
+ fill_in "Position", :with => "Second baseman"
453
+ fill_in "Draft", :with => @draft.id.to_s
454
+ @response = click_button "Save"
455
+ @player = MerbAdmin::AbstractModel.new("Player").first
442
456
  end
443
457
 
444
- it "should raise NotFound" do
445
- @response.status.should == 404
458
+ it "should create an object with correct associations" do
459
+ @draft.reload
460
+ @player.draft.should eql(@draft)
446
461
  end
447
462
  end
448
463
 
449
- describe "edit with missing label", :given => "a player exists and three teams with no name exist" do
464
+ describe "create with has-many association", :given => "three teams exist" do
450
465
  before(:each) do
451
- @response = request(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
466
+ visit(url(:merb_admin_new, :model_name => "league"))
467
+ fill_in "Name", :with => "National League"
468
+ fill_in "Teams", :with => @teams[0].id.to_s
469
+ @response = click_button "Save"
470
+ @league = MerbAdmin::AbstractModel.new("League").first
452
471
  end
453
472
 
454
- it "should respond sucessfully" do
455
- @response.should be_successful
473
+ it "should create an object with correct associations" do
474
+ @teams[0].reload
475
+ @league.teams.should include(@teams[0])
456
476
  end
457
- end
458
477
 
459
- describe "create" do
460
- before(:each) do
461
- @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1, :position => "Second baseman"}})
478
+ it "should not create an object with incorrect associations" do
479
+ @league.teams.should_not include(@teams[1])
480
+ @league.teams.should_not include(@teams[2])
462
481
  end
482
+ end
463
483
 
464
- it "should redirect to list" do
465
- @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
484
+ describe "create with uniqueness constraint violated", :given => "a player exists" do
485
+ before(:each) do
486
+ visit(url(:merb_admin_new, :model_name => "player"))
487
+ fill_in "Name", :with => @player.name
488
+ fill_in "Number", :with => @player.number.to_s
489
+ fill_in "Position", :with => @player.position
490
+ fill_in "Team", :with => @player.team_id.to_s
491
+ @response = click_button "Save"
466
492
  end
467
493
 
468
- it "should create a new object" do
469
- MerbAdmin::AbstractModel.new("Player").first.should_not be_nil
494
+ it "should show an error message" do
495
+ @response.body.should contain("There is already a player with that number on this team")
470
496
  end
471
497
  end
472
498
 
473
- describe "create and edit" do
499
+ describe "create with invalid object" do
474
500
  before(:each) do
475
- @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})
476
- end
477
-
478
- it "should redirect to edit" do
479
- @response.should redirect_to(url(:merb_admin_edit, :model_name => "player", :id => MerbAdmin::AbstractModel.new("Player").first.id))
501
+ @response = visit(url(:merb_admin_create, :model_name => "player"), :post, :params => {:player => {}})
480
502
  end
481
503
 
482
- it "should create a new object" do
483
- MerbAdmin::AbstractModel.new("Player").first.should_not be_nil
504
+ it "should show an error message" do
505
+ @response.body.should contain("Player failed to be created")
484
506
  end
485
507
  end
486
508
 
487
- describe "create and add another" do
509
+ describe "edit", :given => "a player exists" do
488
510
  before(:each) do
489
- @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})
511
+ @response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
490
512
  end
491
513
 
492
- it "should redirect to new" do
493
- @response.should redirect_to(url(:merb_admin_new, :model_name => "player"))
514
+ it "should respond sucessfully" do
515
+ @response.should be_successful
516
+ end
517
+
518
+ it "should show \"Edit model\"" do
519
+ @response.body.should contain("Edit player")
494
520
  end
495
521
 
496
- it "should create a new object" do
497
- MerbAdmin::AbstractModel.new("Player").first.should_not be_nil
522
+ it "should show required fields as \"Required\"" do
523
+ @response.body.should contain(/Name\n\s*Required/)
524
+ @response.body.should contain(/Number\n\s*Required/)
525
+ end
526
+
527
+ it "should show non-required fields as \"Optional\"" do
528
+ @response.body.should contain(/Position\n\s*Optional/)
529
+ @response.body.should contain(/Born on\n\s*Optional/)
530
+ @response.body.should contain(/Notes\n\s*Optional/)
531
+ @response.body.should contain(/Draft\n\s*Optional/)
532
+ @response.body.should contain(/Team\n\s*Optional/)
498
533
  end
499
534
  end
500
535
 
501
- describe "create with has-one association", :given => "a draft exists" do
536
+ describe "edit with has-one association", :given => "a player exists and a draft exists" do
502
537
  before(:each) do
503
- @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}})
538
+ @response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
504
539
  end
505
540
 
506
- it "should create a new object" do
507
- MerbAdmin::AbstractModel.new("Player").first.should_not be_nil
541
+ it "should respond sucessfully" do
542
+ @response.should be_successful
508
543
  end
509
544
 
510
- it "should be associated with the correct object" do
511
- @draft.reload
512
- MerbAdmin::AbstractModel.new("Player").first.draft.should == @draft
545
+ it "should show associated objects" do
546
+ @response.body.should contain(/DraftDraft #\d+/)
513
547
  end
514
548
  end
515
549
 
516
- describe "create with has-many association", :given => "three teams exist" do
550
+ describe "edit with has-many association", :given => "a player exists and three teams exist" do
517
551
  before(:each) do
518
- @response = request(url(:merb_admin_create, :model_name => "league"), :method => "post", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[0].id, @teams[1].id]}})
519
- end
520
-
521
- it "should create a new object" do
522
- MerbAdmin::AbstractModel.new("League").first.should_not be_nil
552
+ @response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
523
553
  end
524
554
 
525
- it "should be associated with the correct objects" do
526
- @teams[0].reload
527
- MerbAdmin::AbstractModel.new("League").first.teams.should include(@teams[0])
528
- @teams[1].reload
529
- MerbAdmin::AbstractModel.new("League").first.teams.should include(@teams[1])
555
+ it "should respond sucessfully" do
556
+ @response.should be_successful
530
557
  end
531
558
 
532
- it "should be not associated with an incorrect object" do
533
- MerbAdmin::AbstractModel.new("League").first.teams.should_not include(@teams[2])
559
+ it "should show associated objects" do
560
+ @response.body.should contain(/TeamTeam 1Team 2Team 3/)
534
561
  end
535
562
  end
536
563
 
537
- describe "create with uniqueness constraint violated", :given => "a player exists" do
564
+ describe "edit with missing object" do
538
565
  before(:each) do
539
- @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}})
566
+ @response = visit(url(:merb_admin_edit, :model_name => "player", :id => 1))
540
567
  end
541
568
 
542
- it "should show an error message" do
543
- @response.body.should contain("There is already a player with that number on this team")
569
+ it "should raise NotFound" do
570
+ @response.status.should equal(404)
544
571
  end
545
572
  end
546
573
 
547
- describe "create with invalid object" do
574
+ describe "edit with missing label", :given => "a player exists and three teams with no name exist" do
548
575
  before(:each) do
549
- @response = request(url(:merb_admin_create, :model_name => "player"), :method => "post", :params => {:player => {}})
576
+ @response = visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
550
577
  end
551
578
 
552
- it "should show an error message" do
553
- @response.body.should contain("Player failed to be created")
579
+ it "should respond sucessfully" do
580
+ @response.should be_successful
554
581
  end
555
582
  end
556
583
 
557
584
  describe "update", :given => "a player exists" do
558
585
  before(:each) do
559
- @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
586
+ visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
587
+ fill_in "Name", :with => "Jackie Robinson"
588
+ fill_in "Number", :with => "42"
589
+ fill_in "Position", :with => "Second baseman"
590
+ @response = click_button "Save"
591
+ @player = MerbAdmin::AbstractModel.new("Player").first
560
592
  end
561
593
 
562
- it "should redirect to list" do
563
- @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
594
+ it "should be successful" do
595
+ @response.should be_successful
564
596
  end
565
597
 
566
- it "should update an object that already exists" do
567
- MerbAdmin::AbstractModel.new("Player").first.name.should eql("Jackie Robinson")
598
+ it "should update an object with correct attributes" do
599
+ @player.name.should eql("Jackie Robinson")
600
+ @player.number.should eql(42)
601
+ @player.position.should eql("Second baseman")
568
602
  end
569
603
  end
570
604
 
571
605
  describe "update and edit", :given => "a player exists" do
572
606
  before(:each) do
573
- @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})
607
+ visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
608
+ fill_in "Name", :with => "Jackie Robinson"
609
+ fill_in "Number", :with => "42"
610
+ fill_in "Position", :with => "Second baseman"
611
+ @response = click_button "Save and continue"
612
+ @player = MerbAdmin::AbstractModel.new("Player").first
574
613
  end
575
614
 
576
- it "should redirect to edit" do
577
- @response.should redirect_to(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
615
+ it "should be successful" do
616
+ @response.should be_successful
578
617
  end
579
618
 
580
- it "should update an object that already exists" do
581
- MerbAdmin::AbstractModel.new("Player").first.name.should eql("Jackie Robinson")
619
+ it "should update an object with correct attributes" do
620
+ @player.name.should eql("Jackie Robinson")
621
+ @player.number.should eql(42)
622
+ @player.position.should eql("Second baseman")
582
623
  end
583
624
  end
584
625
 
585
626
  describe "update and add another", :given => "a player exists" do
586
627
  before(:each) do
587
- @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})
628
+ visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
629
+ fill_in "Name", :with => "Jackie Robinson"
630
+ fill_in "Number", :with => "42"
631
+ fill_in "Position", :with => "Second baseman"
632
+ @response = click_button "Save and add another"
633
+ @player = MerbAdmin::AbstractModel.new("Player").first
588
634
  end
589
635
 
590
- it "should redirect to new" do
591
- @response.should redirect_to(url(:merb_admin_new, :model_name => "player"))
636
+ it "should be successful" do
637
+ @response.should be_successful
592
638
  end
593
639
 
594
- it "should update an object that already exists" do
595
- MerbAdmin::AbstractModel.new("Player").first.name.should eql("Jackie Robinson")
640
+ it "should update an object with correct attributes" do
641
+ @player.name.should eql("Jackie Robinson")
642
+ @player.number.should eql(42)
643
+ @player.position.should eql("Second baseman")
596
644
  end
597
645
  end
598
646
 
599
647
  describe "update with has-one association", :given => "a player exists and a draft exists" do
600
648
  before(:each) do
601
- @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}})
649
+ visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
650
+ fill_in "Name", :with => "Jackie Robinson"
651
+ fill_in "Number", :with => "42"
652
+ fill_in "Position", :with => "Second baseman"
653
+ fill_in "Draft", :with => @draft.id.to_s
654
+ @response = click_button "Save"
655
+ @player = MerbAdmin::AbstractModel.new("Player").first
656
+ # @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}})
602
657
  end
603
658
 
604
- it "should update an object that already exists" do
605
- MerbAdmin::AbstractModel.new("Player").first.name.should eql("Jackie Robinson")
659
+ it "should update an object with correct attributes" do
660
+ @player.name.should eql("Jackie Robinson")
661
+ @player.number.should eql(42)
662
+ @player.position.should eql("Second baseman")
606
663
  end
607
664
 
608
- it "should be associated with the correct object" do
665
+ it "should update an object with correct associations" do
609
666
  @draft.reload
610
- MerbAdmin::AbstractModel.new("Player").first.draft.should == @draft
667
+ @player.draft.should eql(@draft)
611
668
  end
612
669
  end
613
670
 
614
671
  describe "update with has-many association", :given => "a league exists and three teams exist" do
615
672
  before(:each) do
616
- @teams[0].update_attributes(:league_id => @league.id)
617
- @response = request(url(:merb_admin_update, :model_name => "league", :id => @league.id), :method => "put", :params => {:league => {:name => "National League"}, :associations => {:teams => [@teams[1].id]}})
673
+ visit(url(:merb_admin_edit, :model_name => "league", :id => @league.id))
674
+ fill_in "Name", :with => "National League"
675
+ fill_in "Teams", :with => @teams[0].id.to_s
676
+ @response = click_button "Save"
677
+ @league = MerbAdmin::AbstractModel.new("League").first
618
678
  end
619
679
 
620
- it "should update an object that already exists" do
621
- MerbAdmin::AbstractModel.new("League").first.name.should eql("National League")
680
+ it "should update an object with correct attributes" do
681
+ @league.name.should eql("National League")
622
682
  end
623
683
 
624
- it "should be associated with the correct objects" do
625
- @teams[1].reload
626
- MerbAdmin::AbstractModel.new("League").first.teams.should include(@teams[1])
684
+ it "should update an object with correct associations" do
685
+ @teams[0].reload
686
+ @league.teams.should include(@teams[0])
627
687
  end
628
688
 
629
- it "should not be associated with an incorrect object" do
630
- @teams[0].reload
631
- MerbAdmin::AbstractModel.new("League").first.teams.should_not include(@teams[0])
632
- MerbAdmin::AbstractModel.new("League").first.teams.should_not include(@teams[2])
689
+ it "should not update an object with incorrect associations" do
690
+ @league.teams.should_not include(@teams[1])
691
+ @league.teams.should_not include(@teams[2])
633
692
  end
634
693
  end
635
694
 
636
695
  describe "update with missing object" do
637
696
  before(:each) do
638
- @response = request(url(:merb_admin_update, :model_name => "player", :id => 1), :method => "put", :params => {:player => {:name => "Jackie Robinson", :number => 42, :team_id => 1}})
697
+ @response = visit(url(:merb_admin_update, :model_name => "player", :id => 1), :put, {:player => {:name => "Jackie Robinson", :number => 42, :position => "Second baseman"}})
639
698
  end
640
699
 
641
700
  it "should raise NotFound" do
642
- @response.status.should == 404
701
+ @response.status.should equal(404)
643
702
  end
644
703
  end
645
704
 
646
705
  describe "update with invalid object", :given => "a player exists" do
647
706
  before(:each) do
648
- @response = request(url(:merb_admin_update, :model_name => "player", :id => @player.id), :method => "put", :params => {:player => {:number => "a"}})
707
+ visit(url(:merb_admin_edit, :model_name => "player", :id => @player.id))
708
+ fill_in "Name", :with => "Jackie Robinson"
709
+ fill_in "Number", :with => "a"
710
+ fill_in "Position", :with => "Second baseman"
711
+ @response = click_button "Save"
712
+ @player = MerbAdmin::AbstractModel.new("Player").first
649
713
  end
650
714
 
651
715
  it "should show an error message" do
@@ -655,7 +719,7 @@ describe "MerbAdmin" do
655
719
 
656
720
  describe "delete", :given => "a player exists" do
657
721
  before(:each) do
658
- @response = request(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
722
+ @response = visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
659
723
  end
660
724
 
661
725
  it "should respond sucessfully" do
@@ -669,11 +733,11 @@ describe "MerbAdmin" do
669
733
 
670
734
  describe "delete with missing object" do
671
735
  before(:each) do
672
- @response = request(url(:merb_admin_delete, :model_name => "player", :id => 1))
736
+ @response = visit(url(:merb_admin_delete, :model_name => "player", :id => 1))
673
737
  end
674
738
 
675
739
  it "should raise NotFound" do
676
- @response.status.should == 404
740
+ @response.status.should equal(404)
677
741
  end
678
742
  end
679
743
 
@@ -681,7 +745,7 @@ describe "MerbAdmin" do
681
745
  before(:each) do
682
746
  @league = MerbAdmin::AbstractModel.new("League").create(:name => "League 1")
683
747
  @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)
684
- @response = request(url(:merb_admin_delete, :model_name => "league", :id => @league.id))
748
+ @response = visit(url(:merb_admin_delete, :model_name => "league", :id => @league.id))
685
749
  end
686
750
 
687
751
  it "should respond sucessfully" do
@@ -691,25 +755,27 @@ describe "MerbAdmin" do
691
755
 
692
756
  describe "destroy", :given => "a player exists" do
693
757
  before(:each) do
694
- @response = request(url(:merb_admin_destroy, :model_name => "player", :id => @player.id), :method => "delete")
758
+ visit(url(:merb_admin_delete, :model_name => "player", :id => @player.id))
759
+ @response = click_button "Yes, I'm sure"
760
+ @player = MerbAdmin::AbstractModel.new("Player").first
695
761
  end
696
762
 
697
- it "should redirect to list" do
698
- @response.should redirect_to(url(:merb_admin_list, :model_name => "player"))
763
+ it "should be successful" do
764
+ @response.should be_successful
699
765
  end
700
766
 
701
767
  it "should destroy an object" do
702
- MerbAdmin::AbstractModel.new("Player").first.should be_nil
768
+ @player.should be_nil
703
769
  end
704
770
  end
705
771
 
706
772
  describe "destroy with missing object" do
707
773
  before(:each) do
708
- @response = request(url(:merb_admin_destroy, :model_name => "player", :id => 1), :method => "delete")
774
+ @response = visit(url(:merb_admin_destroy, :model_name => "player", :id => 1), :delete)
709
775
  end
710
776
 
711
777
  it "should raise NotFound" do
712
- @response.status.should == 404
778
+ @response.status.should equal(404)
713
779
  end
714
780
  end
715
781
  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.6.9
4
+ version: 0.7.0
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-11-23 00:00:00 -08:00
12
+ date: 2009-11-28 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency