uploadcare-rails 1.1.0 → 1.1.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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/config/initializers/uploadcare.rb +4 -4
  3. data/lib/uploadcare-rails.rb +7 -4
  4. data/lib/uploadcare/rails/action_view/include_tags.rb +1 -1
  5. data/lib/uploadcare/rails/active_record/has_file.rb +3 -3
  6. data/lib/uploadcare/rails/active_record/has_group.rb +3 -3
  7. data/lib/uploadcare/rails/formtastic/formtastic.rb +14 -0
  8. data/lib/uploadcare/rails/settings.rb +4 -5
  9. data/lib/uploadcare/rails/version.rb +1 -1
  10. data/spec/cassettes/Uploadcare_Rails_File/should_load_itself.yml +107 -0
  11. data/spec/cassettes/Uploadcare_Rails_Group/group_should_stay_loaded.yml +107 -0
  12. data/spec/cassettes/Uploadcare_Rails_Group/rails_cache_should_updates_after_load_call.yml +107 -0
  13. data/spec/cassettes/group_cahsing_file_load.yml +107 -0
  14. data/spec/cassettes/has_uploadcare_file/object_with_uploadcare_file/deletes_file_after_destroy.yml +1283 -0
  15. data/spec/cassettes/has_uploadcare_file/object_with_uploadcare_file/stores_file_after_save.yml +381 -0
  16. data/spec/cassettes/has_uploadcare_group/object_attachment/contains_files_inside.yml +523 -0
  17. data/spec/cassettes/has_uploadcare_group_save.yml +543 -0
  18. data/spec/cassettes/load_group.yml +107 -0
  19. data/spec/dummy/db/migrate/20171012001801_create_tables.rb +27 -0
  20. data/spec/dummy/db/schema.rb +14 -15
  21. data/spec/dummy/db/test.sqlite3 +0 -0
  22. data/spec/dummy/log/test.log +2360 -0
  23. data/spec/dummy/tmp/cache/2AF/761/https%3A%2F%2Fucarecdn.com%2F595319d0-a113-459f-91bd-b29c7183467b%2F +0 -0
  24. data/spec/dummy/tmp/cache/301/D41/https%3A%2F%2Fucarecdn.com%2F81332043-fa2c-452f-936b-737d87ab2ae2%2F +0 -0
  25. data/spec/dummy/tmp/cache/30A/7C1/https%3A%2F%2Fucarecdn.com%2F39b34128-a001-46fd-9773-1b6ad46e6b9e%2F +0 -0
  26. data/spec/dummy/tmp/cache/340/A41/https%3A%2F%2Fucarecdn.com%2F090bcb5f-6d19-456c-b4a3-d753e690926f%2F +0 -0
  27. data/spec/dummy/tmp/cache/3AB/5A1/https%3A%2F%2Fucarecdn.com%2F7eb0161b-cebe-4316-946b-694de6f77ef9%2F +0 -0
  28. data/spec/dummy/tmp/cache/3FC/5C1/https%3A%2F%2Fucarecdn.com%2Fc3f0464b-ce9a-4281-8eaa-5c55783ccedf%2F +0 -0
  29. data/spec/dummy/tmp/cache/431/5C1/https%3A%2F%2Fucarecdn.com%2Fa1b1bb40-bd89-4f9c-b809-e84920f24a01%7E2%2F +0 -0
  30. data/spec/dummy/tmp/cache/44B/7A1/https%3A%2F%2Fucarecdn.com%2Fd6c785a8-9761-4602-88de-65ddb04ddc6a%7E2%2F +0 -0
  31. data/spec/generators/uploadcare_config_generator_spec.rb +39 -0
  32. data/spec/helpers/form_helpers_has_file_spec.rb +5 -5
  33. data/spec/helpers/form_helpers_has_group_spec.rb +6 -6
  34. data/spec/helpers/form_helpers_spec.rb +5 -5
  35. data/spec/helpers/formtastic_spec.rb +19 -26
  36. data/spec/helpers/include_tags_spec.rb +7 -7
  37. data/spec/helpers/simple_form_spec.rb +19 -27
  38. data/spec/helpers/uploader_tags_spec.rb +11 -5
  39. data/spec/objects/group_spec.rb +4 -4
  40. data/spec/support/generators.rb +38 -0
  41. data/spec/tmp/config/uploadcare.yml +71 -0
  42. data/spec/uploadcare/rails/settings_spec.rb +136 -0
  43. metadata +254 -198
  44. data/spec/dummy/db/migrate/20131119080328_create_posts.rb +0 -10
  45. data/spec/dummy/db/migrate/20131220083857_create_post_with_collections.rb +0 -10
  46. data/spec/dummy/db/migrate/20140320092807_create_posts_with_collection_and_files.rb +0 -10
