kithe 0.3.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,5 +22,13 @@ FactoryBot.define do
22
22
  end
23
23
  end
24
24
  end
25
+
26
+ # No bytestreams, but a derivative
27
+ trait :faked_derivatives do
28
+ derivatives {[
29
+ Kithe::Derivative.new(key: "one"),
30
+ Kithe::Derivative.new(key: "two")
31
+ ]}
32
+ end
25
33
  end
26
34
  end
@@ -216,13 +216,13 @@ describe "Kithe::Asset promotion hooks", queue_adapter: :inline do
216
216
  it "can set from class attribute" do
217
217
  Kithe::Asset.promotion_directives = { promote: :inline }
218
218
  asset = Kithe::Asset.new
219
- expect(asset.file_attacher.promotion_directives).to eq(promote: :inline)
219
+ expect(asset.file_attacher.promotion_directives).to eq("promote" => "inline")
220
220
  end
221
221
 
222
222
  it "can set from instance writer" do
223
223
  asset = Kithe::Asset.new
224
224
  asset.set_promotion_directives(promote: :inline)
225
- expect(asset.file_attacher.promotion_directives).to eq(promote: :inline)
225
+ expect(asset.file_attacher.promotion_directives).to eq("promote" => "inline")
226
226
  end
227
227
  end
228
228
  end
@@ -192,5 +192,17 @@ RSpec.describe Kithe::Asset, type: :model do
192
192
  expect{ existing_derivative.reload }.to raise_error(ActiveRecord::RecordNotFound)
193
193
  expect(existing_stored_file.exists?).to be(false)
194
194
  end
195
+
196
+ it "allows derivative to be set on un-promoted file though" do
197
+ # mostly needed for testing scenarios, not otherwise expected.
198
+ filepath = Kithe::Engine.root.join("spec/test_support/images/1x1_pixel.jpg")
199
+ asset = Kithe::Asset.new(file: File.open(filepath), title: "test").tap do |a|
200
+ a.file_attacher.set_promotion_directives(skip_callbacks: true)
201
+ end
202
+ asset.derivatives << Kithe::Derivative.new(file: File.open(filepath), key: "test")
203
+ asset.save!
204
+ asset.reload
205
+ expect(asset.derivatives.count).to eq 1
206
+ end
195
207
  end
196
208
  end
@@ -73,5 +73,24 @@ module Kithe
73
73
  end
74
74
  end
75
75
 
76
+ describe "with_representative_derivatives scope" do
77
+ let(:work) {
78
+ FactoryBot.create(:kithe_work, title: "test for preload",
79
+ members: [
80
+ FactoryBot.create(:kithe_work, representative: FactoryBot.create(:kithe_asset, :faked_derivatives)),
81
+ FactoryBot.create(:kithe_asset, :faked_derivatives),
82
+ FactoryBot.create(:kithe_asset, :faked_derivatives)
83
+ ])
84
+ }
85
+ it "pre-loads all representatives and derivatives" do
86
+ members = work.members.with_representative_derivatives.to_a
87
+
88
+ members.each do |member|
89
+ expect(member.association(:leaf_representative)).to be_loaded
90
+ expect(member.leaf_representative.association(:derivatives)).to be_loaded
91
+ end
92
+ end
93
+ end
94
+
76
95
  end
77
96
  end
@@ -216,6 +216,24 @@ describe Kithe::RepeatableInputGenerator, type: :helper do
216
216
  expect(id_values.count).to eq(id_values.uniq.count)
217
217
  end
218
218
 
219
+ describe(:with_html_attributes) do
220
+ let(:generator) do
221
+ generator = nil
222
+ helper.simple_form_for(instance, url: "http://example/target") do |form|
223
+ generator = Kithe::RepeatableInputGenerator.new(form,
224
+ :string_array, nil,
225
+ html_attributes: { data: { foo: "bar" } } )
226
+ end
227
+ generator
228
+ end
229
+
230
+ it "has attributes on input" do
231
+ links = assert_select('input[name="test_work[string_array_attributes][]"]:not([type=hidden])')
232
+ expect(links.all? {|el| el['data-foo'] == "bar"}).to be(true)
233
+ end
234
+
235
+ end
236
+
219
237
  describe "build: :at_least_one" do
220
238
  let(:generator) do
221
239
  generator = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kithe
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Rochkind
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-05-13 00:00:00.000000000 Z
11
+ date: 2019-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -48,16 +48,22 @@ dependencies:
48
48
  name: simple_form
49
49
  requirement: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
51
+ - - ">="
52
52
  - !ruby/object:Gem::Version
53
53
  version: '4.0'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '6.0'
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
- - - "~>"
61
+ - - ">="
59
62
  - !ruby/object:Gem::Version
60
63
  version: '4.0'
64
+ - - "<"
65
+ - !ruby/object:Gem::Version
66
+ version: '6.0'
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: shrine
63
69
  requirement: !ruby/object:Gem::Requirement
@@ -224,6 +230,20 @@ dependencies:
224
230
  - - ">="
225
231
  - !ruby/object:Gem::Version
226
232
  version: '0'
233
+ - !ruby/object:Gem::Dependency
234
+ name: dimensions
235
+ requirement: !ruby/object:Gem::Requirement
236
+ requirements:
237
+ - - ">="
238
+ - !ruby/object:Gem::Version
239
+ version: '0'
240
+ type: :development
241
+ prerelease: false
242
+ version_requirements: !ruby/object:Gem::Requirement
243
+ requirements:
244
+ - - ">="
245
+ - !ruby/object:Gem::Version
246
+ version: '0'
227
247
  - !ruby/object:Gem::Dependency
228
248
  name: pg
229
249
  requirement: !ruby/object:Gem::Requirement
@@ -314,6 +334,7 @@ files:
314
334
  - app/models/kithe/model.rb
315
335
  - app/models/kithe/model_contains.rb
316
336
  - app/models/kithe/parameters.rb
337
+ - app/models/kithe/timing_promotion_directive.rb
317
338
  - app/models/kithe/validators/model_parent.rb
318
339
  - app/models/kithe/work.rb
319
340
  - app/simple_form_enhancements/kithe/form_builder.rb
@@ -433,7 +454,7 @@ files:
433
454
  - spec/test_support/shrine_spec_support.rb
434
455
  - spec/test_support/temporary_class_for_specs.rb
435
456
  - spec/validators/array_inclusion_validator_spec.rb
436
- homepage:
457
+ homepage: https://github.com/sciencehistory/kithe
437
458
  licenses:
438
459
  - MIT
439
460
  metadata: {}
@@ -456,8 +477,7 @@ rubyforge_project:
456
477
  rubygems_version: 2.7.6
457
478
  signing_key:
458
479
  specification_version: 4
459
- summary: An in-progress experiment in shareable tools/components for building a digital
460
- collections app in Rails.
480
+ summary: Shareable tools/components for building a digital collections app in Rails.
461
481
  test_files:
462
482
  - spec/derivative_transformers/ffmpeg_transformer_spec.rb
463
483
  - spec/derivative_transformers/vips_cli_image_to_jpeg_spec.rb