1 | require File.dirname(__FILE__) + '/../../../../test_helper'
|
---|
2 | require 'test/unit'
|
---|
3 | require 'set'
|
---|
4 |
|
---|
5 | class RM_Common_Change_Control_Test < Test::Unit::TestCase
|
---|
6 | def setup
|
---|
7 | object_version_id1 = ObjectVersionId.new('ABC::DEF::2.2.3')
|
---|
8 | object_version_id2 = ObjectVersionId.new('GHI::JKL::4.5.6')
|
---|
9 | object_id = ObjectId.new('ehr://uniqueid1020')
|
---|
10 | dv_date_time = OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-06T21:10:12')
|
---|
11 | party_ref = PartyRef.new('unknown', 'ORGANISATION', object_id)
|
---|
12 | party_proxy = OpenEhr::RM::Common::Generic::PartyProxy.new(:external_ref => party_ref)
|
---|
13 | terminology_id = TerminologyId.new('openehr(1.0.2)')
|
---|
14 | code_phrase = OpenEhr::RM::DataTypes::Text::CodePhrase.new('249', terminology_id)
|
---|
15 | dv_coded_text = OpenEhr::RM::DataTypes::Text::DvCodedText.new('creation', code_phrase)
|
---|
16 | audit_details = OpenEhr::RM::Common::Generic::AuditDetails.new(:system_id => 'MAGI',
|
---|
17 | :committer => party_proxy,
|
---|
18 | :time_committed => dv_date_time,
|
---|
19 | :change_type => dv_coded_text)
|
---|
20 | code_phrase = OpenEhr::RM::DataTypes::Text::CodePhrase.new('532', terminology_id)
|
---|
21 | dv_coded_text = OpenEhr::RM::DataTypes::Text::DvCodedText.new('complete', code_phrase)
|
---|
22 | object_id = ObjectId.new('ehr://test_location')
|
---|
23 | object_ref = ObjectRef.new('local', 'PARTY', object_id)
|
---|
24 | hier_object_id = HierObjectId.new('ABC')
|
---|
25 | assert_nothing_raised(Exception){
|
---|
26 | @version = OpenEhr::RM::Common::ChangeControl::Version.new(:uid => object_version_id1,
|
---|
27 | :preceding_version_uid => object_version_id2,
|
---|
28 | :lifecycle_state => dv_coded_text,
|
---|
29 | :commit_audit => audit_details,
|
---|
30 | :contribution => object_ref,
|
---|
31 | :signature => 'test_version',
|
---|
32 | :data => 'data')}
|
---|
33 | object_version_id3 = ObjectVersionId.new('MNO::PQR::7.8.9')
|
---|
34 | object_version_id4 = ObjectVersionId.new('STU::VWX::1.2.3')
|
---|
35 | code_phrase = OpenEhr::RM::DataTypes::Text::CodePhrase.new('240', terminology_id)
|
---|
36 | dv_coded_text2 = OpenEhr::RM::DataTypes::Text::DvCodedText.new('signed', code_phrase)
|
---|
37 | attestation = OpenEhr::RM::Common::Generic::Attestation.new(:system_id => 'NERV',
|
---|
38 | :committer => party_proxy,
|
---|
39 | :time_committed => dv_date_time,
|
---|
40 | :change_type => dv_coded_text,
|
---|
41 | :reason => OpenEhr::RM::DataTypes::Text::DvText.new('signed'))
|
---|
42 | dv_date_time = OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-07T21:10:12')
|
---|
43 | audit_details = OpenEhr::RM::Common::Generic::AuditDetails.new(:system_id => 'MAGI',
|
---|
44 | :committer => party_proxy,
|
---|
45 | :time_committed => dv_date_time,
|
---|
46 | :change_type => dv_coded_text)
|
---|
47 | assert_nothing_raised(Exception){
|
---|
48 | @original_version = OpenEhr::RM::Common::ChangeControl::OriginalVersion.new(:uid => object_version_id3,
|
---|
49 | :preceding_version_uid => object_version_id4,
|
---|
50 | :other_input_version_uids => Set[object_version_id1, object_version_id2],
|
---|
51 | :commit_audit => audit_details,
|
---|
52 | :contribution => object_ref,
|
---|
53 | :attestations => [attestation],
|
---|
54 | :data => 'data',
|
---|
55 | :lifecycle_state => dv_coded_text)}
|
---|
56 | dv_date_time = OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-08T21:10:12')
|
---|
57 | audit_details = OpenEhr::RM::Common::Generic::AuditDetails.new(:system_id => 'CASPER',
|
---|
58 | :committer => party_proxy,
|
---|
59 | :time_committed => dv_date_time,
|
---|
60 | :change_type => dv_coded_text,
|
---|
61 | :description => 'for contribution')
|
---|
62 | object_ref = ObjectRef.new('unknown', 'PARTY', object_id)
|
---|
63 | assert_nothing_raised(Exception){
|
---|
64 | @imported_version = OpenEhr::RM::Common::ChangeControl::ImportedVersion.new(:item => @original_version,
|
---|
65 | :commit_audit => audit_details,
|
---|
66 | :contribution => object_ref,
|
---|
67 | :signature => 'import test')}
|
---|
68 | assert_nothing_raised(Exception){
|
---|
69 | @contribution = OpenEhr::RM::Common::ChangeControl::Contribution.new(:uid => hier_object_id,
|
---|
70 | :versions => Set[object_ref],
|
---|
71 | :audit => audit_details)}
|
---|
72 | dv_date_time = OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-08T18:10:12')
|
---|
73 | audit_details = OpenEhr::RM::Common::Generic::AuditDetails.new(:system_id => 'MAGI',
|
---|
74 | :committer => party_proxy,
|
---|
75 | :time_committed => dv_date_time,
|
---|
76 | :change_type => dv_coded_text)
|
---|
77 | @trunk_version = OpenEhr::RM::Common::ChangeControl::Version.new(:uid => object_version_id4,
|
---|
78 | :lifecycle_state => dv_coded_text,
|
---|
79 | :commit_audit => audit_details,
|
---|
80 | :contribution => object_ref,
|
---|
81 | :change_type => dv_coded_text)
|
---|
82 | assert_nothing_raised(Exception){
|
---|
83 | @versioned_object = OpenEhr::RM::Common::ChangeControl::VersionedObject.new(:uid => hier_object_id,
|
---|
84 | :owner_id => object_ref,
|
---|
85 | :time_created => dv_date_time,
|
---|
86 | :all_versions => [@version,@original_version,@imported_version,@trunk_version])}
|
---|
87 | end
|
---|
88 |
|
---|
89 | def test_init
|
---|
90 | assert_instance_of OpenEhr::RM::Common::ChangeControl::Version, @version
|
---|
91 | assert_instance_of OpenEhr::RM::Common::ChangeControl::OriginalVersion, @original_version
|
---|
92 | assert_instance_of OpenEhr::RM::Common::ChangeControl::ImportedVersion, @imported_version
|
---|
93 | assert_instance_of OpenEhr::RM::Common::ChangeControl::Contribution, @contribution
|
---|
94 | assert_instance_of OpenEhr::RM::Common::ChangeControl::VersionedObject, @versioned_object
|
---|
95 | end
|
---|
96 |
|
---|
97 | def test_version
|
---|
98 | assert_equal 'ABC::DEF::2.2.3', @version.uid.value
|
---|
99 | assert !@version.uid.version_tree_id.is_first?
|
---|
100 | assert_equal 'GHI::JKL::4.5.6', @version.preceding_version_uid.value
|
---|
101 | assert_equal '532', @version.lifecycle_state.defining_code.code_string
|
---|
102 | assert_equal 'MAGI', @version.commit_audit.system_id
|
---|
103 | assert_equal 'local', @version.contribution.namespace
|
---|
104 | assert_equal 'test_version', @version.signature
|
---|
105 | assert_equal 'ABC', @version.owner_id.value
|
---|
106 | assert_equal 'data', @version.data
|
---|
107 | assert @version.is_branch?
|
---|
108 | end
|
---|
109 |
|
---|
110 | def test_original_version
|
---|
111 | assert_equal 'MNO::PQR::7.8.9', @original_version.uid.value
|
---|
112 | assert_equal 'NERV', @original_version.attestations[0].system_id
|
---|
113 | end
|
---|
114 |
|
---|
115 | def test_imported_version
|
---|
116 | assert_equal 'import test', @imported_version.signature
|
---|
117 | assert_equal 'MNO::PQR::7.8.9', @imported_version.item.uid.value
|
---|
118 | assert_equal 'CASPER', @imported_version.commit_audit.system_id
|
---|
119 | assert_equal 'unknown', @imported_version.contribution.namespace
|
---|
120 | assert_equal 'STU::VWX::1.2.3', @imported_version.preceding_version_uid.value
|
---|
121 | assert_equal '532', @imported_version.lifecycle_state.defining_code.code_string
|
---|
122 | end
|
---|
123 |
|
---|
124 | def test_contribution
|
---|
125 | assert_equal 'ABC', @contribution.uid.value
|
---|
126 | assert_equal 'PARTY', @contribution.versions.to_a[0].type
|
---|
127 | assert_equal 'for contribution', @contribution.audit.description
|
---|
128 | end
|
---|
129 |
|
---|
130 | def test_versioned_object
|
---|
131 | assert_equal 'ABC', @versioned_object.uid.value
|
---|
132 | assert_equal 'unknown', @versioned_object.owner_id.namespace
|
---|
133 | assert_equal 18, @versioned_object.time_created.hour
|
---|
134 | assert_equal [@version, @original_version, @imported_version, @trunk_version],
|
---|
135 | @versioned_object.all_versions
|
---|
136 | assert_equal 4, @versioned_object.version_count
|
---|
137 | assert_equal [@version.uid, @original_version.uid, @imported_version.uid, @trunk_version.uid],
|
---|
138 | @versioned_object.all_version_ids
|
---|
139 | assert @versioned_object.has_version_id?(@version.uid)
|
---|
140 | assert !@versioned_object.is_original_version?(@version.uid)
|
---|
141 | assert @versioned_object.is_original_version?(@original_version.uid)
|
---|
142 | assert @versioned_object.has_version_at_time?(OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-06T21:10:12'))
|
---|
143 | assert_equal @version, @versioned_object.version_with_id(@version.uid)
|
---|
144 | assert_equal @version, @versioned_object.version_at_time(@version.commit_audit.time_committed)
|
---|
145 | assert_equal @imported_version, @versioned_object.latest_version
|
---|
146 | assert_equal @trunk_version, @versioned_object.latest_trunk_version
|
---|
147 | assert_equal 'complete', @versioned_object.trunk_lifecycle_state.value
|
---|
148 | assert_equal '2009-07-08T18:10:12', @versioned_object.revision_history.most_recent_version_time_committed
|
---|
149 | assert_nothing_raised(Exception){
|
---|
150 | @versioned_object.commit_original_version(:contribution => @original_version.contribution,
|
---|
151 | :uid => @original_version.uid,
|
---|
152 | :preceding_version_uid => @original_version.preceding_version_uid,
|
---|
153 | :commit_audit => @original_version.commit_audit,
|
---|
154 | :attestations => @original_version.attestations,
|
---|
155 | :lifecycle_state => @original_version.lifecycle_state,
|
---|
156 | :data => 'commit original',
|
---|
157 | :signature => 'testtett')}
|
---|
158 | assert_equal 5, @versioned_object.version_count
|
---|
159 | assert_nothing_raised(Exception){
|
---|
160 | @versioned_object.commit_original_merged_version(:contribution => @original_version.contribution,
|
---|
161 | :uid => @original_version.uid,
|
---|
162 | :preceding_version_uid => @original_version.preceding_version_uid,
|
---|
163 | :commit_audit => @original_version.commit_audit,
|
---|
164 | :lifecycle_state => @original_version.lifecycle_state,
|
---|
165 | :attestations => @original_version.attestations,
|
---|
166 | :data => @original_version.data,
|
---|
167 | :other_input_version_uids => @original_version.other_input_version_uids,
|
---|
168 | :signature => @original_version.signature)}
|
---|
169 | assert_equal 6, @versioned_object.version_count
|
---|
170 | assert_nothing_raised(Exception){
|
---|
171 | @versioned_object.commit_imported_version(:contribution => @imported_version.contribution,
|
---|
172 | :commit_audit => @imported_version.commit_audit,
|
---|
173 | :item => @imported_version.item)}
|
---|
174 | assert_equal 7, @versioned_object.version_count
|
---|
175 | dv_date_time = OpenEhr::RM::DataTypes::Quantity::DateTime::DvDateTime.new('2009-07-07T22:11:31')
|
---|
176 | attestation = Attestation.new(:system_id => 'NERV2',
|
---|
177 | :committer => @version.contribution,
|
---|
178 | :time_committed => dv_date_time,
|
---|
179 | :change_type => @original_version.commit_audit.change_type,
|
---|
180 | :reason => OpenEhr::RM::DataTypes::Text::DvText.new('signed'))
|
---|
181 | assert_nothing_raised(Exception){
|
---|
182 | @versioned_object.commit_attestation(:attestation => attestation,
|
---|
183 | :uid => @original_version.uid,
|
---|
184 | :signature => 'new signature')}
|
---|
185 | end
|
---|
186 | end
|
---|