22
33class ConferenceFormTest < ActiveSupport ::TestCase
44 include ActiveModel ::Lint ::Tests
5+ include ActionDispatch ::TestProcess
6+
57 fixtures :conferences , :speakers , :presentations
68
79 def setup
@@ -48,7 +50,7 @@ def setup
4850
4951 assert_respond_to presentations_form , :models
5052 assert_equal 2 , presentations_form . models . size
51-
53+
5254 presentations_form . each do |form |
5355 assert_instance_of ActiveForm ::Form , form
5456 assert_instance_of Presentation , form . model
@@ -309,7 +311,7 @@ def setup
309311 assert_equal "Rails OOP" , form . speaker . presentations [ 1 ] . topic
310312 assert_equal "1h" , form . speaker . presentations [ 1 ] . duration
311313 assert_equal 2 , form . speaker . presentations . size
312-
314+
313315 assert form . persisted?
314316 end
315317
@@ -349,7 +351,7 @@ def setup
349351 assert_equal "Rails Migrations" , form . speaker . presentations [ 2 ] . topic
350352 assert_equal "1h" , form . speaker . presentations [ 2 ] . duration
351353 assert_equal 3 , form . speaker . presentations . size
352-
354+
353355 assert form . persisted?
354356 end
355357
@@ -441,4 +443,29 @@ def setup
441443 test "speaker sub-form responds to writer method" do
442444 assert_respond_to @form . speaker , :presentations_attributes=
443445 end
444- end
446+
447+ test "accepts file" do
448+ file = fixture_file_upload ( "demo.txt" , "text/plain" )
449+
450+ params = {
451+ name : "GoGaruco" ,
452+ city : "Golden State" ,
453+ photo : file ,
454+
455+ speaker_attributes : {
456+ name : "John Doe" ,
457+ occupation : "Developer" ,
458+
459+ presentations_attributes : {
460+ "0" => { topic : "Rails OOP" , duration : "1h" , id : presentations ( :ruby_oop ) . id } ,
461+ "1" => { topic : "Rails Patterns" , duration : "1h" , id : presentations ( :ruby_closures ) . id }
462+ }
463+ }
464+ }
465+
466+ @form . submit ( params )
467+
468+ assert @form . valid?
469+ assert_equal @form . photo , "demo.txt"
470+ end
471+ end
0 commit comments