record_collection 0.4.4 → 0.4.5
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69468333eb7b36ccfe4e161a27349d8c0c88eb97
|
4
|
+
data.tar.gz: f11c4e74135a921ff668565f2806bd1e21dbd21e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6efdd0029314ff4867e3c894b7bb634fedcdbb23dfc1d8bdcd29531fe429820236ae0d68357074ef6d37770de8ae952f8d7d4266edece99ba9f6a94e4c9e18e6
|
7
|
+
data.tar.gz: a5cff88bcf12c8e0739cac8f94b61981afe9383ff1f5119f519d2d43822041e2c562611b158bea30f8fc43854ae9a0a3d8aa97207e01aac3c49bc3a3228c1397
|
@@ -11,6 +11,7 @@ class ActionView::Helpers::FormBuilder
|
|
11
11
|
# Return inputs for the collection ids
|
12
12
|
def collection_ids
|
13
13
|
@collection_ids_already_added = true
|
14
|
+
return "".html_safe unless object.respond_to?(:map)
|
14
15
|
object.map{|record| @template.hidden_field_tag('ids[]', record.id, id: nil) }.join.html_safe
|
15
16
|
end
|
16
17
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Employee::Collection do
|
4
|
+
subject { described_class.new }
|
5
|
+
|
6
|
+
describe '#one?' do
|
7
|
+
it 'is false without a collection' do
|
8
|
+
expect( subject.one? ).to be false
|
9
|
+
end
|
10
|
+
|
11
|
+
it 'is true with exactly one record' do
|
12
|
+
expect( described_class.new([Object.new]).one? ).to be true
|
13
|
+
end
|
14
|
+
|
15
|
+
it 'is false with more than one records' do
|
16
|
+
expect( described_class.new([Object.new, Object.new]).one? ).to be false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe '#first and #last' do
|
21
|
+
it 'returns the first and last object of the collection' do
|
22
|
+
o1 = Object.new
|
23
|
+
o2 = Object.new
|
24
|
+
expect( described_class.new([o1, o2]).first ).to be o1
|
25
|
+
expect( described_class.new([o1, o2]).last ).to be o2
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'form representation' do
|
30
|
+
it 'has prefix collection for all types in forms' do
|
31
|
+
expect( described_class.model_name.param_key ).to eq 'collection'
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
describe '#uniform_collection_attribute' do
|
36
|
+
let(:collection_class){ described_class }
|
37
|
+
describe 'boolean attribute' do
|
38
|
+
let(:record) { Struct.new(:admin) }
|
39
|
+
|
40
|
+
it 'returns false for mixed falsy boolean values' do
|
41
|
+
expect( collection_class.new([record.new, record.new(false)]).uniform_collection_attribute(:admin)).to be false
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'returns nil for mixes boolean values' do
|
45
|
+
expect( collection_class.new([record.new, record.new(true)]).uniform_collection_attribute(:admin)).to be nil
|
46
|
+
end
|
47
|
+
|
48
|
+
it 'returns true for all truthy values' do
|
49
|
+
expect( collection_class.new([record.new(true), record.new(true)]).uniform_collection_attribute(:admin)).to be true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'untyped attribute' do
|
54
|
+
let(:record) { Struct.new(:section) }
|
55
|
+
it 'returns nil for mixed values truthy and falsy' do
|
56
|
+
collection = collection_class.new([record.new, record.new('NT2')])
|
57
|
+
expect( collection.uniform_collection_attribute :section ).to be nil
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'returns nil for mixed truthy values' do
|
61
|
+
collection = collection_class.new([record.new('NT1'), record.new('NT2')])
|
62
|
+
expect( collection.uniform_collection_attribute :section ).to be nil
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'returns the value for all the same values, but does not set the value' do
|
66
|
+
collection = collection_class.new([record.new('NT2'), record.new('NT2')])
|
67
|
+
expect( collection.uniform_collection_attribute :section ).to eq 'NT2'
|
68
|
+
expect( collection.section ).to be nil
|
69
|
+
end
|
70
|
+
|
71
|
+
it 'returns the value for all the same values, and sets the value if set_if_nil is given' do
|
72
|
+
collection = collection_class.new([record.new('NT2'), record.new('NT2')])
|
73
|
+
expect( collection.uniform_collection_attribute :section, set_if_nil: true ).to eq 'NT2'
|
74
|
+
expect( collection.section ).to eq 'NT2'
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'returns the value for all the same values, and does not set the value if set_if_nil is given, but already set (eg: by invalid form)' do
|
78
|
+
collection = collection_class.new([record.new('NT2'), record.new('NT2')], section: 'Invalid set form value')
|
79
|
+
expect( collection.uniform_collection_attribute :section, set_if_nil: true ).to eq 'NT2'
|
80
|
+
expect( collection.section ).to eq 'Invalid set form value'
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe 'Validations' do
|
4
|
+
let(:collection_class) { Employee::Collection }
|
4
5
|
describe 'conditional validations' do
|
5
6
|
let(:record_class){ Employee }
|
6
|
-
let(:collection_class) { Employee::Collection }
|
7
7
|
it 'is valid without attribute present' do
|
8
8
|
collection_class.new([]).should be_valid
|
9
9
|
end
|
@@ -15,5 +15,12 @@ RSpec.describe 'Validations' do
|
|
15
15
|
it 'is invalid with invalid section attribute' do
|
16
16
|
collection_class.new([], section: 'SECTION3').should be_invalid
|
17
17
|
end
|
18
|
+
describe '#save' do
|
19
|
+
it 'does not trigger update_collection_attributes! for invalid collection' do
|
20
|
+
collection = collection_class.new [], section: 'INVALID_SECTION_NAME'
|
21
|
+
collection.should_not receive :update_collection_attributes!
|
22
|
+
collection.save
|
23
|
+
end
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe ActionView::Helpers::FormBuilder do
|
4
|
+
let(:employee){ Employee.create section: 'SE1' }
|
5
|
+
subject{ described_class.new :collection, Employee::Collection.new([employee]), @template, {}}
|
6
|
+
before do
|
7
|
+
# http://pivotallabs.com/testing-custom-form-builder/
|
8
|
+
@template = Object.new
|
9
|
+
@template.extend ActionView::Helpers::FormTagHelper
|
10
|
+
@template.extend ActionView::Helpers::FormOptionsHelper
|
11
|
+
@template.extend ActionView::Helpers::FormHelper
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '.collection_ids' do
|
15
|
+
it 'returns the collection ids as hidden fields' do
|
16
|
+
subject.collection_ids.should eq %{<input type="hidden" name="ids[]" value="#{employee.id}" />}
|
17
|
+
end
|
18
|
+
|
19
|
+
it "does not raise when the object is not a collection object" do
|
20
|
+
form_builder = described_class.new :employee, employee, @template, {}
|
21
|
+
expect{ form_builder.collection_ids }.not_to raise_error
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: record_collection
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin ter Kuile
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -307,6 +307,7 @@ files:
|
|
307
307
|
- lib/record_collection/rails/routes.rb
|
308
308
|
- lib/record_collection/version.rb
|
309
309
|
- record_collection.gemspec
|
310
|
+
- spec/base/delegation_spec.rb
|
310
311
|
- spec/base/finding_records_spec.rb
|
311
312
|
- spec/base/validations_spec.rb
|
312
313
|
- spec/dummy/README.rdoc
|
@@ -375,6 +376,7 @@ files:
|
|
375
376
|
- spec/features/multi_select_spec.rb
|
376
377
|
- spec/features/translations_spec.rb
|
377
378
|
- spec/fixtures/collections.rb
|
379
|
+
- spec/rails/form_builder_spec.rb
|
378
380
|
- spec/record_selection/base_spec.rb
|
379
381
|
- spec/spec_helper.rb
|
380
382
|
homepage: https://github.com/bterkuile/record_collection
|
@@ -402,6 +404,7 @@ signing_key:
|
|
402
404
|
specification_version: 4
|
403
405
|
summary: Manage collections of records in Ruby on Rails
|
404
406
|
test_files:
|
407
|
+
- spec/base/delegation_spec.rb
|
405
408
|
- spec/base/finding_records_spec.rb
|
406
409
|
- spec/base/validations_spec.rb
|
407
410
|
- spec/dummy/README.rdoc
|
@@ -470,6 +473,7 @@ test_files:
|
|
470
473
|
- spec/features/multi_select_spec.rb
|
471
474
|
- spec/features/translations_spec.rb
|
472
475
|
- spec/fixtures/collections.rb
|
476
|
+
- spec/rails/form_builder_spec.rb
|
473
477
|
- spec/record_selection/base_spec.rb
|
474
478
|
- spec/spec_helper.rb
|
475
479
|
has_rdoc:
|