citrusbyte-milton 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/MIT-LICENSE +20 -0
- data/README.markdown +354 -0
- data/Rakefile +9 -0
- data/init.rb +1 -0
- data/lib/milton/attachment.rb +203 -0
- data/lib/milton/core/file.rb +22 -0
- data/lib/milton/core/tempfile.rb +38 -0
- data/lib/milton/derivatives/derivative.rb +95 -0
- data/lib/milton/derivatives/thumbnail/crop_calculator.rb +64 -0
- data/lib/milton/derivatives/thumbnail/image.rb +49 -0
- data/lib/milton/derivatives/thumbnail.rb +46 -0
- data/lib/milton/storage/disk_file.rb +78 -0
- data/lib/milton/storage/s3_file.rb +89 -0
- data/lib/milton/storage/stored_file.rb +47 -0
- data/lib/milton/uploading.rb +82 -0
- data/lib/milton.rb +95 -0
- data/test/fixtures/big-milton.jpg +0 -0
- data/test/fixtures/milton.jpg +0 -0
- data/test/fixtures/mini-milton.jpg +0 -0
- data/test/fixtures/unsanitary .milton.jpg +0 -0
- data/test/milton/attachment_test.rb +329 -0
- data/test/milton/milton_test.rb +13 -0
- data/test/milton/resizing_test.rb +70 -0
- data/test/schema.rb +13 -0
- data/test/test_helper.rb +62 -0
- metadata +31 -7
@@ -0,0 +1,13 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class MiltonTest < ActiveSupport::TestCase
|
4
|
+
context "running a syscall" do
|
5
|
+
should "return false on failure" do
|
6
|
+
assert !Milton.syscall('ls this_directory_definitely_doesnt_exist')
|
7
|
+
end
|
8
|
+
|
9
|
+
should "return output on success" do
|
10
|
+
assert_equal "foo\n", Milton.syscall("echo foo")
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../test_helper'
|
2
|
+
|
3
|
+
class ResizingTest < ActiveSupport::TestCase
|
4
|
+
context "processing thumbnails on create" do
|
5
|
+
context "with recipes" do
|
6
|
+
class ImageWithRecipes < Image
|
7
|
+
is_attachment(
|
8
|
+
:storage_options => { :root => ActiveSupport::TestCase.output_path },
|
9
|
+
:recipes => {
|
10
|
+
:foo => [{ :thumbnail => { :size => '50x50', :crop => true } }],
|
11
|
+
:bar => [{ :thumbnail => { :size => '10x10' } }],
|
12
|
+
:baz => [{ :thumbnail => { :size => '50x50' } }, { :thumbnail => { :size => '25x25', :crop => true } }],
|
13
|
+
}
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
setup do
|
18
|
+
@image = ImageWithRecipes.create! :file => upload('milton.jpg')
|
19
|
+
end
|
20
|
+
|
21
|
+
should "recognize options from :foo recipe" do
|
22
|
+
assert_equal 'milton.crop_size=50x50.jpg', File.basename(@image.path(:foo))
|
23
|
+
end
|
24
|
+
|
25
|
+
should "create :foo thumbnail" do
|
26
|
+
assert File.exists?(@image.path(:foo))
|
27
|
+
end
|
28
|
+
|
29
|
+
should "create :bar thumbnail" do
|
30
|
+
assert File.exists?(@image.path(:bar))
|
31
|
+
end
|
32
|
+
|
33
|
+
should "run :baz recipes in order" do
|
34
|
+
assert_equal 'milton.size=50x50.crop_size=25x25.jpg', File.basename(@image.path(:baz))
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "without sizes" do
|
39
|
+
setup do
|
40
|
+
@image = Image.create! :file => upload('milton.jpg')
|
41
|
+
end
|
42
|
+
|
43
|
+
should "not create a 50x50 thumbnail" do
|
44
|
+
assert !File.exists?(@image.path(:thumbnail => { :size => '50x50' }))
|
45
|
+
end
|
46
|
+
|
47
|
+
should "happily return path to non-existant 50x50 thumbnail" do
|
48
|
+
assert_equal 'milton.size=50x50.jpg', File.basename(@image.path(:thumbnail => { :size => '50x50' }))
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
context "with postprocessing" do
|
53
|
+
class ImageWithPostprocessing < Image
|
54
|
+
is_attachment :storage_options => { :root => ActiveSupport::TestCase.output_path }, :postprocessing => true
|
55
|
+
end
|
56
|
+
|
57
|
+
setup do
|
58
|
+
@image = ImageWithPostprocessing.create! :file => upload('milton.jpg')
|
59
|
+
end
|
60
|
+
|
61
|
+
should "create a 50x50 thumbnail" do
|
62
|
+
assert File.exists?(@image.path(:thumbnail => { :size => '50x50' }))
|
63
|
+
end
|
64
|
+
|
65
|
+
should "create a cropped 50x50 thumbnail" do
|
66
|
+
assert File.exists?(@image.path(:thumbnail => { :size => '50x50', :crop => true }))
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/test/schema.rb
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
ActiveRecord::Schema.define :version => 0 do
|
2
|
+
create_table :attachments, :force => true do |t|
|
3
|
+
t.string :filename
|
4
|
+
end
|
5
|
+
|
6
|
+
create_table :images, :force => true do |t|
|
7
|
+
t.string :filename
|
8
|
+
t.string :content_type
|
9
|
+
end
|
10
|
+
|
11
|
+
create_table :not_uploadables, :force => true do |t|
|
12
|
+
end
|
13
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../test/test_helper'
|
2
|
+
puts "\nWARNING: The tests require a Rails environment, try running them from within a Rails application.\n\n" unless defined?(Rails)
|
3
|
+
puts "\nWARNING: The tests require Contest or Shoulda gem loaded in your Rails environment\n\n" unless ActiveSupport::TestCase.respond_to?(:context)
|
4
|
+
unless %w( ActiveRecord::ConnectionAdapters::PostgreSQLAdapter ActiveRecord::ConnectionAdapters::MysqlAdapter ).include?(ActiveRecord::Base.connection.class.to_s)
|
5
|
+
puts "\nWARNING: The tests will fail using any adapter other than PostgreSQL or MySQL because they depend on a proper transaction rollback that retains the current sequence, Milton itself will still work however.\n\n"
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'flexmock/test_unit'
|
9
|
+
require 'redgreen' rescue LoadError
|
10
|
+
|
11
|
+
Rails.backtrace_cleaner.remove_silencers!
|
12
|
+
Rails.backtrace_cleaner.add_silencer do |line|
|
13
|
+
(%w( /opt /var lib/active_support lib/active_record vendor/gems vendor/rails )).any? { |dir| line.include?(dir) }
|
14
|
+
end
|
15
|
+
|
16
|
+
$: << File.expand_path(File.dirname(__FILE__) + '/..')
|
17
|
+
|
18
|
+
load(File.dirname(__FILE__) + '/schema.rb')
|
19
|
+
|
20
|
+
class ActiveSupport::TestCase
|
21
|
+
self.use_transactional_fixtures = true
|
22
|
+
self.use_instantiated_fixtures = false
|
23
|
+
ActiveSupport::TestCase.fixture_path = File.join(File.dirname(__FILE__), 'fixtures/')
|
24
|
+
|
25
|
+
@@output_path = File.expand_path(File.join(File.dirname(__FILE__), 'output'))
|
26
|
+
cattr_reader :output_path
|
27
|
+
def output_path;ActiveSupport::TestCase.output_path;end;
|
28
|
+
|
29
|
+
# remove files created from previous test run, happens before instead of
|
30
|
+
# after so you can view them after you run the tests
|
31
|
+
FileUtils.rm_rf(output_path)
|
32
|
+
|
33
|
+
def upload(file, type='image/jpg')
|
34
|
+
ActionController::TestUploadedFile.new(fixture_file(file), type)
|
35
|
+
end
|
36
|
+
|
37
|
+
def fixture_file(file)
|
38
|
+
ActionController::TestCase.fixture_path + file
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
module ActiveSupport::Testing::Declarative
|
43
|
+
def pending_test(name, &block)
|
44
|
+
test(name) do
|
45
|
+
puts "\nPENDING: #{name} (in #{eval('"#{__FILE__}:#{__LINE__}"', block.binding)})"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
class Attachment < ActiveRecord::Base
|
51
|
+
is_attachment :storage_options => { :root => ActiveSupport::TestCase.output_path }
|
52
|
+
end
|
53
|
+
|
54
|
+
class Image < ActiveRecord::Base
|
55
|
+
is_attachment :storage_options => { :root => ActiveSupport::TestCase.output_path }, :processors => { :thumbnail => { :postprocessing => true } }
|
56
|
+
end
|
57
|
+
|
58
|
+
class Net::HTTP
|
59
|
+
def connect
|
60
|
+
raise "Trying to hit the interwebz!!!"
|
61
|
+
end
|
62
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: citrusbyte-milton
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ben Alavi
|
@@ -9,11 +9,11 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2009-06-16 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
16
|
-
description:
|
16
|
+
description: Rails file and upload handling plugin built for extensibility. Supports Amazon S3 and resizes images.
|
17
17
|
email: ben.alavi@citrusbyte.com
|
18
18
|
executables: []
|
19
19
|
|
@@ -21,9 +21,33 @@ extensions: []
|
|
21
21
|
|
22
22
|
extra_rdoc_files: []
|
23
23
|
|
24
|
-
files:
|
25
|
-
|
26
|
-
|
24
|
+
files:
|
25
|
+
- README.markdown
|
26
|
+
- MIT-LICENSE
|
27
|
+
- Rakefile
|
28
|
+
- init.rb
|
29
|
+
- lib/milton/attachment.rb
|
30
|
+
- lib/milton/core/file.rb
|
31
|
+
- lib/milton/core/tempfile.rb
|
32
|
+
- lib/milton/derivatives/derivative.rb
|
33
|
+
- lib/milton/derivatives/thumbnail/crop_calculator.rb
|
34
|
+
- lib/milton/derivatives/thumbnail/image.rb
|
35
|
+
- lib/milton/derivatives/thumbnail.rb
|
36
|
+
- lib/milton/storage/disk_file.rb
|
37
|
+
- lib/milton/storage/s3_file.rb
|
38
|
+
- lib/milton/storage/stored_file.rb
|
39
|
+
- lib/milton/uploading.rb
|
40
|
+
- lib/milton.rb
|
41
|
+
- test/fixtures/big-milton.jpg
|
42
|
+
- test/fixtures/milton.jpg
|
43
|
+
- test/fixtures/mini-milton.jpg
|
44
|
+
- test/fixtures/unsanitary .milton.jpg
|
45
|
+
- test/milton/attachment_test.rb
|
46
|
+
- test/milton/milton_test.rb
|
47
|
+
- test/milton/resizing_test.rb
|
48
|
+
- test/schema.rb
|
49
|
+
- test/test_helper.rb
|
50
|
+
has_rdoc: false
|
27
51
|
homepage: http://labs.citrusbyte.com/projects/milton
|
28
52
|
post_install_message:
|
29
53
|
rdoc_options: []
|
@@ -44,7 +68,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
44
68
|
version:
|
45
69
|
requirements: []
|
46
70
|
|
47
|
-
rubyforge_project:
|
71
|
+
rubyforge_project: milton
|
48
72
|
rubygems_version: 1.2.0
|
49
73
|
signing_key:
|
50
74
|
specification_version: 2
|