aboutsummaryrefslogtreecommitdiffstats
path: root/spec/support
diff options
context:
space:
mode:
authorRobert2017-10-02 13:26:06 +0200
committerRobert2017-10-02 13:26:06 +0200
commited5f05acf1d604eab807f3455ea628179ab55408 (patch)
treeaa50571e8f43b1b2b2a471c45830512a1f76bfd8 /spec/support
parent30bdfe7c5557ba85f2c6cb18abe4b0308faa217d (diff)
downloadchouette-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')
-rw-r--r--spec/support/shared_examples/compliance_control_class_level_defaults.rb40
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