@@ -0,0 +1,39 @@
1
+ require 'yaml'
2
+ require_relative '../support/generators'
3
+ require 'generators/uploadcare_config_generator'
4
+
5
+ RSpec.describe UploadcareConfigGenerator, :type => :generator do
6
+ destination File.expand_path('../tmp', __dir__)
7
+ let(:config_file_path) { 'spec/tmp/config/uploadcare.yml' }
8
+ let(:defaults) do
9
+ {
10
+ "public_key"=>"demopublickey",
11
+ "private_key"=>"demoprivatekey",
12
+ "live"=>true, "cache_files"=>true,
13
+ "cache_groups"=>true,
14
+ "store_after_save"=>true,
15
+ "delete_after_destroy"=>true,
16
+ }
17
+ end
18
+
19
+ before do
20
+ prepare_destination
21
+ expect(File.exists?(config_file_path)).to be(false)
22
+ run_generator
23
+ end
24
+
25
+ it "generates config/uploadcare.yml" do
26
+ expect(File.exists?(config_file_path)).to be(true)
27
+ end
28
+
29
+ it "config/uploadcare.yml contains default config" do
30
+ expect(YAML.load_file(config_file_path)).to eq(
31
+ "defaults" => defaults,
32
+ "development" => defaults,
33
+ "production" => defaults,
34
+ "test" => defaults,
35
+ )
36
+ end
37
+ end
38
+
39
+
@@ -10,21 +10,21 @@ describe Uploadcare::Rails::ActionView::FormBuilder, type: :helper do
10
10
  # not that post has uc file
11
11
  tag = @form.uploadcare_field :file
12
12
  tag.should be_kind_of(String)
13
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "false")
13
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="false"]', visible: :all)
14
14
  end
15
15
 
16
16
  it "should override uploadcare- attribute" do
17
17
  tag = @form.uploadcare_field :file, :uploadcare => {:multiple => true}
18
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "false")
18
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="false"]', visible: :all)
19
19
  end
20
20
 
21
21
  it "should override data- attribute" do
22
22
  tag = @form.uploadcare_field :file, :data => {:multiple => true}
23
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "false")
23
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="false"]', visible: :all)
24
24
  end
25
25
 
26
26
  it "should override data- and uploadcare- attributes" do
27
27
  tag = @form.uploadcare_field :file, :data => {:multiple => true}, :uploadcare => {:multiple => true}
28
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "false")
28
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="false"]', visible: :all)
29
29
  end
30
- end
30
+ end
@@ -9,22 +9,22 @@ describe Uploadcare::Rails::ActionView::FormBuilder, type: :helper do
9
9
  it "should include uploader tag for name" do
10
10
  # not that post has uc file
11
11
  tag = @form.uploadcare_field :file
12
- tag.should be_kind_of(String)
13
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "true")
12
+ expect(tag).to be_kind_of(String)
13
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="true"]', visible: :all)
14
14
  end
15
15
 
16
16
  it "should override uploadcare- attribute" do
17
17
  tag = @form.uploadcare_field :file, :uploadcare => {:multiple => false}
18
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "true")
18
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="true"]', visible: :all)
19
19
  end
20
20
 
21
21
  it "should override data- attribute" do
22
22
  tag = @form.uploadcare_field :file, :data => {:multiple => false}
23
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "true")
23
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="true"]', visible: :all)
24
24
  end
25
25
 
26
26
  it "should override data- and uploadcare- attributes" do
27
27
  tag = @form.uploadcare_field :file, :data => {:multiple => false}, :uploadcare => {:multiple => false}
28
- tag.should have_selector("input", :type => "hidden", "data-multiple" => "true")
28
+ expect(tag).to have_selector('input[type="hidden"][data-multiple="true"]', visible: :all)
29
29
  end
30
- end
30
+ end
@@ -13,21 +13,21 @@ describe Uploadcare::Rails::ActionView::FormBuilder, type: :helper do
13
13
 
14
14
  it "should have role attr" do
15
15
  tag = @form.uploadcare_field :file, :uploadcare => {:multiple => true}
