sbf-dm-core 1.3.0.beta
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.
- checksums.yaml +7 -0
- data/.autotest +29 -0
- data/.document +5 -0
- data/.gitignore +44 -0
- data/.rspec +1 -0
- data/.rubocop.yml +468 -0
- data/.travis.yml +57 -0
- data/.yardopts +1 -0
- data/Gemfile +70 -0
- data/LICENSE +20 -0
- data/README.md +269 -0
- data/Rakefile +4 -0
- data/dm-core.gemspec +21 -0
- data/lib/dm-core/adapters/abstract_adapter.rb +233 -0
- data/lib/dm-core/adapters/in_memory_adapter.rb +110 -0
- data/lib/dm-core/adapters.rb +249 -0
- data/lib/dm-core/associations/many_to_many.rb +477 -0
- data/lib/dm-core/associations/many_to_one.rb +282 -0
- data/lib/dm-core/associations/one_to_many.rb +332 -0
- data/lib/dm-core/associations/one_to_one.rb +84 -0
- data/lib/dm-core/associations/relationship.rb +650 -0
- data/lib/dm-core/backwards.rb +11 -0
- data/lib/dm-core/collection.rb +1486 -0
- data/lib/dm-core/core_ext/kernel.rb +21 -0
- data/lib/dm-core/core_ext/pathname.rb +4 -0
- data/lib/dm-core/core_ext/symbol.rb +10 -0
- data/lib/dm-core/identity_map.rb +6 -0
- data/lib/dm-core/model/hook.rb +99 -0
- data/lib/dm-core/model/is.rb +30 -0
- data/lib/dm-core/model/property.rb +244 -0
- data/lib/dm-core/model/relationship.rb +366 -0
- data/lib/dm-core/model/scope.rb +87 -0
- data/lib/dm-core/model.rb +876 -0
- data/lib/dm-core/property/binary.rb +19 -0
- data/lib/dm-core/property/boolean.rb +35 -0
- data/lib/dm-core/property/class.rb +23 -0
- data/lib/dm-core/property/date.rb +45 -0
- data/lib/dm-core/property/date_time.rb +44 -0
- data/lib/dm-core/property/decimal.rb +47 -0
- data/lib/dm-core/property/discriminator.rb +40 -0
- data/lib/dm-core/property/float.rb +27 -0
- data/lib/dm-core/property/integer.rb +32 -0
- data/lib/dm-core/property/invalid_value_error.rb +17 -0
- data/lib/dm-core/property/lookup.rb +26 -0
- data/lib/dm-core/property/numeric.rb +35 -0
- data/lib/dm-core/property/object.rb +33 -0
- data/lib/dm-core/property/serial.rb +13 -0
- data/lib/dm-core/property/string.rb +47 -0
- data/lib/dm-core/property/text.rb +12 -0
- data/lib/dm-core/property/time.rb +46 -0
- data/lib/dm-core/property/typecast/numeric.rb +32 -0
- data/lib/dm-core/property/typecast/time.rb +33 -0
- data/lib/dm-core/property.rb +856 -0
- data/lib/dm-core/property_set.rb +177 -0
- data/lib/dm-core/query/conditions/comparison.rb +886 -0
- data/lib/dm-core/query/conditions/operation.rb +710 -0
- data/lib/dm-core/query/direction.rb +33 -0
- data/lib/dm-core/query/operator.rb +34 -0
- data/lib/dm-core/query/path.rb +113 -0
- data/lib/dm-core/query/sort.rb +38 -0
- data/lib/dm-core/query.rb +1352 -0
- data/lib/dm-core/relationship_set.rb +69 -0
- data/lib/dm-core/repository.rb +226 -0
- data/lib/dm-core/resource/persistence_state/clean.rb +36 -0
- data/lib/dm-core/resource/persistence_state/deleted.rb +26 -0
- data/lib/dm-core/resource/persistence_state/dirty.rb +91 -0
- data/lib/dm-core/resource/persistence_state/immutable.rb +32 -0
- data/lib/dm-core/resource/persistence_state/persisted.rb +25 -0
- data/lib/dm-core/resource/persistence_state/transient.rb +87 -0
- data/lib/dm-core/resource/persistence_state.rb +70 -0
- data/lib/dm-core/resource.rb +1220 -0
- data/lib/dm-core/spec/lib/adapter_helpers.rb +63 -0
- data/lib/dm-core/spec/lib/collection_helpers.rb +21 -0
- data/lib/dm-core/spec/lib/counter_adapter.rb +38 -0
- data/lib/dm-core/spec/lib/pending_helpers.rb +50 -0
- data/lib/dm-core/spec/lib/spec_helper.rb +74 -0
- data/lib/dm-core/spec/setup.rb +164 -0
- data/lib/dm-core/spec/shared/adapter_spec.rb +366 -0
- data/lib/dm-core/spec/shared/public/property_spec.rb +229 -0
- data/lib/dm-core/spec/shared/resource_spec.rb +1221 -0
- data/lib/dm-core/spec/shared/sel_spec.rb +111 -0
- data/lib/dm-core/spec/shared/semipublic/property_spec.rb +184 -0
- data/lib/dm-core/spec/shared/semipublic/query/conditions/abstract_comparison_spec.rb +261 -0
- data/lib/dm-core/support/assertions.rb +8 -0
- data/lib/dm-core/support/chainable.rb +18 -0
- data/lib/dm-core/support/deprecate.rb +12 -0
- data/lib/dm-core/support/descendant_set.rb +89 -0
- data/lib/dm-core/support/equalizer.rb +48 -0
- data/lib/dm-core/support/ext/array.rb +22 -0
- data/lib/dm-core/support/ext/blank.rb +25 -0
- data/lib/dm-core/support/ext/hash.rb +67 -0
- data/lib/dm-core/support/ext/module.rb +47 -0
- data/lib/dm-core/support/ext/object.rb +57 -0
- data/lib/dm-core/support/ext/string.rb +24 -0
- data/lib/dm-core/support/ext/try_dup.rb +12 -0
- data/lib/dm-core/support/hook.rb +388 -0
- data/lib/dm-core/support/inflections.rb +60 -0
- data/lib/dm-core/support/inflector/inflections.rb +211 -0
- data/lib/dm-core/support/inflector/methods.rb +151 -0
- data/lib/dm-core/support/lazy_array.rb +451 -0
- data/lib/dm-core/support/local_object_space.rb +13 -0
- data/lib/dm-core/support/logger.rb +201 -0
- data/lib/dm-core/support/mash.rb +176 -0
- data/lib/dm-core/support/naming_conventions.rb +109 -0
- data/lib/dm-core/support/ordered_set.rb +381 -0
- data/lib/dm-core/support/subject.rb +33 -0
- data/lib/dm-core/support/subject_set.rb +251 -0
- data/lib/dm-core/version.rb +3 -0
- data/lib/dm-core.rb +274 -0
- data/script/performance.rb +275 -0
- data/script/profile.rb +218 -0
- data/spec/lib/rspec_immediate_feedback_formatter.rb +54 -0
- data/spec/public/associations/many_to_many/read_multiple_join_spec.rb +69 -0
- data/spec/public/associations/many_to_many_spec.rb +197 -0
- data/spec/public/associations/many_to_one_spec.rb +83 -0
- data/spec/public/associations/many_to_one_with_boolean_cpk_spec.rb +40 -0
- data/spec/public/associations/many_to_one_with_custom_fk_spec.rb +49 -0
- data/spec/public/associations/one_to_many_spec.rb +81 -0
- data/spec/public/associations/one_to_one_spec.rb +176 -0
- data/spec/public/associations/one_to_one_with_boolean_cpk_spec.rb +46 -0
- data/spec/public/collection_spec.rb +69 -0
- data/spec/public/finalize_spec.rb +77 -0
- data/spec/public/model/hook_spec.rb +245 -0
- data/spec/public/model/property_spec.rb +91 -0
- data/spec/public/model/relationship_spec.rb +1040 -0
- data/spec/public/model_spec.rb +456 -0
- data/spec/public/property/binary_spec.rb +43 -0
- data/spec/public/property/boolean_spec.rb +21 -0
- data/spec/public/property/class_spec.rb +27 -0
- data/spec/public/property/date_spec.rb +21 -0
- data/spec/public/property/date_time_spec.rb +21 -0
- data/spec/public/property/decimal_spec.rb +23 -0
- data/spec/public/property/discriminator_spec.rb +134 -0
- data/spec/public/property/float_spec.rb +22 -0
- data/spec/public/property/integer_spec.rb +22 -0
- data/spec/public/property/object_spec.rb +117 -0
- data/spec/public/property/serial_spec.rb +22 -0
- data/spec/public/property/string_spec.rb +21 -0
- data/spec/public/property/text_spec.rb +62 -0
- data/spec/public/property/time_spec.rb +21 -0
- data/spec/public/property_spec.rb +333 -0
- data/spec/public/resource/state_spec.rb +72 -0
- data/spec/public/resource_spec.rb +289 -0
- data/spec/public/sel_spec.rb +53 -0
- data/spec/public/setup_spec.rb +145 -0
- data/spec/public/shared/association_collection_shared_spec.rb +309 -0
- data/spec/public/shared/collection_finder_shared_spec.rb +267 -0
- data/spec/public/shared/collection_shared_spec.rb +1637 -0
- data/spec/public/shared/finder_shared_spec.rb +1647 -0
- data/spec/semipublic/adapters/abstract_adapter_spec.rb +30 -0
- data/spec/semipublic/adapters/in_memory_adapter_spec.rb +13 -0
- data/spec/semipublic/associations/many_to_many_spec.rb +94 -0
- data/spec/semipublic/associations/many_to_one_spec.rb +63 -0
- data/spec/semipublic/associations/one_to_many_spec.rb +55 -0
- data/spec/semipublic/associations/one_to_one_spec.rb +53 -0
- data/spec/semipublic/associations/relationship_spec.rb +200 -0
- data/spec/semipublic/associations_spec.rb +177 -0
- data/spec/semipublic/collection_spec.rb +110 -0
- data/spec/semipublic/model_spec.rb +96 -0
- data/spec/semipublic/property/binary_spec.rb +13 -0
- data/spec/semipublic/property/boolean_spec.rb +47 -0
- data/spec/semipublic/property/class_spec.rb +33 -0
- data/spec/semipublic/property/date_spec.rb +43 -0
- data/spec/semipublic/property/date_time_spec.rb +46 -0
- data/spec/semipublic/property/decimal_spec.rb +83 -0
- data/spec/semipublic/property/discriminator_spec.rb +19 -0
- data/spec/semipublic/property/float_spec.rb +82 -0
- data/spec/semipublic/property/integer_spec.rb +82 -0
- data/spec/semipublic/property/lookup_spec.rb +29 -0
- data/spec/semipublic/property/serial_spec.rb +13 -0
- data/spec/semipublic/property/string_spec.rb +13 -0
- data/spec/semipublic/property/text_spec.rb +31 -0
- data/spec/semipublic/property/time_spec.rb +50 -0
- data/spec/semipublic/property_spec.rb +114 -0
- data/spec/semipublic/query/conditions/comparison_spec.rb +1502 -0
- data/spec/semipublic/query/conditions/operation_spec.rb +1296 -0
- data/spec/semipublic/query/path_spec.rb +471 -0
- data/spec/semipublic/query_spec.rb +3665 -0
- data/spec/semipublic/resource/state/clean_spec.rb +89 -0
- data/spec/semipublic/resource/state/deleted_spec.rb +79 -0
- data/spec/semipublic/resource/state/dirty_spec.rb +163 -0
- data/spec/semipublic/resource/state/immutable_spec.rb +107 -0
- data/spec/semipublic/resource/state/transient_spec.rb +163 -0
- data/spec/semipublic/resource/state_spec.rb +230 -0
- data/spec/semipublic/resource_spec.rb +23 -0
- data/spec/semipublic/shared/condition_shared_spec.rb +9 -0
- data/spec/semipublic/shared/resource_shared_spec.rb +198 -0
- data/spec/semipublic/shared/resource_state_shared_spec.rb +91 -0
- data/spec/semipublic/shared/subject_shared_spec.rb +79 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/support/core_ext/hash.rb +10 -0
- data/spec/support/core_ext/inheritable_attributes.rb +46 -0
- data/spec/support/properties/huge_integer.rb +17 -0
- data/spec/unit/array_spec.rb +23 -0
- data/spec/unit/blank_spec.rb +73 -0
- data/spec/unit/data_mapper/ordered_set/append_spec.rb +26 -0
- data/spec/unit/data_mapper/ordered_set/clear_spec.rb +24 -0
- data/spec/unit/data_mapper/ordered_set/delete_spec.rb +28 -0
- data/spec/unit/data_mapper/ordered_set/each_spec.rb +19 -0
- data/spec/unit/data_mapper/ordered_set/empty_spec.rb +20 -0
- data/spec/unit/data_mapper/ordered_set/entries_spec.rb +22 -0
- data/spec/unit/data_mapper/ordered_set/eql_spec.rb +51 -0
- data/spec/unit/data_mapper/ordered_set/equal_value_spec.rb +84 -0
- data/spec/unit/data_mapper/ordered_set/hash_spec.rb +12 -0
- data/spec/unit/data_mapper/ordered_set/include_spec.rb +23 -0
- data/spec/unit/data_mapper/ordered_set/index_spec.rb +28 -0
- data/spec/unit/data_mapper/ordered_set/initialize_spec.rb +32 -0
- data/spec/unit/data_mapper/ordered_set/merge_spec.rb +36 -0
- data/spec/unit/data_mapper/ordered_set/shared/append_spec.rb +24 -0
- data/spec/unit/data_mapper/ordered_set/shared/clear_spec.rb +9 -0
- data/spec/unit/data_mapper/ordered_set/shared/delete_spec.rb +25 -0
- data/spec/unit/data_mapper/ordered_set/shared/each_spec.rb +17 -0
- data/spec/unit/data_mapper/ordered_set/shared/empty_spec.rb +9 -0
- data/spec/unit/data_mapper/ordered_set/shared/entries_spec.rb +9 -0
- data/spec/unit/data_mapper/ordered_set/shared/include_spec.rb +9 -0
- data/spec/unit/data_mapper/ordered_set/shared/index_spec.rb +13 -0
- data/spec/unit/data_mapper/ordered_set/shared/initialize_spec.rb +28 -0
- data/spec/unit/data_mapper/ordered_set/shared/merge_spec.rb +28 -0
- data/spec/unit/data_mapper/ordered_set/shared/size_spec.rb +13 -0
- data/spec/unit/data_mapper/ordered_set/shared/to_ary_spec.rb +11 -0
- data/spec/unit/data_mapper/ordered_set/size_spec.rb +27 -0
- data/spec/unit/data_mapper/ordered_set/to_ary_spec.rb +23 -0
- data/spec/unit/data_mapper/subject_set/append_spec.rb +47 -0
- data/spec/unit/data_mapper/subject_set/clear_spec.rb +34 -0
- data/spec/unit/data_mapper/subject_set/delete_spec.rb +40 -0
- data/spec/unit/data_mapper/subject_set/each_spec.rb +30 -0
- data/spec/unit/data_mapper/subject_set/empty_spec.rb +31 -0
- data/spec/unit/data_mapper/subject_set/entries_spec.rb +31 -0
- data/spec/unit/data_mapper/subject_set/get_spec.rb +34 -0
- data/spec/unit/data_mapper/subject_set/include_spec.rb +32 -0
- data/spec/unit/data_mapper/subject_set/named_spec.rb +33 -0
- data/spec/unit/data_mapper/subject_set/shared/append_spec.rb +18 -0
- data/spec/unit/data_mapper/subject_set/shared/clear_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/delete_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/each_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/empty_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/entries_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/get_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/include_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/named_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/size_spec.rb +13 -0
- data/spec/unit/data_mapper/subject_set/shared/to_ary_spec.rb +9 -0
- data/spec/unit/data_mapper/subject_set/shared/values_at_spec.rb +44 -0
- data/spec/unit/data_mapper/subject_set/size_spec.rb +42 -0
- data/spec/unit/data_mapper/subject_set/to_ary_spec.rb +34 -0
- data/spec/unit/data_mapper/subject_set/values_at_spec.rb +57 -0
- data/spec/unit/hash_spec.rb +27 -0
- data/spec/unit/hook_spec.rb +1216 -0
- data/spec/unit/inflections_spec.rb +14 -0
- data/spec/unit/lazy_array_spec.rb +1949 -0
- data/spec/unit/mash_spec.rb +289 -0
- data/spec/unit/module_spec.rb +70 -0
- data/spec/unit/object_spec.rb +38 -0
- data/spec/unit/try_dup_spec.rb +46 -0
- data/tasks/ci.rake +1 -0
- data/tasks/spec.rake +18 -0
- data/tasks/yard.rake +9 -0
- data/tasks/yardstick.rake +19 -0
- metadata +323 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#values_at when one name is given and no entry with the given name is present' do
|
|
4
|
+
its(:size) { is_expected.to eq given_names.size }
|
|
5
|
+
|
|
6
|
+
it 'contains nil values for the names not found' do
|
|
7
|
+
expect(subject.compact).to be_empty
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples 'DataMapper::SubjectSet#values_at when one name is given and an entry with the given name is present' do
|
|
12
|
+
its(:size) { is_expected.to eq given_names.size }
|
|
13
|
+
|
|
14
|
+
it { is_expected.to include(entry1) }
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
shared_examples 'DataMapper::SubjectSet#values_at when more than one name is given and no entry with any of the given names is present' do
|
|
18
|
+
its(:size) { is_expected.to eq given_names.size }
|
|
19
|
+
|
|
20
|
+
it 'contains nil values for the names not found' do
|
|
21
|
+
expect(subject.compact).to be_empty
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
shared_examples 'DataMapper::SubjectSet#values_at when more than one name is given and one entry with one of the given names is present' do
|
|
26
|
+
it { is_expected.to include(entry1) }
|
|
27
|
+
|
|
28
|
+
its(:size) { is_expected.to eq given_names.size }
|
|
29
|
+
|
|
30
|
+
it 'contains nil values for the names not found' do
|
|
31
|
+
expect(subject.compact.size).to eq 1
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
shared_examples 'DataMapper::SubjectSet#values_at when more than one name is given and an entry for every given name is present' do
|
|
36
|
+
it { is_expected.to include(entry1) }
|
|
37
|
+
it { is_expected.to include(entry2) }
|
|
38
|
+
|
|
39
|
+
its(:size) { is_expected.to eq given_names.size }
|
|
40
|
+
|
|
41
|
+
it 'does not contain any nil values' do
|
|
42
|
+
expect(subject.compact.size).to eq given_names.size
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/size_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#size' do
|
|
6
|
+
before :all do
|
|
7
|
+
|
|
8
|
+
class ::Person
|
|
9
|
+
attr_reader :name
|
|
10
|
+
def initialize(name)
|
|
11
|
+
@name = name
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
subject { set.size }
|
|
18
|
+
|
|
19
|
+
let(:entry1) { Person.new('Alice') }
|
|
20
|
+
let(:entry2) { Person.new('Bob' ) }
|
|
21
|
+
|
|
22
|
+
context 'when no entry is present' do
|
|
23
|
+
let(:set) { DataMapper::SubjectSet.new }
|
|
24
|
+
|
|
25
|
+
it_behaves_like 'DataMapper::SubjectSet#size when no entry is present'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context 'when 1 entry is present' do
|
|
29
|
+
let(:set) { DataMapper::SubjectSet.new(entries) }
|
|
30
|
+
let(:entries) { [ entry1 ] }
|
|
31
|
+
|
|
32
|
+
it_behaves_like 'DataMapper::SubjectSet#size when 1 entry is present'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context 'when more than 1 entry is present' do
|
|
36
|
+
let(:set) { DataMapper::SubjectSet.new(entries) }
|
|
37
|
+
let(:entries) { [ entry1, entry2 ] }
|
|
38
|
+
let(:expected_size) { entries.size }
|
|
39
|
+
|
|
40
|
+
it_behaves_like 'DataMapper::SubjectSet#size when more than 1 entry is present'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/to_ary_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#to_ary' do
|
|
6
|
+
before :all do
|
|
7
|
+
|
|
8
|
+
class ::Person
|
|
9
|
+
attr_reader :name
|
|
10
|
+
def initialize(name)
|
|
11
|
+
@name = name
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
subject { set.to_ary }
|
|
18
|
+
|
|
19
|
+
let(:set) { DataMapper::SubjectSet.new(entries) }
|
|
20
|
+
let(:entry1) { Person.new('Alice') }
|
|
21
|
+
let(:entry2) { Person.new('Bob' ) }
|
|
22
|
+
|
|
23
|
+
context 'when no entries are present' do
|
|
24
|
+
let(:entries) { [] }
|
|
25
|
+
|
|
26
|
+
it_behaves_like 'DataMapper::SubjectSet#to_ary when no entries are present'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context 'when entries are present' do
|
|
30
|
+
let(:entries) { [ entry1, entry2 ] }
|
|
31
|
+
|
|
32
|
+
it_behaves_like 'DataMapper::SubjectSet#to_ary when entries are present'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/values_at_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#values_at' do
|
|
6
|
+
before :all do
|
|
7
|
+
|
|
8
|
+
class ::Person
|
|
9
|
+
attr_reader :name
|
|
10
|
+
def initialize(name)
|
|
11
|
+
@name = name
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
subject { set.values_at(*given_names) }
|
|
18
|
+
|
|
19
|
+
let(:set) { DataMapper::SubjectSet.new(entries) }
|
|
20
|
+
let(:entry1) { Person.new('Alice') }
|
|
21
|
+
let(:entry2) { Person.new('Bob' ) }
|
|
22
|
+
|
|
23
|
+
context 'when one name is given and no entry with the given name is present' do
|
|
24
|
+
let(:given_names) { [ 'Alice' ] }
|
|
25
|
+
let(:entries) { [] }
|
|
26
|
+
|
|
27
|
+
it_behaves_like 'DataMapper::SubjectSet#values_at when one name is given and no entry with the given name is present'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context 'when one name is given and an entry with the given name is present' do
|
|
31
|
+
let(:given_names) { [ 'Alice' ] }
|
|
32
|
+
let(:entries) { [ entry1 ] }
|
|
33
|
+
|
|
34
|
+
it_behaves_like 'DataMapper::SubjectSet#values_at when one name is given and an entry with the given name is present'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context 'when more than one name is given and no entry with any of the given names is present' do
|
|
38
|
+
let(:given_names) { [ 'Alice', 'Bob' ] }
|
|
39
|
+
let(:entries) { [] }
|
|
40
|
+
|
|
41
|
+
it_behaves_like 'DataMapper::SubjectSet#values_at when more than one name is given and no entry with any of the given names is present'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'when more than one name is given and one entry with one of the given names is present' do
|
|
45
|
+
let(:given_names) { [ 'Alice', 'Bob' ] }
|
|
46
|
+
let(:entries) { [ entry1 ] }
|
|
47
|
+
|
|
48
|
+
it_behaves_like 'DataMapper::SubjectSet#values_at when more than one name is given and one entry with one of the given names is present'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
context 'when more than one name is given and an entry for every given name is present' do
|
|
52
|
+
let(:given_names) { [ 'Alice', 'Bob' ] }
|
|
53
|
+
let(:entries) { [ entry1, entry2 ] }
|
|
54
|
+
|
|
55
|
+
it_behaves_like 'DataMapper::SubjectSet#values_at when more than one name is given and an entry for every given name is present'
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require_relative '../spec_helper'
|
|
2
|
+
require 'dm-core/support/ext/hash'
|
|
3
|
+
require 'dm-core/support/mash'
|
|
4
|
+
|
|
5
|
+
describe DataMapper::Ext::Hash, "only" do
|
|
6
|
+
before do
|
|
7
|
+
@hash = { :one => 'ONE', 'two' => 'TWO', 3 => 'THREE', 4 => nil }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it 'returns a hash with only the given key(s)' do
|
|
11
|
+
expect(DataMapper::Ext::Hash.only(@hash, :not_in_there)).to eq({})
|
|
12
|
+
expect(DataMapper::Ext::Hash.only(@hash, 4)).to eq({4 => nil})
|
|
13
|
+
expect(DataMapper::Ext::Hash.only(@hash, :one)).to eq({ one: 'ONE' })
|
|
14
|
+
expect(DataMapper::Ext::Hash.only(@hash, :one, 3)).to eq({one: 'ONE', 3 => 'THREE'})
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe Hash, 'to_mash' do
|
|
19
|
+
before do
|
|
20
|
+
@hash = Hash.new(10)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'copies default Hash value to Mash' do
|
|
24
|
+
@mash = DataMapper::Ext::Hash.to_mash(@hash)
|
|
25
|
+
expect(@mash[:merb]).to eq 10
|
|
26
|
+
end
|
|
27
|
+
end
|