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,9 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#entries with no entries' do
|
|
4
|
+
it { is_expected.to be_empty }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::OrderedSet#entries with entries' do
|
|
8
|
+
it { is_expected.to include(entry) }
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#include? when the entry is present' do
|
|
4
|
+
it { is_expected.to be(true) }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::OrderedSet#include? when the entry is not present' do
|
|
8
|
+
it { is_expected.to be(false) }
|
|
9
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#index when the entry is not present' do
|
|
4
|
+
it { is_expected.to be(nil) }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::OrderedSet#index when 1 entry is present' do
|
|
8
|
+
it { is_expected.to eq 0 }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples 'DataMapper::OrderedSet#index when 2 entries are present' do
|
|
12
|
+
it { is_expected.to eq 1 }
|
|
13
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#initialize when no entries are given' do
|
|
4
|
+
it { is_expected.to be_empty }
|
|
5
|
+
|
|
6
|
+
its(:entries) { is_expected.to be_empty }
|
|
7
|
+
its(:size) { is_expected.to eq 0 }
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
shared_examples 'DataMapper::OrderedSet#initialize when entries are given and they do not contain duplicates' do
|
|
11
|
+
it { is_expected.not_to be_empty }
|
|
12
|
+
it { is_expected.to include(entry1) }
|
|
13
|
+
it { is_expected.to include(entry2) }
|
|
14
|
+
|
|
15
|
+
its(:size) { is_expected.to eq 2 }
|
|
16
|
+
|
|
17
|
+
it 'retains insertion order' do
|
|
18
|
+
expect(subject.index(entry1)).to eq 0
|
|
19
|
+
expect(subject.index(entry2)).to eq 1
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
shared_examples 'DataMapper::OrderedSet#initialize when entries are given and they contain duplicates' do
|
|
24
|
+
it { is_expected.not_to be_empty }
|
|
25
|
+
it { is_expected.to include(entry1) }
|
|
26
|
+
|
|
27
|
+
its(:size) { is_expected.to eq 1 }
|
|
28
|
+
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#merge when merging two empty sets' do
|
|
4
|
+
it { is_expected.to be_instance_of(set.class) }
|
|
5
|
+
it { is_expected.to equal(set) }
|
|
6
|
+
it { is_expected.to eq set }
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
shared_examples 'DataMapper::OrderedSet#merge when merging a set with already present entries' do
|
|
10
|
+
it { is_expected.to equal(set) }
|
|
11
|
+
it { is_expected.to eq set }
|
|
12
|
+
it { is_expected.to include(entry) }
|
|
13
|
+
|
|
14
|
+
it 'does not add an entry to the set' do
|
|
15
|
+
expect { subject }.to_not change { set.size }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
shared_examples 'DataMapper::OrderedSet#merge when merging a set with not yet present entries' do
|
|
20
|
+
it { is_expected.to equal(set) }
|
|
21
|
+
it { is_expected.not_to eq set }
|
|
22
|
+
it { is_expected.to include(entry1) }
|
|
23
|
+
it { is_expected.to include(entry2) }
|
|
24
|
+
|
|
25
|
+
it 'adds an entry to the set' do
|
|
26
|
+
expect { subject }.to change { set.size }.from(1).to(2)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#size when no entry is present' do
|
|
4
|
+
it { is_expected.to eq 0 }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::OrderedSet#size when 1 entry is present' do
|
|
8
|
+
it { is_expected.to eq 1 }
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples 'DataMapper::OrderedSet#size when more than 1 entry is present' do
|
|
12
|
+
it { is_expected.to eq expected_size }
|
|
13
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::OrderedSet#to_ary when no entries are present' do
|
|
4
|
+
it { is_expected.to be_empty }
|
|
5
|
+
it { is_expected.to eq entries }
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
shared_examples 'DataMapper::OrderedSet#to_ary when entries are present' do
|
|
9
|
+
it { is_expected.not_to be_empty }
|
|
10
|
+
it { is_expected.to eq entries }
|
|
11
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/ordered_set'
|
|
3
|
+
require_relative 'shared/size_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::OrderedSet#size' do
|
|
6
|
+
subject { ordered_set.size }
|
|
7
|
+
|
|
8
|
+
context 'when no entry is present' do
|
|
9
|
+
let(:ordered_set) { DataMapper::OrderedSet.new }
|
|
10
|
+
|
|
11
|
+
it_behaves_like 'DataMapper::OrderedSet#size when no entry is present'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
context 'when 1 entry is present' do
|
|
15
|
+
let(:ordered_set) { DataMapper::OrderedSet.new([ 1 ]) }
|
|
16
|
+
|
|
17
|
+
it_behaves_like 'DataMapper::OrderedSet#size when 1 entry is present'
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
context 'when more than 1 entry is present' do
|
|
21
|
+
let(:ordered_set) { DataMapper::OrderedSet.new(entries) }
|
|
22
|
+
let(:entries) { [ 1, 2 ] }
|
|
23
|
+
let(:expected_size) { entries.size }
|
|
24
|
+
|
|
25
|
+
it_behaves_like 'DataMapper::OrderedSet#size when more than 1 entry is present'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/ordered_set'
|
|
3
|
+
require_relative 'shared/to_ary_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::OrderedSet#to_ary' do
|
|
6
|
+
subject { ordered_set.to_ary }
|
|
7
|
+
|
|
8
|
+
let(:ordered_set) { DataMapper::OrderedSet.new(entries) }
|
|
9
|
+
let(:entry1) { 1 }
|
|
10
|
+
let(:entry2) { 2 }
|
|
11
|
+
|
|
12
|
+
context 'when no entries are present' do
|
|
13
|
+
let(:entries) { [] }
|
|
14
|
+
|
|
15
|
+
it_behaves_like 'DataMapper::OrderedSet#to_ary when no entries are present'
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
context 'when entries are present' do
|
|
19
|
+
let(:entries) { [ entry1, entry2 ] }
|
|
20
|
+
|
|
21
|
+
it_behaves_like 'DataMapper::OrderedSet#to_ary when entries are present'
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/append_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#<<' do
|
|
6
|
+
before :all do
|
|
7
|
+
|
|
8
|
+
class ::Person
|
|
9
|
+
attr_reader :name
|
|
10
|
+
attr_reader :hobby
|
|
11
|
+
def initialize(name, hobby)
|
|
12
|
+
@name = name
|
|
13
|
+
@hobby = hobby
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
before do
|
|
20
|
+
@old_size = set.size
|
|
21
|
+
@old_index = set.entries.index(entry1)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
subject { set << entry2 }
|
|
25
|
+
|
|
26
|
+
let(:set) { DataMapper::SubjectSet.new([ entry1 ]) }
|
|
27
|
+
let(:entry1) { Person.new('snusnu', 'programming') }
|
|
28
|
+
let(:entry2) { Person.new('snusnu', 'tabletennis') }
|
|
29
|
+
|
|
30
|
+
context 'when appending a not yet included entry' do
|
|
31
|
+
let(:entry2) { Person.new('Alice', 'cryptography') }
|
|
32
|
+
|
|
33
|
+
it_behaves_like 'DataMapper::SubjectSet#<< when appending a not yet included entry'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
context 'when updating an entry with the same cache key' do
|
|
37
|
+
context 'and the new entry is already included' do
|
|
38
|
+
let(:entry2) { entry1 }
|
|
39
|
+
|
|
40
|
+
it_behaves_like 'DataMapper::SubjectSet#<< when updating an entry with the same cache key and the new entry is already included'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
context 'and the new entry is not yet included' do
|
|
44
|
+
it_behaves_like 'DataMapper::SubjectSet#<< when updating an entry with the same cache key and the new entry is not yet included'
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/clear_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#clear' 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.clear }
|
|
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#clear 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#clear when entries are present'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/delete_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#delete' 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 }
|
|
18
|
+
|
|
19
|
+
let(:set) { DataMapper::SubjectSet.new([ entry1, entry2, entry3 ]) }
|
|
20
|
+
let(:ordered_set) { set.entries }
|
|
21
|
+
let(:entry1) { Person.new('Alice') }
|
|
22
|
+
let(:entry2) { Person.new('John' ) }
|
|
23
|
+
let(:entry3) { Person.new('Jane' ) }
|
|
24
|
+
|
|
25
|
+
before do
|
|
26
|
+
set.delete(entry)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context 'when deleting an already included entry' do
|
|
30
|
+
let(:entry) { entry1 }
|
|
31
|
+
|
|
32
|
+
it_behaves_like 'DataMapper::SubjectSet#delete when deleting an already included entry'
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context 'when deleting a not yet included entry' do
|
|
36
|
+
let(:entry) { Person.new('Bob') }
|
|
37
|
+
|
|
38
|
+
it_behaves_like 'DataMapper::SubjectSet#delete when deleting a not yet included entry'
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/each_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet' do
|
|
6
|
+
subject { DataMapper::SubjectSet.new }
|
|
7
|
+
|
|
8
|
+
it_behaves_like 'DataMapper::SubjectSet'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
describe 'DataMapper::SubjectSet#each' do
|
|
12
|
+
before :all do
|
|
13
|
+
|
|
14
|
+
class ::Person
|
|
15
|
+
attr_reader :name
|
|
16
|
+
def initialize(name)
|
|
17
|
+
@name = name
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
subject { set.each { |entry| yields << entry } }
|
|
24
|
+
|
|
25
|
+
let(:set) { DataMapper::SubjectSet.new([ entry ]) }
|
|
26
|
+
let(:entry) { Person.new('Alice') }
|
|
27
|
+
let(:yields) { [] }
|
|
28
|
+
|
|
29
|
+
it_behaves_like 'DataMapper::SubjectSet#each'
|
|
30
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/empty_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#empty?' 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.empty? }
|
|
18
|
+
|
|
19
|
+
context 'with no entries in it' do
|
|
20
|
+
let(:set) { DataMapper::SubjectSet.new }
|
|
21
|
+
|
|
22
|
+
it_behaves_like 'DataMapper::SubjectSet#empty? with no entries in it'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'with entries in it' do
|
|
26
|
+
let(:set) { DataMapper::SubjectSet.new([ entry ]) }
|
|
27
|
+
let(:entry) { Person.new('Alice') }
|
|
28
|
+
|
|
29
|
+
it_behaves_like 'DataMapper::SubjectSet#empty? with entries in it'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/entries_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#entries' 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.entries }
|
|
18
|
+
|
|
19
|
+
context 'with no entries' do
|
|
20
|
+
let(:set) { DataMapper::SubjectSet.new }
|
|
21
|
+
|
|
22
|
+
it_behaves_like 'DataMapper::SubjectSet#entries with no entries'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
context 'with entries' do
|
|
26
|
+
let(:set) { DataMapper::SubjectSet.new([ entry ]) }
|
|
27
|
+
let(:entry) { Person.new('Alice') }
|
|
28
|
+
|
|
29
|
+
it_behaves_like 'DataMapper::SubjectSet#entries with entries'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/get_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#[]' 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[name] }
|
|
18
|
+
|
|
19
|
+
let(:set ) { DataMapper::SubjectSet.new(entries) }
|
|
20
|
+
let(:entry) { Person.new(name) }
|
|
21
|
+
let(:name ) { 'Alice' }
|
|
22
|
+
|
|
23
|
+
context 'when the entry with the given name is not present' do
|
|
24
|
+
let(:entries) { [] }
|
|
25
|
+
|
|
26
|
+
it_behaves_like 'DataMapper::SubjectSet#[] when the entry with the given name is not present'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
context 'when the entry with the given name is present' do
|
|
30
|
+
let(:entries) { [ entry ] }
|
|
31
|
+
|
|
32
|
+
it_behaves_like 'DataMapper::SubjectSet#[] when the entry with the given name is present'
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/include_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#include?' 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.include?(entry) }
|
|
18
|
+
|
|
19
|
+
let(:entry) { Person.new('Alice') }
|
|
20
|
+
|
|
21
|
+
context 'when the entry is present' do
|
|
22
|
+
let(:set) { DataMapper::SubjectSet.new([ entry ]) }
|
|
23
|
+
|
|
24
|
+
it_behaves_like 'DataMapper::SubjectSet#include? when the entry is present'
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context 'when the entry is not present' do
|
|
28
|
+
let(:set) { DataMapper::SubjectSet.new }
|
|
29
|
+
|
|
30
|
+
it_behaves_like 'DataMapper::SubjectSet#include? when the entry is not present'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require_relative '../../../spec_helper'
|
|
2
|
+
require 'dm-core/support/subject_set'
|
|
3
|
+
require_relative 'shared/named_spec'
|
|
4
|
+
|
|
5
|
+
describe 'DataMapper::SubjectSet#named?' 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.named?(name) }
|
|
18
|
+
|
|
19
|
+
let(:entry) { Person.new(name) }
|
|
20
|
+
let(:name ) { 'Alice' }
|
|
21
|
+
|
|
22
|
+
context 'when no entry with the given name is present' do
|
|
23
|
+
let(:set) { DataMapper::SubjectSet.new([]) }
|
|
24
|
+
|
|
25
|
+
it_behaves_like 'DataMapper::SubjectSet#named? when no entry with the given name is present'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
context 'when an entry with the given name is present' do
|
|
29
|
+
let(:set) { DataMapper::SubjectSet.new([ entry ]) }
|
|
30
|
+
|
|
31
|
+
it_behaves_like 'DataMapper::SubjectSet#named? when an entry with the given name is present'
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/append_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#<< when appending a not yet included entry' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#<< when appending a not yet included entry'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#<< when updating an entry with the same cache key and the new entry is already included' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#<< when updating an already included entry'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples 'DataMapper::SubjectSet#<< when updating an entry with the same cache key and the new entry is not yet included' do
|
|
12
|
+
its(:entries) { is_expected.not_to include(entry1) }
|
|
13
|
+
its(:entries) { is_expected.to include(entry2) }
|
|
14
|
+
|
|
15
|
+
it 'inserts the new entry at the old position' do
|
|
16
|
+
subject.entries.index(entry2).is_expected.to eq @old_index
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/clear_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#clear when no entries are present' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#clear when no entries are present'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#clear when entries are present' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#clear when entries are present'
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/delete_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#delete when deleting an already included entry' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#delete when deleting an already included entry'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#delete when deleting a not yet included entry' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#delete when deleting a not yet included entry'
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/empty_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#empty? with no entries in it' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#empty? with no entries in it'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#empty? with entries in it' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#empty? with entries in it'
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/entries_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#entries with no entries' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#entries with no entries'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#entries with entries' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#entries with entries'
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#[] when the entry with the given name is not present' do
|
|
4
|
+
it { is_expected.to be_nil }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#[] when the entry with the given name is present' do
|
|
8
|
+
it { is_expected.to eq entry }
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/include_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#include? when the entry is present' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#include? when the entry is present'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#include? when the entry is not present' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#include? when the entry is not present'
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../../../spec_helper'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#named? when no entry with the given name is present' do
|
|
4
|
+
it { is_expected.to be(false) }
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#named? when an entry with the given name is present' do
|
|
8
|
+
it { is_expected.to be(true) }
|
|
9
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/size_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#size when no entry is present' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#size when no entry is present'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#size when 1 entry is present' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#size when 1 entry is present'
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
shared_examples 'DataMapper::SubjectSet#size when more than 1 entry is present' do
|
|
12
|
+
it_behaves_like 'DataMapper::OrderedSet#size when more than 1 entry is present'
|
|
13
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
require_relative '../../ordered_set/shared/to_ary_spec'
|
|
2
|
+
|
|
3
|
+
shared_examples 'DataMapper::SubjectSet#to_ary when no entries are present' do
|
|
4
|
+
it_behaves_like 'DataMapper::OrderedSet#to_ary when no entries are present'
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
shared_examples 'DataMapper::SubjectSet#to_ary when entries are present' do
|
|
8
|
+
it_behaves_like 'DataMapper::OrderedSet#to_ary when entries are present'
|
|
9
|
+
end
|