16
- tag.should have_selector("input", :role => "uploadcare-uploader")
16
+ expect(tag).to have_selector('input[role="uploadcare-uploader"]', visible: :all)
17
17
  end
18
18
 
19
19
  it "should have custom data-attributes" do
20
20
  tag = @form.uploadcare_field :file, :data => {:custom => true}
21
- tag.should have_selector("input", "data-custom" => "true")
21
+ expect(tag).to have_selector('input[data-custom="true"]', visible: :all)
22
22
  end
23
23
 
24
24
  it "should have uploadcare namespace translated into data- attributes" do
25
25
  tag = @form.uploadcare_field :file, :uploadcare => {:custom => true}
26
- tag.should have_selector("input", "data-custom" => "true")
26
+ expect(tag).to have_selector('input[data-custom="true"]', visible: :all)
27
27
  end
28
28
 
29
29
  it "should override data namespace with uploadcare namespace" do
30
30
  tag = @form.uploadcare_field :file, :uploadcare => {:custom => true}, :data => {:custom => false}
31
- tag.should have_selector(:input, "data-custom" => "true")
31
+ expect(tag).to have_selector('input[data-custom="true"]', visible: :all)
32
32
  end
33
- end
33
+ end
@@ -1,32 +1,25 @@
1
1
  require "spec_helper"
2
2
 
3
- begin
4
- req = require 'formtastic'
5
- rescue Exception => e
6
- req = nil
7
- end
8
-
9
- if req
10
- require 'uploadcare/rails/formtastic/formtastic'
11
- describe "Uploadcare::Rails::Formtastic", type: :helper do
12
- before :each do
13
- @post = Post.new
14
- @form = Formtastic::FormBuilder.new(:post, @post, helper, {})
15
- end
3
+ describe "Uploadcare::Rails::Formtastic", type: :helper do
4
+ before :each do
5
+ @post = Post.new
6
+ @form = Formtastic::FormBuilder.new(:post, @post, helper, {})
7
+ end
16
8
 
17
- it 'should create smart uploader field' do
18
- tag = @form.input :file, as: :uploadcare_uploader
19
- tag.should have_selector("input", :role => "uploadcare-uploader")
20
- end
9
+ it 'should create smart uploader field' do
10
+ tag = @form.input :file, as: :uploadcare_uploader
11
+ expect(tag).to have_selector('input[role="uploadcare-uploader"]', visible: :all)
12
+ end
21
13
 
22
- it 'should create single uploader field' do
23
- tag = @form.input :file, as: :uploadcare_single_uploader
24
- tag.should have_selector("input", :role => "uploadcare-uploader", "data-multiple" => "false")
25
- end
14
+ it 'should create single uploader field' do
15
+ tag = @form.input :file, as: :uploadcare_single_uploader
16
+ expect(tag)
17
+ .to have_selector('input[role="uploadcare-uploader"][data-multiple="false"]', visible: :all)
18
+ end
26
19
 
27
- it 'should create multiple uploader field' do
28
- tag = @form.input :file, as: :uploadcare_multiple_uploader
29
- tag.should have_selector("input", :role => "uploadcare-uploader", "data-multiple" => "true")
30
- end
20
+ it 'should create multiple uploader field' do
21
+ tag = @form.input :file, as: :uploadcare_multiple_uploader
22
+ expect(tag)
23
+ .to have_selector('input[role="uploadcare-uploader"][data-multiple="true"]', visible: :all)
31
24
  end
32
- end
25
+ end
@@ -6,9 +6,9 @@ describe Uploadcare::Rails do
6
6
 
7
7
  expect(tag).to eq(
8
8
  [
9
- "<script src=\"https://ucarecdn.com/widget/",
9
+ "<script src=\"https://ucarecdn.com/libs/widget/",
10
10
  UPLOADCARE_SETTINGS.widget_version,
11
- '/uploadcare/uploadcare.min.js"></script>'
11
+ '/uploadcare.min.js"></script>'
12
12
  ].join
13
13
  )
14
14
  end
@@ -20,8 +20,8 @@ describe Uploadcare::Rails do
20
20
  tag = helper.include_uploadcare_widget_from_cdn(version: version)
21
21
 
22
22
  expect(tag).to eq(
23
- "<script src=\"https://ucarecdn.com/widget/#{ version }/"\
24
- 'uploadcare/uploadcare.min.js"></script>'
23
+ "<script src=\"https://ucarecdn.com/libs/widget/#{ version }/"\
24
+ 'uploadcare.min.js"></script>'
25
25
  )
