From 84cd8540ab6700ef7bed967ab7ccd0bae9976fd2 Mon Sep 17 00:00:00 2001 From: evazion Date: Wed, 27 May 2020 14:26:52 -0500 Subject: [PATCH] tests: add tests for uploading flash files (#4484). --- test/functional/uploads_controller_test.rb | 42 +++++++++++++++++++--- test/unit/media_file_test.rb | 18 ++++++++++ 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/test/functional/uploads_controller_test.rb b/test/functional/uploads_controller_test.rb index 69ac6dcda..afce76afc 100644 --- a/test/functional/uploads_controller_test.rb +++ b/test/functional/uploads_controller_test.rb @@ -1,6 +1,17 @@ require 'test_helper' class UploadsControllerTest < ActionDispatch::IntegrationTest + def test_file_upload(file_path, user, **upload_params) + file = Rack::Test::UploadedFile.new("#{Rails.root}/#{file_path}") + + assert_difference(["Upload.count", "Post.count"]) do + post_auth uploads_path, user, params: { upload: { file: file, **upload_params }} + assert_redirected_to Upload.last + end + + Upload.last + end + context "The uploads controller" do setup do @user = create(:contributor_user) @@ -239,11 +250,32 @@ class UploadsControllerTest < ActionDispatch::IntegrationTest end end - should "create a new upload" do - assert_difference("Upload.count", 1) do - file = Rack::Test::UploadedFile.new("#{Rails.root}/test/files/test.jpg", "image/jpeg") - post_auth uploads_path, @user, params: {:upload => {:file => file, :tag_string => "aaa", :rating => "q", :source => "aaa"}} - assert_redirected_to Upload.last + context "uploading a file from your computer" do + should "work for a jpeg file" do + upload = test_file_upload("test/files/test.jpg", @user, tag_string: "aaa", rating: "e", source: "aaa") + + assert_equal("jpg", upload.post.file_ext) + assert_equal("aaa", upload.post.source) + assert_equal(500, upload.post.image_width) + assert_equal(335, upload.post.image_height) + end + + should "work for a webm file" do + upload = test_file_upload("test/files/test-512x512.webm", @user, tag_string: "aaa", rating: "e", source: "aaa") + + assert_equal("webm", upload.post.file_ext) + assert_equal("aaa", upload.post.source) + assert_equal(512, upload.post.image_width) + assert_equal(512, upload.post.image_height) + end + + should "work for a flash file" do + upload = test_file_upload("test/files/compressed.swf", @user, tag_string: "aaa", rating: "e", source: "aaa") + + assert_equal("swf", upload.post.file_ext) + assert_equal("aaa", upload.post.source) + assert_equal(607, upload.post.image_width) + assert_equal(756, upload.post.image_height) end end end diff --git a/test/unit/media_file_test.rb b/test/unit/media_file_test.rb index e026f82dc..0565a93a7 100644 --- a/test/unit/media_file_test.rb +++ b/test/unit/media_file_test.rb @@ -36,6 +36,24 @@ class MediaFileTest < ActiveSupport::TestCase should "determine the correct dimensions for a flash file" do assert_equal([607, 756], MediaFile.open("test/files/compressed.swf").dimensions) end + + should "work if called twice" do + mf = MediaFile.open("test/files/test.jpg") + assert_equal([500, 335], mf.dimensions) + assert_equal([500, 335], mf.dimensions) + + mf = MediaFile.open("test/files/test-512x512.webm") + assert_equal([512, 512], mf.dimensions) + assert_equal([512, 512], mf.dimensions) + + mf = MediaFile.open("test/files/valid_ugoira.zip") + assert_equal([60, 60], mf.dimensions) + assert_equal([60, 60], mf.dimensions) + + mf = MediaFile.open("test/files/compressed.swf") + assert_equal([607, 756], mf.dimensions) + assert_equal([607, 756], mf.dimensions) + end end context "#file_ext" do