Changeset 363


Ignore:
Timestamp:
Nov 20, 2009, 1:31:18 AM (14 years ago)
Author:
KOBAYASHI, Shinji
Message:

refs #45 Actor, Person, Organisation, Group, Agent

Location:
ruby/branches/0.5
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • ruby/branches/0.5/lib/open_ehr/rm/demographic.rb

    r362 r363  
    77  module RM
    88    module Demographic
    9       class Address < Locatable
    10         attr_reader :details
    11 
    12         def initialize(args = { })
    13           super(args)
    14           self.details = args[:details]
    15         end
    16 
    17         def details=(details)
    18           if details.nil?
    19             raise ArgumentError, 'details are mandatory'
    20           end
    21           @details = details
    22         end
    23 
    24         def type
    25           return @name
    26         end
    27       end
    28 
    29       class Capability < Locatable
    30         attr_reader :credentials, :time_validity
    31 
    32       end
    33 
    349      class Party < Locatable
    3510        attr_reader :uid, :identities, :contacts, :relationships,
     
    11590      end
    11691
    117       class PartyRelationship < Locatable
    118 
    119       end
    120 
    121       class VersionedParty < Locatable
    122 
    123       end
    124 
    125       class Role < Party
    126 
    127       end
    128 
    129       class Actor < Party
    130         LEAGAL_IDENTITY = 'leagal identity'
    131         attr_reader :languages, :rules
    132 
    133         def initialize(uid, archetype_node_id, name, archetype_details,
    134                        feeder_audit, links, identities, contacts,
    135                        relationships, reverse_relationships, details,
    136                        languages, rules)
    137           super(uid, archetype_node_id, name, archetype_details,
    138                 feeder_audit, links, relationships, reverse_relationships,
    139                 details)
    140           has_legal_identity?
    141           set_languages(languages)
    142           set_rules(rules)
    143         end
    144 
    145         def has_legal_identity?
    146           @identities.each {|identity|
    147             if (identity.purpose.value == LEAGAL_IDENTITY)
    148               return true
    149             end
    150           }
    151           false
    152         end
    153 
    154         def languages=(languages)
    155           set_languages(languages)
    156         end
    157 
    158         def values=(values)
    159           set_values(values)
    160         end
    161         private
    162         def set_languages(languages)
    163           if languages.nil?
    164             raise ArgumentError, "languages should not be nil."
    165           elsif languages.empty?
    166             raise ArgumentError, "languages shouldnot be empty."
    167           end
    168           @languages = languages
    169         end
    170 
    171         def set_values(values)
    172           if values.nil?
    173             raise ArgumentError, "values should not be nil."
    174           elsif values.empty?
    175             raise ArgumentError, "values should not be nil."
    176           end
    177           @values = values
    178         end
    179       end
    180 
    18192      class Contact < Locatable
    18293        attr_accessor :time_validity
     
    201112      end
    202113
     114      class Address < Locatable
     115        attr_reader :details
     116
     117        def initialize(args = { })
     118          super(args)
     119          self.details = args[:details]
     120        end
     121
     122        def details=(details)
     123          if details.nil?
     124            raise ArgumentError, 'details are mandatory'
     125          end
     126          @details = details
     127        end
     128
     129        def type
     130          return @name
     131        end
     132      end
     133
     134      class Actor < Party
     135        LEAGAL_IDENTITY = 'legal identity'
     136        attr_reader :languages, :roles
     137
     138        def initialize(args = { })
     139          super(args)
     140          self.roles = args[:roles]
     141          self.languages = args[:languages]
     142        end
     143
     144        def roles=(roles)
     145          if !roles.nil? && roles.empty?
     146            raise ArgumentError, 'roles should not be empty'
     147          end
     148          @roles = roles
     149        end
     150
     151        def has_legal_identity?
     152          @identities.each do |identity|
     153            if identity.purpose.value == LEAGAL_IDENTITY
     154              return true
     155            end
     156          end
     157          return false
     158        end
     159
     160        def languages=(languages)
     161          if !languages.nil? && languages.empty?
     162            raise ArgumentError, 'languages should not be empty.'
     163          end
     164          @languages = languages
     165        end
     166      end
     167
     168      class Person < Actor
     169
     170      end
     171
     172      class Organisation < Actor
     173
     174      end
     175
     176      class Group < Actor
     177
     178      end
     179
    203180      class Agent < Actor
    204181
    205182      end
    206183
    207       class Organisation < Actor
    208 
    209       end
    210 
    211       class Person < Actor
    212 
    213       end
    214 
    215       class Group < Actor
     184      class Role < Party
     185
     186      end
     187
     188      class Capability < Locatable
     189        attr_reader :credentials, :time_validity
     190
     191      end
     192
     193      class PartyRelationship < Locatable
     194
     195      end
     196
     197      class VersionedParty < Locatable
    216198
    217199      end
  • ruby/branches/0.5/spec/lib/open_ehr/rm/demographic/party_identity_spec.rb

    r362 r363  
    2121  end
    2222
     23  it 'should raise ArgumentError with nil details' do
     24    lambda {
     25      @party_identity.details = nil
     26    }.should raise_error ArgumentError
     27  end
     28
    2329  it 'purpose should return as same as name' do
    2430    @party_identity.purpose.value.should == 'test'
  • ruby/branches/0.5/spec/lib/open_ehr/rm/demographic/party_spec.rb

    r362 r363  
    5858  it 'identities should be assigned properly' do
    5959    @party.identities.size.should be_equal 2
    60 p  end
     60  end
    6161
    6262  it 'should raise ArgumentError when nil identities are assigned' do
     
    8080  end
    8181
     82  it 'should raise ArgumentError with empty contacts' do
     83    lambda {
     84      @party.contacts = Set.new
     85    }.should raise_error ArgumentError
     86  end
     87
    8288  it 'relationships should be assigned properly' do
    8389    target_ids = Set.new
     
    99105    }.should raise_error ArgumentError
    100106  end
    101  
     107
     108  it 'invaild relationship raise ArgumentError' do
     109    invalid_id = stub(ObjectID, :value => '10')
     110    invalid_source = stub(PartyRef, :id => invalid_id)
     111    invalid_rel = stub(PartyRelationship, :source => invalid_source)
     112    lambda {
     113      @party.relationships = [invalid_rel].to_set
     114    }.should raise_error ArgumentError
     115  end
    102116
    103117  it 'reverse relationship should be assigned properly' do
Note: See TracChangeset for help on using the changeset viewer.