autoforme 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +10 -0
- data/Rakefile +7 -2
- data/lib/autoforme.rb +1 -1
- data/lib/autoforme/action.rb +15 -21
- data/lib/autoforme/frameworks/rails.rb +4 -4
- data/lib/autoforme/frameworks/roda.rb +5 -1
- data/lib/autoforme/frameworks/sinatra.rb +2 -2
- data/lib/autoforme/model.rb +3 -10
- data/lib/autoforme/models/sequel.rb +1 -6
- data/lib/autoforme/table.rb +1 -8
- data/lib/autoforme/version.rb +1 -1
- data/spec/all.rb +2 -0
- data/spec/associations_spec.rb +145 -19
- data/spec/basic_spec.rb +229 -44
- data/spec/mtm_spec.rb +86 -9
- data/spec/rails_spec_helper.rb +1 -1
- data/spec/roda_spec.rb +72 -0
- data/spec/spec_helper.rb +26 -2
- data/spec/unit_spec.rb +62 -1
- metadata +19 -3
data/spec/basic_spec.rb
CHANGED
@@ -15,7 +15,7 @@ describe AutoForme do
|
|
15
15
|
page.title.must_equal 'Artist - New'
|
16
16
|
fill_in 'Name', :with=>'TestArtistNew'
|
17
17
|
click_button 'Create'
|
18
|
-
page.html.
|
18
|
+
page.html.must_include 'Created Artist'
|
19
19
|
page.current_path.must_equal '/Artist/new'
|
20
20
|
|
21
21
|
click_link 'Show'
|
@@ -23,7 +23,7 @@ describe AutoForme do
|
|
23
23
|
click_button 'Show'
|
24
24
|
select 'TestArtistNew'
|
25
25
|
click_button 'Show'
|
26
|
-
page.html.must_match
|
26
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
27
27
|
|
28
28
|
click_link 'Edit'
|
29
29
|
page.title.must_equal 'Artist - Edit'
|
@@ -32,8 +32,8 @@ describe AutoForme do
|
|
32
32
|
click_button 'Edit'
|
33
33
|
fill_in 'Name', :with=>'TestArtistUpdate'
|
34
34
|
click_button 'Update'
|
35
|
-
page.html.
|
36
|
-
page.html.must_match
|
35
|
+
page.html.must_include 'Updated Artist'
|
36
|
+
page.html.must_match(/Name.+TestArtistUpdate/m)
|
37
37
|
page.current_path.must_match %r{/Artist/edit/\d+}
|
38
38
|
|
39
39
|
click_link 'Search'
|
@@ -58,11 +58,14 @@ describe AutoForme do
|
|
58
58
|
click_link 'CSV Format'
|
59
59
|
page.body.must_equal "Name\nTestArtistUpdate\n"
|
60
60
|
|
61
|
+
visit("/Artist/destroy/#{Artist.first.id}")
|
62
|
+
page.html.must_include 'Unhandled Request'
|
63
|
+
|
61
64
|
visit("/Artist/browse")
|
62
65
|
page.all('td').last.find('a').click
|
63
66
|
click_button 'Delete'
|
64
67
|
page.title.must_equal 'Artist - Delete'
|
65
|
-
page.html.
|
68
|
+
page.html.must_include 'Deleted Artist'
|
66
69
|
page.current_path.must_equal '/Artist/delete'
|
67
70
|
|
68
71
|
click_link 'Artist'
|
@@ -74,21 +77,21 @@ describe AutoForme do
|
|
74
77
|
visit("/prefix/Artist/new")
|
75
78
|
fill_in 'Name', :with=>'TestArtistNew'
|
76
79
|
click_button 'Create'
|
77
|
-
page.html.
|
80
|
+
page.html.must_include 'Created Artist'
|
78
81
|
page.current_path.must_equal '/prefix/Artist/new'
|
79
82
|
|
80
83
|
click_link 'Show'
|
81
84
|
select 'TestArtistNew'
|
82
85
|
click_button 'Show'
|
83
|
-
page.html.must_match
|
86
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
84
87
|
|
85
88
|
click_link 'Edit'
|
86
89
|
select 'TestArtistNew'
|
87
90
|
click_button 'Edit'
|
88
91
|
fill_in 'Name', :with=>'TestArtistUpdate'
|
89
92
|
click_button 'Update'
|
90
|
-
page.html.
|
91
|
-
page.html.must_match
|
93
|
+
page.html.must_include 'Updated Artist'
|
94
|
+
page.html.must_match(/Name.+TestArtistUpdate/m)
|
92
95
|
page.current_path.must_match %r{/prefix/Artist/edit/\d+}
|
93
96
|
|
94
97
|
click_link 'Search'
|
@@ -107,13 +110,80 @@ describe AutoForme do
|
|
107
110
|
|
108
111
|
page.all('td').last.find('a').click
|
109
112
|
click_button 'Delete'
|
110
|
-
page.html.
|
113
|
+
page.html.must_include 'Deleted Artist'
|
111
114
|
page.current_path.must_equal '/prefix/Artist/delete'
|
112
115
|
|
113
116
|
click_link 'Artist'
|
114
117
|
page.all('td').map{|s| s.text}.must_equal []
|
115
118
|
end
|
116
119
|
|
120
|
+
it "should have basic functionality working with namespaced models" do
|
121
|
+
begin
|
122
|
+
def Artist.name; "Object::Artist"; end
|
123
|
+
app_setup(Artist)
|
124
|
+
visit("/Object::Artist/new")
|
125
|
+
page.title.must_equal 'Object::Artist - New'
|
126
|
+
fill_in 'Name', :with=>'TestArtistNew'
|
127
|
+
click_button 'Create'
|
128
|
+
page.html.must_include 'Created Object::Artist'
|
129
|
+
page.current_path.must_equal '/Object::Artist/new'
|
130
|
+
|
131
|
+
click_link 'Show'
|
132
|
+
page.title.must_equal 'Object::Artist - Show'
|
133
|
+
click_button 'Show'
|
134
|
+
select 'TestArtistNew'
|
135
|
+
click_button 'Show'
|
136
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
137
|
+
|
138
|
+
click_link 'Edit'
|
139
|
+
page.title.must_equal 'Object::Artist - Edit'
|
140
|
+
click_button 'Edit'
|
141
|
+
select 'TestArtistNew'
|
142
|
+
click_button 'Edit'
|
143
|
+
fill_in 'Name', :with=>'TestArtistUpdate'
|
144
|
+
click_button 'Update'
|
145
|
+
page.html.must_include 'Updated Object::Artist'
|
146
|
+
page.html.must_match(/Name.+TestArtistUpdate/m)
|
147
|
+
page.current_path.must_match %r{/Object::Artist/edit/\d+}
|
148
|
+
|
149
|
+
click_link 'Search'
|
150
|
+
page.title.must_equal 'Object::Artist - Search'
|
151
|
+
fill_in 'Name', :with=>'Upd'
|
152
|
+
click_button 'Search'
|
153
|
+
page.all('table').first['id'].must_equal 'autoforme_table'
|
154
|
+
page.all('th').map{|s| s.text}.must_equal ['Name', 'Show', 'Edit', 'Delete']
|
155
|
+
page.all('td').map{|s| s.text}.must_equal ["TestArtistUpdate", "Show", "Edit", "Delete"]
|
156
|
+
click_link 'CSV Format'
|
157
|
+
page.body.must_equal "Name\nTestArtistUpdate\n"
|
158
|
+
|
159
|
+
visit("/Object::Artist/browse")
|
160
|
+
click_link 'Search'
|
161
|
+
fill_in 'Name', :with=>'Foo'
|
162
|
+
click_button 'Search'
|
163
|
+
page.all('td').map{|s| s.text}.must_equal []
|
164
|
+
|
165
|
+
click_link 'Object::Artist'
|
166
|
+
page.title.must_equal 'Object::Artist - Browse'
|
167
|
+
page.all('td').map{|s| s.text}.must_equal ["TestArtistUpdate", "Show", "Edit", "Delete"]
|
168
|
+
click_link 'CSV Format'
|
169
|
+
page.body.must_equal "Name\nTestArtistUpdate\n"
|
170
|
+
|
171
|
+
visit("/Object::Artist/browse")
|
172
|
+
page.all('td').last.find('a').click
|
173
|
+
click_button 'Delete'
|
174
|
+
page.title.must_equal 'Object::Artist - Delete'
|
175
|
+
page.html.must_include 'Deleted Object::Artist'
|
176
|
+
page.current_path.must_equal '/Object::Artist/delete'
|
177
|
+
|
178
|
+
click_link 'Object::Artist'
|
179
|
+
page.all('td').map{|s| s.text}.must_equal []
|
180
|
+
ensure
|
181
|
+
class << Artist
|
182
|
+
remove_method :name
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
117
187
|
it "should have delete button on edit page" do
|
118
188
|
app_setup(Artist)
|
119
189
|
visit("/Artist/new")
|
@@ -135,7 +205,7 @@ describe AutoForme do
|
|
135
205
|
page_footer "<a href='/Artist/edit'>E</a>"
|
136
206
|
end
|
137
207
|
visit("/Artist/browse")
|
138
|
-
page.html.
|
208
|
+
page.html.wont_include 'search'
|
139
209
|
click_link 'N'
|
140
210
|
fill_in 'Name', :with=>'TestArtistNew'
|
141
211
|
click_button 'Create'
|
@@ -212,11 +282,11 @@ describe AutoForme do
|
|
212
282
|
click_link 'Show'
|
213
283
|
select 'TestArtistNew'
|
214
284
|
click_button 'Show'
|
215
|
-
page.html.must_match
|
285
|
+
page.html.must_match(/Show Artist Name.+TestArtistNew/m)
|
216
286
|
click_button 'Edit'
|
217
287
|
fill_in 'Edit Artist Name', :with=>'TestArtistUpdate'
|
218
288
|
click_button 'Update'
|
219
|
-
page.html.must_match
|
289
|
+
page.html.must_match(/Edit Artist Name.+TestArtistUpdate/m)
|
220
290
|
page.current_path.must_match %r{/Artist/edit/\d+}
|
221
291
|
|
222
292
|
click_link 'Search'
|
@@ -245,12 +315,12 @@ describe AutoForme do
|
|
245
315
|
visit("/Artist/show")
|
246
316
|
select 'stArtistN'
|
247
317
|
click_button 'Show'
|
248
|
-
page.html.must_match
|
318
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
249
319
|
|
250
320
|
click_link 'Edit'
|
251
321
|
select 'estArtistNe'
|
252
322
|
click_button 'Edit'
|
253
|
-
page.html.must_match
|
323
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
254
324
|
|
255
325
|
click_link 'Delete'
|
256
326
|
select 'Artist'
|
@@ -291,7 +361,7 @@ describe AutoForme do
|
|
291
361
|
click_link 'Edit'
|
292
362
|
select 'weNtsitrAtseT'
|
293
363
|
click_button 'Edit'
|
294
|
-
page.html.
|
364
|
+
page.html.must_include 'weNtsitrAtseT21'
|
295
365
|
click_button 'Update'
|
296
366
|
a.must_equal [:edit, :edit, :update, -2, 'update', 2, :edit]
|
297
367
|
a.clear
|
@@ -368,15 +438,15 @@ describe AutoForme do
|
|
368
438
|
fill_in 'Name', :with=>'TestArtistNew'
|
369
439
|
click_button 'Create'
|
370
440
|
page.current_path.must_equal '/Artist/new'
|
371
|
-
page.html.
|
372
|
-
page.html.
|
441
|
+
page.html.wont_include 'Show'
|
442
|
+
page.html.wont_include 'Delete'
|
373
443
|
|
374
444
|
click_link 'Edit'
|
375
445
|
select 'TestArtistNew'
|
376
446
|
click_button 'Edit'
|
377
447
|
fill_in 'Name', :with=>'TestArtistUpdate'
|
378
448
|
click_button 'Update'
|
379
|
-
page.html.must_match
|
449
|
+
page.html.must_match(/Name.+TestArtistUpdate/m)
|
380
450
|
page.current_path.must_match %r{/Artist/edit/\d+}
|
381
451
|
|
382
452
|
click_link 'Search'
|
@@ -388,7 +458,7 @@ describe AutoForme do
|
|
388
458
|
page.all('td').map{|s| s.text}.must_equal ["TestArtistUpdate", "Edit"]
|
389
459
|
end
|
390
460
|
|
391
|
-
it "should have
|
461
|
+
it "should have working link_name and class_display_name" do
|
392
462
|
app_setup(Artist) do
|
393
463
|
class_display_name "FooArtist"
|
394
464
|
link_name "BarArtist"
|
@@ -396,7 +466,7 @@ describe AutoForme do
|
|
396
466
|
visit("/BarArtist/new")
|
397
467
|
fill_in 'Name', :with=>'TestArtistNew'
|
398
468
|
click_button 'Create'
|
399
|
-
page.html.
|
469
|
+
page.html.must_include 'Created FooArtist'
|
400
470
|
page.current_path.must_equal '/BarArtist/new'
|
401
471
|
|
402
472
|
click_link 'Edit'
|
@@ -404,14 +474,14 @@ describe AutoForme do
|
|
404
474
|
click_button 'Edit'
|
405
475
|
fill_in 'Name', :with=>'TestArtistUpdate'
|
406
476
|
click_button 'Update'
|
407
|
-
page.html.
|
477
|
+
page.html.must_include 'Updated FooArtist'
|
408
478
|
|
409
479
|
click_link 'FooArtist'
|
410
480
|
page.all('td').map{|s| s.text}.must_equal ["TestArtistUpdate", "Show", "Edit", "Delete"]
|
411
481
|
|
412
482
|
page.all('td').last.find('a').click
|
413
483
|
click_button 'Delete'
|
414
|
-
page.html.
|
484
|
+
page.html.must_include 'Deleted FooArtist'
|
415
485
|
end
|
416
486
|
|
417
487
|
it "should use text boxes on list page when autocompleting is enabled" do
|
@@ -423,7 +493,7 @@ describe AutoForme do
|
|
423
493
|
visit('/Artist/show')
|
424
494
|
fill_in 'Artist', :with=>a.id.to_s
|
425
495
|
click_button 'Show'
|
426
|
-
page.html.must_match
|
496
|
+
page.html.must_match(/Name.+TestArtistNew/m)
|
427
497
|
|
428
498
|
click_link 'Edit'
|
429
499
|
fill_in 'Artist', :with=>a.id.to_s
|
@@ -450,14 +520,14 @@ describe AutoForme do
|
|
450
520
|
page.title.must_equal 'Artist - New'
|
451
521
|
fill_in 'namenew', :with=>'TAN'
|
452
522
|
click_button 'Create'
|
453
|
-
page.html.
|
523
|
+
page.html.must_include 'Created Artist'
|
454
524
|
page.current_path.must_equal '/Artist/new'
|
455
525
|
|
456
526
|
click_link 'Show'
|
457
527
|
page.title.must_equal 'Artist - Show'
|
458
528
|
select 'TAN'
|
459
529
|
click_button 'Show'
|
460
|
-
page.html.
|
530
|
+
page.html.must_include 'nameshow-TANTAN'
|
461
531
|
|
462
532
|
click_link 'Edit'
|
463
533
|
page.title.must_equal 'Artist - Edit'
|
@@ -465,8 +535,8 @@ describe AutoForme do
|
|
465
535
|
click_button 'Edit'
|
466
536
|
fill_in 'nameedit', :with=>'TAU'
|
467
537
|
click_button 'Update'
|
468
|
-
page.html.
|
469
|
-
page.html.must_match
|
538
|
+
page.html.must_include 'Updated Artist'
|
539
|
+
page.html.must_match(/nameedit.+TAUTAU/m)
|
470
540
|
page.current_path.must_match %r{/Artist/edit/\d+}
|
471
541
|
|
472
542
|
click_link 'Search'
|
@@ -493,15 +563,48 @@ describe AutoForme do
|
|
493
563
|
|
494
564
|
visit("/Artist/browse")
|
495
565
|
page.all('td').last.find('a').click
|
496
|
-
page.html.
|
566
|
+
page.html.must_include 'namedelete-TAUTAU'
|
497
567
|
click_button 'Delete'
|
498
568
|
page.title.must_equal 'Artist - Delete'
|
499
|
-
page.html.
|
569
|
+
page.html.must_include 'Deleted Artist'
|
500
570
|
page.current_path.must_equal '/Artist/delete'
|
501
571
|
|
502
572
|
click_link 'Artist'
|
503
573
|
page.all('td').map{|s| s.text}.must_equal []
|
504
574
|
end
|
575
|
+
|
576
|
+
it "should correct handle validation errors" do
|
577
|
+
app_setup(Artist)
|
578
|
+
Artist.send(:define_method, :validate) do
|
579
|
+
errors.add(:name, "bad name") if name == 'Foo'
|
580
|
+
end
|
581
|
+
|
582
|
+
visit("/Artist/new")
|
583
|
+
page.title.must_equal 'Artist - New'
|
584
|
+
fill_in 'Name', :with=>'Foo'
|
585
|
+
click_button 'Create'
|
586
|
+
page.html.must_include 'Error Creating Artist'
|
587
|
+
page.html.must_include 'bad name'
|
588
|
+
fill_in 'Name', :with=>'TestArtistNew'
|
589
|
+
click_button 'Create'
|
590
|
+
page.html.must_include 'Created Artist'
|
591
|
+
page.current_path.must_equal '/Artist/new'
|
592
|
+
|
593
|
+
click_link 'Edit'
|
594
|
+
page.title.must_equal 'Artist - Edit'
|
595
|
+
click_button 'Edit'
|
596
|
+
select 'TestArtistNew'
|
597
|
+
click_button 'Edit'
|
598
|
+
fill_in 'Name', :with=>'Foo'
|
599
|
+
click_button 'Update'
|
600
|
+
page.html.must_include 'Error Updating Artist'
|
601
|
+
page.html.must_include 'bad name'
|
602
|
+
fill_in 'Name', :with=>'TestArtistUpdate'
|
603
|
+
click_button 'Update'
|
604
|
+
page.html.must_include 'Updated Artist'
|
605
|
+
page.html.must_match(/Name.+TestArtistUpdate/m)
|
606
|
+
page.current_path.must_match %r{/Artist/edit/\d+}
|
607
|
+
end
|
505
608
|
end
|
506
609
|
|
507
610
|
describe AutoForme do
|
@@ -531,18 +634,18 @@ describe AutoForme do
|
|
531
634
|
fill_in 'N2', :with=>'V2'
|
532
635
|
fill_in 'N3', :with=>'V3'
|
533
636
|
fill_in 'N4', :with=>'V4'
|
534
|
-
page.body.wont_match
|
637
|
+
page.body.wont_match(/<label>N5/i)
|
535
638
|
click_button 'Create'
|
536
639
|
|
537
640
|
click_link 'Show'
|
538
641
|
select 'V0'
|
539
642
|
click_button 'Show'
|
540
|
-
page.body.must_match
|
541
|
-
page.body.must_match
|
542
|
-
page.body.must_match
|
543
|
-
page.body.wont_match
|
544
|
-
page.body.must_match
|
545
|
-
page.body.must_match
|
643
|
+
page.body.must_match(/[VN]0/i)
|
644
|
+
page.body.must_match(/[VN]1/i)
|
645
|
+
page.body.must_match(/[VN]2/i)
|
646
|
+
page.body.wont_match(/[VN]3/i)
|
647
|
+
page.body.must_match(/[VN]4/i)
|
648
|
+
page.body.must_match(/N5/i)
|
546
649
|
|
547
650
|
click_link 'Edit'
|
548
651
|
select 'V0'
|
@@ -551,13 +654,13 @@ describe AutoForme do
|
|
551
654
|
fill_in 'N1', :with=>'Q1'
|
552
655
|
fill_in 'N2', :with=>'Q2'
|
553
656
|
fill_in 'N3', :with=>'Q3'
|
554
|
-
page.body.wont_match
|
657
|
+
page.body.wont_match(/<label>N4/i)
|
555
658
|
fill_in 'N5', :with=>'Q5'
|
556
659
|
click_button 'Update'
|
557
660
|
|
558
661
|
click_link 'Search'
|
559
662
|
fill_in 'N0', :with=>'Q0'
|
560
|
-
page.body.wont_match
|
663
|
+
page.body.wont_match(/<label>N1/i)
|
561
664
|
fill_in 'N2', :with=>'Q2'
|
562
665
|
fill_in 'N3', :with=>'Q3'
|
563
666
|
fill_in 'N4', :with=>'V4'
|
@@ -812,14 +915,14 @@ describe AutoForme do
|
|
812
915
|
page.title.must_equal 'Artist - New'
|
813
916
|
fill_in 'Name', :with=>'TestArtistNew'
|
814
917
|
click_button 'Create'
|
815
|
-
page.html.
|
918
|
+
page.html.must_include 'Created Artist'
|
816
919
|
page.current_path.must_equal '/Artist/new'
|
817
920
|
|
818
921
|
click_link 'Show'
|
819
922
|
page.title.must_equal 'Artist - Show'
|
820
923
|
select '[-TestArtistNew-]'
|
821
924
|
click_button 'Show'
|
822
|
-
page.html.must_match
|
925
|
+
page.html.must_match(/Name.+-TestArtistNew-/m)
|
823
926
|
|
824
927
|
click_link 'Edit'
|
825
928
|
page.title.must_equal 'Artist - Edit'
|
@@ -827,8 +930,8 @@ describe AutoForme do
|
|
827
930
|
click_button 'Edit'
|
828
931
|
fill_in 'Name', :with=>'TestArtistUpdate'
|
829
932
|
click_button 'Update'
|
830
|
-
page.html.
|
831
|
-
page.html.must_match
|
933
|
+
page.html.must_include 'Updated Artist'
|
934
|
+
page.html.must_match(/Name.+-TestArtistUpdate-/m)
|
832
935
|
page.current_path.must_match %r{/Artist/edit/\d+}
|
833
936
|
|
834
937
|
click_link 'Search'
|
@@ -849,7 +952,89 @@ describe AutoForme do
|
|
849
952
|
|
850
953
|
page.all('td').last.find('a').click
|
851
954
|
click_button 'Delete'
|
852
|
-
page.html.
|
955
|
+
page.html.must_include 'Deleted Artist'
|
956
|
+
page.current_path.must_equal '/Artist/delete'
|
957
|
+
|
958
|
+
click_link 'Artist'
|
959
|
+
page.all('td').map{|s| s.text}.must_equal []
|
960
|
+
end
|
961
|
+
end
|
962
|
+
|
963
|
+
describe AutoForme do
|
964
|
+
before(:all) do
|
965
|
+
db_setup(:artists=>[[:name, :string], [:i, :integer]])
|
966
|
+
model_setup(:Artist=>[:artists])
|
967
|
+
end
|
968
|
+
after(:all) do
|
969
|
+
Object.send(:remove_const, :Artist)
|
970
|
+
end
|
971
|
+
|
972
|
+
it "should have basic functionality working" do
|
973
|
+
app_setup(Artist)
|
974
|
+
visit("/Artist/new")
|
975
|
+
page.title.must_equal 'Artist - New'
|
976
|
+
fill_in 'Name', :with=>'TestArtistNew'
|
977
|
+
fill_in 'I', :with=>'3'
|
978
|
+
click_button 'Create'
|
979
|
+
|
980
|
+
click_link 'Search'
|
981
|
+
fill_in 'I', :with=>'2'
|
982
|
+
click_button 'Search'
|
983
|
+
page.all('th').map{|s| s.text}.must_equal ['I', 'Name', 'Show', 'Edit', 'Delete']
|
984
|
+
page.all('td').map{|s| s.text}.must_equal []
|
985
|
+
|
986
|
+
click_link 'Search'
|
987
|
+
fill_in 'I', :with=>'3'
|
988
|
+
click_button 'Search'
|
989
|
+
page.all('th').map{|s| s.text}.must_equal ['I', 'Name', 'Show', 'Edit', 'Delete']
|
990
|
+
page.all('td').map{|s| s.text}.must_equal ["3", "TestArtistNew", "Show", "Edit", "Delete"]
|
991
|
+
end
|
992
|
+
end
|
993
|
+
|
994
|
+
describe AutoForme do
|
995
|
+
before(:all) do
|
996
|
+
db_setup(:artists=>[])
|
997
|
+
model_setup(:Artist=>[:artists])
|
998
|
+
end
|
999
|
+
after(:all) do
|
1000
|
+
Object.send(:remove_const, :Artist)
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
it "should have basic functionality working with no columns" do
|
1004
|
+
app_setup(Artist)
|
1005
|
+
visit("/Artist/new")
|
1006
|
+
page.title.must_equal 'Artist - New'
|
1007
|
+
click_button 'Create'
|
1008
|
+
page.html.must_include 'Created Artist'
|
1009
|
+
page.current_path.must_equal '/Artist/new'
|
1010
|
+
id = Artist.first.id.to_s
|
1011
|
+
|
1012
|
+
click_link 'Show'
|
1013
|
+
page.title.must_equal 'Artist - Show'
|
1014
|
+
click_button 'Show'
|
1015
|
+
select id
|
1016
|
+
click_button 'Show'
|
1017
|
+
|
1018
|
+
click_link 'Edit'
|
1019
|
+
page.title.must_equal 'Artist - Edit'
|
1020
|
+
click_button 'Edit'
|
1021
|
+
select id
|
1022
|
+
click_button 'Edit'
|
1023
|
+
click_button 'Update'
|
1024
|
+
page.html.must_include 'Updated Artist'
|
1025
|
+
page.current_path.must_equal "/Artist/edit/#{id}"
|
1026
|
+
|
1027
|
+
click_link 'Artist'
|
1028
|
+
page.title.must_equal 'Artist - Browse'
|
1029
|
+
page.all('td').map{|s| s.text}.must_equal ["Show", "Edit", "Delete"]
|
1030
|
+
click_link 'CSV Format'
|
1031
|
+
page.body.must_equal "\n\n"
|
1032
|
+
|
1033
|
+
visit("/Artist/browse")
|
1034
|
+
page.all('td').last.find('a').click
|
1035
|
+
click_button 'Delete'
|
1036
|
+
page.title.must_equal 'Artist - Delete'
|
1037
|
+
page.html.must_include 'Deleted Artist'
|
853
1038
|
page.current_path.must_equal '/Artist/delete'
|
854
1039
|
|
855
1040
|
click_link 'Artist'
|