26
26
  end
27
27
 
@@ -30,8 +30,8 @@ describe Uploadcare::Rails do
30
30
  helper.include_uploadcare_widget_from_cdn(version: version, min: false)
31
31
 
32
32
  expect(tag).to eq(
33
- "<script src=\"https://ucarecdn.com/widget/#{ version }/"\
34
- 'uploadcare/uploadcare.js"></script>'
33
+ "<script src=\"https://ucarecdn.com/libs/widget/#{ version }/"\
34
+ 'uploadcare.js"></script>'
35
35
  )
36
36
  end
37
37
  end
@@ -47,7 +47,7 @@ describe Uploadcare::Rails do
47
47
  UPLOADCARE_TABS UPLOADCARE_AUTOSTORE
48
48
  UPLOADCARE_MANUAL_START UPLOADCARE_PATH_VALUE).each do |content|
49
49
  it 'contains expected selector' do
50
- is_expected.to have_selector('script', content: content)
50
+ is_expected.to have_xpath("//script[text()[contains(.,'UPLOADCARE')]]", visible: :all)
51
51
  end
52
52
  end
53
53
  end
@@ -1,33 +1,25 @@
1
1
  require "spec_helper"
2
2
 
3
- begin
4
- req = require 'simple_form'
5
- rescue Exception => e
6
- req = nil
7
- end
8
-
9
- if req
10
- require 'uploadcare/rails/simple_form/simple_form'
11
-
12
- describe "Uploadcare::Rails::SimpleForm", type: :helper do
13
- before :each do
14
- @post = Post.new
15
- @form = SimpleForm::FormBuilder.new(:post, @post, helper, {})
16
- end
3
+ describe "Uploadcare::Rails::SimpleForm", type: :helper do
4
+ before :each do
5
+ @post = Post.new
6
+ @form = SimpleForm::FormBuilder.new(:post, @post, helper, {})
7
+ end
17
8
 
18
- it 'should create smart uploader field' do
19
- tag = @form.input :file, as: :uploadcare_uploader
20
- tag.should have_selector("input", :role => "uploadcare-uploader")
21
- end
9
+ it 'should create smart uploader field' do
10
+ tag = @form.input :file, as: :uploadcare_uploader
11
+ expect(tag).to have_selector('input[role="uploadcare-uploader"]', visible: :all)
12
+ end
22
13
 
23
- it 'should create single uploader field' do
24
- tag = @form.input :file, as: :uploadcare_single_uploader
25
- tag.should have_selector("input", :role => "uploadcare-uploader", "data-multiple" => "false")
26
- end
14
+ it 'should create single uploader field' do
15
+ tag = @form.input :file, as: :uploadcare_single_uploader
16
+ expect(tag)
17
+ .to have_selector('input[role="uploadcare-uploader"][data-multiple="false"]', visible: :all)
18
+ end
27
19
 
28
- it 'should create multiple uploader field' do
29
- tag = @form.input :file, as: :uploadcare_multiple_uploader
30
- tag.should have_selector("input", :role => "uploadcare-uploader", "data-multiple" => "true")
31
- end
20
+ it 'should create multiple uploader field' do
21
+ tag = @form.input :file, as: :uploadcare_multiple_uploader
22
+ expect(tag)
23
+ .to have_selector('input[role="uploadcare-uploader"][data-multiple="true"]', visible: :all)
32
24
  end
33
- end
25
+ end
@@ -1,15 +1,21 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Uploadcare::Rails::ActionView::UploaderTags do
4
+ let(:expected_selector) do
5
+ 'input[type="hidden"][role="uploadcare-uploader"][data-path-value="true"]'
6
+ end
7
+
4
8
  it "should include uploader tag for name" do
5
9
  tag = helper.uploadcare_uploader_tag :file
6
- tag.should be_kind_of(String)
7
- tag.should have_selector("input", :type =>"hidden", :role =>"uploadcare-uploader", "data-path-value" => "true")
10
+
11
+ expect(tag).to be_kind_of(String)
12
+ expect(tag).to have_selector(expected_selector, visible: :all)
8
13
  end
9
14
 
10
15
  it "should include uploader field for object" do
11
16
  tag = helper.uploadcare_uploader_field :post, :file
12
- tag.should be_kind_of(String)
13
- tag.should have_selector("input", :type =>"hidden", :role =>"uploadcare-uploader", "data-path-value" => "true")
17
+
18
+ expect(tag).to be_kind_of(String)
19
+ expect(tag).to have_selector(expected_selector, visible: :all)
14
20
  end
