Skip to content

Commit 8a7897d

Browse files
committed
Merge pull request #9 from kirs/test-file-upload
Test file upload
2 parents 4478a31 + 508f1ed commit 8a7897d

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-4
lines changed

test/dummy/app/forms/conference_form.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
class ConferenceForm < ActiveForm::Base
22
attributes :name, :city, required: true
3+
attributes :photo
34

45
association :speaker do
56
attribute :name, :occupation, required: true
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,12 @@
11
class Conference < ActiveRecord::Base
22
has_one :speaker, dependent: :destroy
33
validates :name, uniqueness: true
4+
5+
def photo=(val)
6+
@photo = val.original_filename
7+
end
8+
9+
def photo
10+
@photo
11+
end
412
end

test/dummy/test/fixtures/demo.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
123

test/forms/conference_form_test.rb

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
class 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

Comments
 (0)