diff options
| author | Robert | 2017-10-02 13:26:06 +0200 |
|---|---|---|
| committer | Robert | 2017-10-02 13:26:06 +0200 |
| commit | ed5f05acf1d604eab807f3455ea628179ab55408 (patch) | |
| tree | aa50571e8f43b1b2b2a471c45830512a1f76bfd8 /spec/support/shared_examples | |
| parent | 30bdfe7c5557ba85f2c6cb18abe4b0308faa217d (diff) | |
| download | chouette-core-ed5f05acf1d604eab807f3455ea628179ab55408.tar.bz2 | |
Refs: #4627@1h;
- Rebase on udated master
- Removal of `default_criticity` from ComplianceControl Class Level Defaults
- Refactoring of specs to allow usage of the same shared examples (given that more models need to undergo the same refact)
Diffstat (limited to 'spec/support/shared_examples')
| -rw-r--r-- | spec/support/shared_examples/compliance_control_class_level_defaults.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/support/shared_examples/compliance_control_class_level_defaults.rb b/spec/support/shared_examples/compliance_control_class_level_defaults.rb new file mode 100644 index 000000000..d433038fc --- /dev/null +++ b/spec/support/shared_examples/compliance_control_class_level_defaults.rb @@ -0,0 +1,40 @@ +H = Support::DataModifier::Hash +RSpec.shared_examples_for 'ComplianceControl Class Level Defaults' do + context 'class attributes' do + it 'are correctly set' do + expect( described_class.default_code).to eq(default_code) + end + end + context 'are used in instantiation' do + let( :record ){ create factory } + let( :default_att_names ){%w[ code origin_code ]} + + it 'all defaults' do + expect( record.attributes.values_at(*default_att_names )) + .to eq([ default_code, default_code]) + end + it 'but provided values are not overwritten by defaults' do + code = random_string + origin_code = random_string + # Remove each of the attributes from explicit initialisation to see + # its value provided by CCCWDA. + + # atts :: Map(String, (explicit_value, default_value)) + atts = { + 'code' => [code, default_code], + 'origin_code' => [origin_code, default_code], + } + atts.keys.each do |key| + # Replace key to be tested by default value + expected = H.first_values(atts).merge(key => atts[key].last) + expected_values = expected.values_at(*default_att_names) + # Remove key to be tested from atts passed to `#create` + construction_atts = H.first_values(atts).merge(key => nil).compact + explicit = create factory, construction_atts + + expect( explicit.attributes.values_at(*default_att_names )) + .to eq(expected_values) + end + end + end + end |