15
- end
21
+ end
@@ -42,10 +42,10 @@ describe Uploadcare::Rails::Group, :vcr do
42
42
  end
43
43
 
44
44
  it 'builds images url' do
45
- expect(subject.urls(size: '200x200').first).
46
- to eq(
47
- "http://www.ucarecdn.com/#{ subject.uuid }/nth/0/-/resize/200x200/"
48
- )
45
+ allow_any_instance_of(Uploadcare::Api).to receive(:options) { {static_url_base: 'http://example.com'} }
46
+ expected = "http://example.com/#{ subject.uuid }/nth/0/-/resize/200x200/"
47
+
48
+ expect(subject.urls(size: '200x200').first).to eq(expected)
49
49
  end
50
50
  end
51
51
  end
@@ -0,0 +1,38 @@
1
+ require 'rails/generators/test_case'
2
+
3
+ module Uploadcare
4
+ module Rails
5
+ module Generators
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ cattr_accessor :test_case, :test_case_instance
10
+
11
+ self.test_case = Class.new(::Rails::Generators::TestCase) do
12
+ def fake_test_case; end
13
+ def add_assertion; end
14
+ end
15
+ self.test_case_instance = self.test_case.new(:fake_test_case)
16
+ self.test_case.generator_class = described_class
17
+ end
18
+
19
+ def prepare_destination
20
+ self.test_case_instance.send :prepare_destination
21
+ end
22
+
23
+ def run_generator
24
+ self.test_case_instance.run_generator
25
+ end
26
+
27
+ module ClassMethods
28
+ def destination(path)
29
+ self.test_case.destination_root = path
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ RSpec.configure do |c|
37
+ c.include Uploadcare::Rails::Generators, type: :generator
38
+ end
@@ -0,0 +1,71 @@
1
+ defaults: &defaults
2
+ public_key: "demopublickey" # replace it with your public key
3
+ private_key: "demoprivatekey" # replace it with your private key
4
+
5
+ # instances of widget initialized for you on page load
6
+ live: true
7
+
8
+ # cache files json dumps to prevent calling to server if it posible
9
+ cache_files: true
10
+
11
+ # cache groups json dumps to prevent calling to server if it posible
12
+ cache_groups: true
13
+
14
+ # store file or group after model is created or updated
15
+ store_after_save: true
16
+
17
+ # deletes file or group after model object is deleted
18
+ delete_after_destroy: true
19
+
20
+ # Avaliable options are listed at https://uploadcare.com/documentation/widget/#advanced-configuration
21
+ # please note, that for options marker as Global: N/A - there is no practical meaning
22
+ # of putting this option here, as it will not have any effect.
23
+ # But it also will not break anything.
24
+
25
+ # for preview step use:
26
+ # preview_step: false # true or false
27
+
28
+ # for clearable option (allows user to remove uploaded file from widget) use:
29
+ # clearable: false # true or false
30
+
31
+ # for setting tabs use tabs option:
32
+ # tabs: "url file facebook" # etc
33
+ # read more here: https://uploadcare.com/documentation/widget/#tabs
34
+ #
35
+ # Full list of tabs:
36
+ # |----------------------------------------|
37
+ # | Code | File Source | Default |
38
+ # |------------|-----------------|---------|
39
+ # | url | Any URL | On |
40
+ # | file | Local disk | On |
41
+ # | facebook | Facebook | On |
42
+ # | dropbox | Dropbox | Off |
43
+ # | gdrive | Google Drive | On |
44
+ # | box | Box | On |
45
+ # | skydrive | SkyDrive | On |
46
+ # | instagram | Instagram | On |
47
+ # | evernote | Evernote | On |
48
+ # | vk | VK | Off |
49
+ # |________________________________________|
50
+
51
+ # for locale option use:
52
+ # locale: "en"
53
+
54
+ # for autostore option use:
55
+ # autostore: true #true or false
56
+
57
+ # for manual start (which means you will need to initialize uploaders yourself) use:
58
+ # manual_start: false # true or false
59
+
60
+ # for path value use:
61
+ # path_value: true # true or false
62
+ # (important for input values - see https://uploadcare.com/documentation/widget/#input-value)
63
+
64
+ development:
65
+ <<: *defaults
66
+
67
+ test:
68
+ <<: *defaults
69
+
70
+ production:
71
+ <<: *defaults