]> projects.mako.cc - selectricity-live/blob - vendor/plugins/attachment_fu/test/basic_test.rb
User summary method is now more secure. Email change method prtects account SQL injec...
[selectricity-live] / vendor / plugins / attachment_fu / test / basic_test.rb
1 require File.expand_path(File.join(File.dirname(__FILE__), 'test_helper'))
2
3 class BasicTest < Test::Unit::TestCase
4   def test_should_set_default_min_size
5     assert_equal 1, Attachment.attachment_options[:min_size]
6   end
7   
8   def test_should_set_default_max_size
9     assert_equal 1.megabyte, Attachment.attachment_options[:max_size]
10   end
11   
12   def test_should_set_default_size
13     assert_equal (1..1.megabyte), Attachment.attachment_options[:size]
14   end
15   
16   def test_should_set_default_thumbnails_option
17     assert_equal Hash.new, Attachment.attachment_options[:thumbnails]
18   end
19
20   def test_should_set_default_thumbnail_class
21     assert_equal Attachment, Attachment.attachment_options[:thumbnail_class]
22   end
23   
24   def test_should_normalize_content_types_to_array
25     assert_equal %w(pdf), PdfAttachment.attachment_options[:content_type]
26     assert_equal %w(pdf doc txt), DocAttachment.attachment_options[:content_type]
27     assert_equal Technoweenie::AttachmentFu.content_types, ImageAttachment.attachment_options[:content_type]
28     assert_equal ['pdf'] + Technoweenie::AttachmentFu.content_types, ImageOrPdfAttachment.attachment_options[:content_type]
29   end
30   
31   def test_should_sanitize_content_type
32     @attachment = Attachment.new :content_type => ' foo '
33     assert_equal 'foo', @attachment.content_type
34   end
35   
36   def test_should_sanitize_filenames
37     @attachment = Attachment.new :filename => 'blah/foo.bar'
38     assert_equal 'foo.bar',    @attachment.filename
39
40     @attachment.filename = 'blah\\foo.bar'
41     assert_equal 'foo.bar',    @attachment.filename
42
43     @attachment.filename = 'f o!O-.bar'
44     assert_equal 'f_o_O-.bar', @attachment.filename
45     
46     @attachment.filename = 'sheeps_says_bææ'
47     assert_equal 'sheeps_says_b__', @attachment.filename
48
49     @attachment.filename = nil
50     assert_nil @attachment.filename
51   end
52   
53   def test_should_convert_thumbnail_name
54     @attachment = FileAttachment.new :filename => 'foo.bar'
55     assert_equal 'foo.bar',           @attachment.thumbnail_name_for(nil)
56     assert_equal 'foo.bar',           @attachment.thumbnail_name_for('')
57     assert_equal 'foo_blah.bar',      @attachment.thumbnail_name_for(:blah)
58     assert_equal 'foo_blah.blah.bar', @attachment.thumbnail_name_for('blah.blah')
59     
60     @attachment.filename = 'foo.bar.baz'
61     assert_equal 'foo.bar_blah.baz', @attachment.thumbnail_name_for(:blah)
62   end
63   
64   def test_should_require_valid_thumbnails_option
65     klass = Class.new(ActiveRecord::Base)
66     assert_raise ArgumentError do
67       klass.has_attachment :thumbnails => []
68     end
69   end
70 end

Benjamin Mako Hill || Want to submit a patch?