osm 1.2.18.dev.9 → 1.2.18.dev.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +1 -0
- data/lib/osm/member.rb +53 -44
- data/spec/osm/member_spec.rb +43 -11
- data/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NjE5NjExMzM1NDIwMDc5OWQxYjRkNmM2MWE3YzBkZTNlOGE4ZGQ4Nw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MWU4NzAwZDE0ZjVkYzhmOGYyNDQwZmZjNGE3MTVlYThlNzFmYzIzMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MmZkZDQ4YjFmMmVkNWY4NGQ0MzFlNzAyZGE0NGRhOTVlYjhkMDdhYjVlNzVh
|
10
|
+
NmE2YjYzYWY1ZDYyMzUzNzY2ZTcwODg2MzIzZDU5ZjM5YWViMWJiN2Q4ZTA1
|
11
|
+
ZGQ2ZGFiYzFmOWViZDE4MDJkMGRhMWI0NDJkM2FkNzI2ODE5NWY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZWVlN2YyZDRhY2U4OTJiNzcwNzgxZDRlN2RmOWYwODkzYTI3NDA0Yzc4YmE0
|
14
|
+
NjBiZWUxNDQzMDQ0ZWY1NjRlYTRkM2VhZmNhZjlhOGY5NjY2NDdmOTI0M2Yy
|
15
|
+
MTM3MzQ3YTkwZmM1OTA4MDBhOWMzY2I4ZGE0N2IzYmEzMmUyNmI=
|
data/CHANGELOG.md
CHANGED
data/lib/osm/member.rb
CHANGED
@@ -11,9 +11,7 @@ module Osm
|
|
11
11
|
GID_FLOATING = 7
|
12
12
|
|
13
13
|
# Constants for column id
|
14
|
-
|
15
|
-
CORE_FIELD_IDS_FINISH_AT = CUSTOM_FIELD_IDS_START_AT - 1
|
16
|
-
CORE_FIELD_IDS = (1..54).to_a
|
14
|
+
CID_TITLE = 1
|
17
15
|
CID_FIRST_NAME = 2
|
18
16
|
CID_LAST_NAME = 3
|
19
17
|
CID_ADDRESS_1 = 7
|
@@ -31,12 +29,15 @@ module Osm
|
|
31
29
|
CID_RECIEVE_PHONE_2 = 21
|
32
30
|
CID_GENDER = 34
|
33
31
|
CID_SURGERY = 54
|
32
|
+
CORE_FIELD_IDS = (1..21).to_a + [34, 54]
|
34
33
|
|
35
34
|
|
36
35
|
# @!attribute [rw] id
|
37
36
|
# @return [Fixnum] the id for the member
|
38
37
|
# @!attribute [rw] section_id
|
39
38
|
# @return [Fixnum] the section the member belongs to
|
39
|
+
# @!attribute [rw] title
|
40
|
+
# @return [String] the member's title (Mr, Mrs etc.)
|
40
41
|
# @!attribute [rw] first_name
|
41
42
|
# @return [String] the member's first name
|
42
43
|
# @!attribute [rw] last_name
|
@@ -78,6 +79,7 @@ module Osm
|
|
78
79
|
|
79
80
|
attribute :id, :type => Integer
|
80
81
|
attribute :section_id, :type => Integer
|
82
|
+
attribute :title, :type => String
|
81
83
|
attribute :first_name, :type => String
|
82
84
|
attribute :last_name, :type => String
|
83
85
|
attribute :grouping_id, :type => Integer
|
@@ -99,7 +101,8 @@ module Osm
|
|
99
101
|
attribute :doctor, :type => Object
|
100
102
|
|
101
103
|
if ActiveModel::VERSION::MAJOR < 4
|
102
|
-
attr_accessible :id, :section_id, :
|
104
|
+
attr_accessible :id, :section_id, :title, :first_name, :last_name,
|
105
|
+
:grouping_id, :grouping_leader,
|
103
106
|
:date_of_birth, :started_section, :finished_section, :joined_movement, :age,
|
104
107
|
:grouping_label, :grouping_leader_label, :gender,
|
105
108
|
:additional_information, :additional_information_labels,
|
@@ -162,29 +165,29 @@ module Osm
|
|
162
165
|
var_names = {}
|
163
166
|
structure.each do |gid, group|
|
164
167
|
columns = group['columns'] || []
|
165
|
-
columns.select
|
166
|
-
custom_labels[gid.to_i] = Hash[ columns.map{ |c| [c['varname'], c['label']] } ]
|
168
|
+
custom_labels[gid.to_i] = Hash[ columns.map.select{ |a| gid.eql?(GID_CUSTOM) || !CORE_FIELD_IDS.include?(a['column_id'].to_i) }.map{ |c| [c['varname'], c['label']] } ]
|
167
169
|
var_names[gid.to_i] = DirtyHashy[ columns.map{ |c| [c['column_id'].to_i, c['varname']] } ]
|
168
170
|
end
|
169
171
|
|
170
172
|
data.each do |item|
|
171
173
|
item_data = Hash[ item['custom_data'].map{ |k,v| [k.to_i, v] } ]
|
172
|
-
member_contact = item_data[GID_MEMBER_CONTACT].nil? ? nil : Hash[ item_data[GID_MEMBER_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
173
|
-
member_custom = item_data[GID_MEMBER_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_MEMBER_CONTACT].select{ |k,v| k.to_i
|
174
|
-
primary_contact = item_data[GID_PRIMARY_CONTACT].nil? ? nil : Hash[ item_data[GID_PRIMARY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
175
|
-
primary_custom = item_data[GID_PRIMARY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_PRIMARY_CONTACT].select{ |k,v| k.to_i
|
176
|
-
secondary_contact = item_data[GID_SECONDARY_CONTACT].nil? ? nil : Hash[ item_data[GID_SECONDARY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
177
|
-
secondary_custom = item_data[GID_SECONDARY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_SECONDARY_CONTACT].select{ |k,v| k.to_i
|
178
|
-
emergency_contact = item_data[GID_EMERGENCY_CONTACT].nil? ? nil : Hash[ item_data[GID_EMERGENCY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
179
|
-
emergency_custom = item_data[GID_EMERGENCY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_EMERGENCY_CONTACT].select{ |k,v| k.to_i
|
180
|
-
doctor_contact = item_data[GID_DOCTOR_CONTACT].nil? ? nil : Hash[ item_data[GID_DOCTOR_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
181
|
-
doctor_custom = item_data[GID_DOCTOR_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_DOCTOR_CONTACT].select{ |k,v| k.to_i
|
182
|
-
floating_data = item_data[GID_FLOATING].nil? ? {} : Hash[ item_data[GID_FLOATING].map{ |k,v| [k.to_i, v] }.select{ |k,v| k
|
174
|
+
member_contact = item_data[GID_MEMBER_CONTACT].nil? ? nil : Hash[ item_data[GID_MEMBER_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
175
|
+
member_custom = item_data[GID_MEMBER_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_MEMBER_CONTACT].select{ |k,v| !(CORE_FIELD_IDS - [CID_TITLE]).include?(k.to_i) }.map{ |k,v| [var_names[GID_MEMBER_CONTACT][k.to_i], v] } ]
|
176
|
+
primary_contact = item_data[GID_PRIMARY_CONTACT].nil? ? nil : Hash[ item_data[GID_PRIMARY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
177
|
+
primary_custom = item_data[GID_PRIMARY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_PRIMARY_CONTACT].select{ |k,v| !CORE_FIELD_IDS.include?(k.to_i) }.map{ |k,v| [var_names[GID_PRIMARY_CONTACT][k.to_i], v] } ]
|
178
|
+
secondary_contact = item_data[GID_SECONDARY_CONTACT].nil? ? nil : Hash[ item_data[GID_SECONDARY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
179
|
+
secondary_custom = item_data[GID_SECONDARY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_SECONDARY_CONTACT].select{ |k,v| !CORE_FIELD_IDS.include?(k.to_i) }.map{ |k,v| [var_names[GID_SECONDARY_CONTACT][k.to_i], v] } ]
|
180
|
+
emergency_contact = item_data[GID_EMERGENCY_CONTACT].nil? ? nil : Hash[ item_data[GID_EMERGENCY_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
181
|
+
emergency_custom = item_data[GID_EMERGENCY_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_EMERGENCY_CONTACT].select{ |k,v| !CORE_FIELD_IDS.include?(k.to_i) }.map{ |k,v| [var_names[GID_EMERGENCY_CONTACT][k.to_i], v] } ]
|
182
|
+
doctor_contact = item_data[GID_DOCTOR_CONTACT].nil? ? nil : Hash[ item_data[GID_DOCTOR_CONTACT].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
183
|
+
doctor_custom = item_data[GID_DOCTOR_CONTACT].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_DOCTOR_CONTACT].select{ |k,v| !CORE_FIELD_IDS.include?(k.to_i) }.map{ |k,v| [var_names[GID_DOCTOR_CONTACT][k.to_i], v] } ]
|
184
|
+
floating_data = item_data[GID_FLOATING].nil? ? {} : Hash[ item_data[GID_FLOATING].map{ |k,v| [k.to_i, v] }.select{ |k,v| CORE_FIELD_IDS.include?(k) } ]
|
183
185
|
custom_data = item_data[GID_CUSTOM].nil? ? DirtyHashy.new : DirtyHashy[ item_data[GID_CUSTOM].map{ |k,v| [var_names[GID_CUSTOM][k.to_i], v] } ]
|
184
186
|
|
185
187
|
result.push Osm::Member.new(
|
186
188
|
:id => Osm::to_i_or_nil(item['member_id']),
|
187
189
|
:section_id => Osm::to_i_or_nil(item['section_id']),
|
190
|
+
:title => custom_data['title'],
|
188
191
|
:first_name => item['first_name'],
|
189
192
|
:last_name => item['last_name'],
|
190
193
|
:grouping_id => Osm::to_i_or_nil(item['patrol_id']),
|
@@ -198,6 +201,7 @@ module Osm
|
|
198
201
|
:joined_movement => Osm::parse_date(item['started']),
|
199
202
|
:gender => {'male'=>:male, 'female'=>:female, 'other'=>:other, 'unspecified'=>:unspecified}[(floating_data[CID_GENDER] || '').downcase],
|
200
203
|
:contact => member_contact.nil? ? nil : MemberContact.new(
|
204
|
+
title: member_contact[CID_TITLE],
|
201
205
|
first_name: item['first_name'],
|
202
206
|
last_name: item['last_name'],
|
203
207
|
address_1: member_contact[CID_ADDRESS_1],
|
@@ -217,6 +221,7 @@ module Osm
|
|
217
221
|
additional_information_labels: custom_labels[GID_MEMBER_CONTACT],
|
218
222
|
),
|
219
223
|
:primary_contact => primary_contact.nil? ? nil : PrimaryContact.new(
|
224
|
+
title: primary_contact[CID_TITLE],
|
220
225
|
first_name: primary_contact[CID_FIRST_NAME],
|
221
226
|
last_name: primary_contact[CID_LAST_NAME],
|
222
227
|
address_1: primary_contact[CID_ADDRESS_1],
|
@@ -236,6 +241,7 @@ module Osm
|
|
236
241
|
additional_information_labels: custom_labels[GID_PRIMARY_CONTACT],
|
237
242
|
),
|
238
243
|
:secondary_contact => secondary_contact.nil? ? nil : SecondaryContact.new(
|
244
|
+
title: secondary_contact[CID_TITLE],
|
239
245
|
first_name: secondary_contact[CID_FIRST_NAME],
|
240
246
|
last_name: secondary_contact[CID_LAST_NAME],
|
241
247
|
address_1: secondary_contact[CID_ADDRESS_1],
|
@@ -255,6 +261,7 @@ module Osm
|
|
255
261
|
additional_information_labels: custom_labels[GID_SECONDARY_CONTACT],
|
256
262
|
),
|
257
263
|
:emergency_contact => emergency_contact.nil? ? nil : EmergencyContact.new(
|
264
|
+
title: emergency_contact[CID_TITLE],
|
258
265
|
first_name: emergency_contact[CID_FIRST_NAME],
|
259
266
|
last_name: emergency_contact[CID_LAST_NAME],
|
260
267
|
address_1: emergency_contact[CID_ADDRESS_1],
|
@@ -270,6 +277,7 @@ module Osm
|
|
270
277
|
additional_information_labels: custom_labels[GID_EMERGENCY_CONTACT],
|
271
278
|
),
|
272
279
|
:doctor => doctor_contact.nil? ? nil : DoctorContact.new(
|
280
|
+
title: doctor_contact[CID_TITLE],
|
273
281
|
first_name: doctor_contact[CID_FIRST_NAME],
|
274
282
|
last_name: doctor_contact[CID_LAST_NAME],
|
275
283
|
surgery: doctor_contact[CID_SURGERY],
|
@@ -280,11 +288,11 @@ module Osm
|
|
280
288
|
postcode: doctor_contact[CID_POSTCODE],
|
281
289
|
phone_1: doctor_contact[CID_PHONE_1],
|
282
290
|
phone_2: doctor_contact[CID_PHONE_2],
|
283
|
-
additional_information:doctor_custom,
|
291
|
+
additional_information: doctor_custom,
|
284
292
|
additional_information_labels: custom_labels[GID_DOCTOR_CONTACT],
|
285
293
|
),
|
286
|
-
additional_information: custom_data,
|
287
|
-
additional_information_labels: custom_labels[GID_CUSTOM],
|
294
|
+
additional_information: custom_data.select{ |k,v| ! ['title'].include?(k) },
|
295
|
+
additional_information_labels: custom_labels[GID_CUSTOM].select{ |k,v| ! ['title'].include?(k) },
|
288
296
|
)
|
289
297
|
end
|
290
298
|
|
@@ -362,6 +370,20 @@ module Osm
|
|
362
370
|
updated = updated && data.is_a?(Hash) && data['ok'].eql?(true)
|
363
371
|
end # each attr to update
|
364
372
|
|
373
|
+
# Do title attribute
|
374
|
+
if force || changed_attributes.include?('title')
|
375
|
+
data = api.perform_query("ext/members/contact/?action=update", {
|
376
|
+
'associated_id' => self.id,
|
377
|
+
'associated_type' => 'member',
|
378
|
+
'value' => title,
|
379
|
+
'column_id' => CID_TITLE,
|
380
|
+
'group_id' => GID_CUSTOM,
|
381
|
+
'context' => 'members',
|
382
|
+
})
|
383
|
+
updated = updated && data.is_a?(Hash) && data['data'].is_a?(Hash) && data['data']['value'].eql?(title)
|
384
|
+
end
|
385
|
+
|
386
|
+
|
365
387
|
# Do 'floating' attributes
|
366
388
|
if force || changed_attributes.include?('gender')
|
367
389
|
new_value = {male: 'Male', female: 'Female', other: 'Other'}[gender] || 'Unspecified'
|
@@ -422,10 +444,10 @@ module Osm
|
|
422
444
|
end
|
423
445
|
|
424
446
|
# Get the full name
|
425
|
-
# @param [String] seperator What to split the
|
447
|
+
# @param [String] seperator What to split the member's title, first name and last name with
|
426
448
|
# @return [String] this scout's full name seperated by the optional seperator
|
427
449
|
def name(seperator=' ')
|
428
|
-
return "#{first_name
|
450
|
+
return [(title? ? "#{title}." : nil), first_name, last_name].select{ |i| !i.blank? }.join(seperator)
|
429
451
|
end
|
430
452
|
|
431
453
|
# Check if the member is in the leaders grouping
|
@@ -613,6 +635,8 @@ module Osm
|
|
613
635
|
|
614
636
|
|
615
637
|
class Contact < Osm::Model
|
638
|
+
# @!attribute [rw] title
|
639
|
+
# @return [String] the contact's title (Mr, Ms, Dr etc.)
|
616
640
|
# @!attribute [rw] first_name
|
617
641
|
# @return [String] the contact's first name
|
618
642
|
# @!attribute [rw] last_name
|
@@ -636,6 +660,7 @@ module Osm
|
|
636
660
|
# @!attribute [rw] additional_information_labels
|
637
661
|
# @return [DirtyHashy] the labels for the additional information (key is OSM's variable name, value is the label)
|
638
662
|
|
663
|
+
attribute :title, :type => String
|
639
664
|
attribute :first_name, :type => String
|
640
665
|
attribute :last_name, :type => String
|
641
666
|
attribute :address_1, :type => String
|
@@ -649,7 +674,8 @@ module Osm
|
|
649
674
|
attribute :additional_information_labels, :type => Object, :default => DirtyHashy.new
|
650
675
|
|
651
676
|
if ActiveModel::VERSION::MAJOR < 4
|
652
|
-
attr_accessible :
|
677
|
+
attr_accessible :title, :first_name, :last_name,
|
678
|
+
:address_1, :address_2, :address_3, :address_4,
|
653
679
|
:postcode, :phone_1, :phone_2,
|
654
680
|
:additional_information, :additional_information_labels
|
655
681
|
end
|
@@ -659,10 +685,10 @@ module Osm
|
|
659
685
|
# @param [Hash] attributes The hash of attributes (see attributes for descriptions, use Symbol of attribute name as the key)
|
660
686
|
|
661
687
|
# Get the full name
|
662
|
-
# @param [String] seperator What to split the
|
688
|
+
# @param [String] seperator What to split the contact's title, first name and last name with
|
663
689
|
# @return [String] this scout's full name seperated by the optional seperator
|
664
690
|
def name(seperator=' ')
|
665
|
-
return "#{first_name
|
691
|
+
return [(title? ? "#{title}." : nil), first_name, last_name].select{ |i| !i.blank? }.join(seperator)
|
666
692
|
end
|
667
693
|
|
668
694
|
# Get an array of all phone numbers for the contact
|
@@ -682,6 +708,7 @@ module Osm
|
|
682
708
|
require_ability_to(api, :write, :member, member.section_id)
|
683
709
|
|
684
710
|
attribute_map = {
|
711
|
+
'title' => 'data[title]',
|
685
712
|
'first_name' => 'data[firstname]',
|
686
713
|
'last_name' => 'data[lastname]',
|
687
714
|
'surgery' => 'data[surgery]',
|
@@ -828,39 +855,21 @@ module Osm
|
|
828
855
|
attr_accessible :email_1, :email_2
|
829
856
|
end
|
830
857
|
|
831
|
-
# Get the full name
|
832
|
-
# @param [String] seperator What to split the scout's first name and last name with
|
833
|
-
# @return [String] this scout's full name seperated by the optional seperator
|
834
|
-
def name(seperator=' ')
|
835
|
-
return "#{first_name}#{seperator.to_s}#{last_name}"
|
836
|
-
end
|
837
858
|
end # class EmergencyContact
|
838
859
|
|
839
860
|
|
840
861
|
class DoctorContact < Osm::Member::Contact
|
841
862
|
GROUP_ID = Osm::Member::GID_DOCTOR_CONTACT
|
842
863
|
|
843
|
-
# @!attribute [rw] first_name
|
844
|
-
# @return [String] the contact's first name
|
845
|
-
# @!attribute [rw] last_name
|
846
|
-
# @return [String] the contact's last name
|
847
864
|
# @!attribute [rw] surgery
|
848
865
|
# @return [String] the surgery name
|
849
866
|
|
850
|
-
attribute :first_name, :type => String
|
851
|
-
attribute :last_name, :type => String
|
852
867
|
attribute :surgery, :type => String
|
853
868
|
|
854
869
|
if ActiveModel::VERSION::MAJOR < 4
|
855
|
-
attr_accessible :
|
870
|
+
attr_accessible :surgery
|
856
871
|
end
|
857
872
|
|
858
|
-
# Get the full name
|
859
|
-
# @param [String] seperator What to split the scout's first name and last name with
|
860
|
-
# @return [String] this scout's full name seperated by the optional seperator
|
861
|
-
def name(seperator=' ')
|
862
|
-
return "Dr. #{first_name}#{seperator.to_s}#{last_name}"
|
863
|
-
end
|
864
873
|
end # class DoctorContact
|
865
874
|
|
866
875
|
end # Class Member
|
data/spec/osm/member_spec.rb
CHANGED
@@ -7,6 +7,7 @@ describe "Member" do
|
|
7
7
|
attributes = {
|
8
8
|
:id => 1,
|
9
9
|
:section_id => 2,
|
10
|
+
:title => 'Title',
|
10
11
|
:first_name => 'First',
|
11
12
|
:last_name => 'Last',
|
12
13
|
:date_of_birth => '2000-01-02',
|
@@ -31,6 +32,7 @@ describe "Member" do
|
|
31
32
|
|
32
33
|
member.id.should == 1
|
33
34
|
member.section_id.should == 2
|
35
|
+
member.title.should == 'Title'
|
34
36
|
member.first_name.should == 'First'
|
35
37
|
member.last_name.should == 'Last'
|
36
38
|
member.date_of_birth.should == Date.new(2000, 1, 2)
|
@@ -54,17 +56,25 @@ describe "Member" do
|
|
54
56
|
end
|
55
57
|
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
:
|
61
|
-
|
62
|
-
|
59
|
+
describe "Provides full name" do
|
60
|
+
|
61
|
+
it "Member" do
|
62
|
+
Osm::Member.new(first_name: 'First').name.should == 'First'
|
63
|
+
Osm::Member.new(first_name: 'First', last_name: 'Last').name.should == 'First Last'
|
64
|
+
Osm::Member.new(title: 'Mr', first_name: 'First', last_name: 'Last').name.should == 'Mr. First Last'
|
65
|
+
Osm::Member.new(title: 'Mr', first_name: 'First', last_name: 'Last').name('*').should == 'Mr.*First*Last'
|
66
|
+
end
|
67
|
+
|
68
|
+
it "Contact" do
|
69
|
+
Osm::Member::Contact.new(first_name: 'First').name.should == 'First'
|
70
|
+
Osm::Member::Contact.new(first_name: 'First', last_name: 'Last').name.should == 'First Last'
|
71
|
+
Osm::Member::Contact.new(title: 'Mr', first_name: 'First', last_name: 'Last').name.should == 'Mr. First Last'
|
72
|
+
Osm::Member::Contact.new(title: 'Mr', first_name: 'First', last_name: 'Last').name('*').should == 'Mr.*First*Last'
|
73
|
+
end
|
63
74
|
|
64
|
-
member.name.should == 'First Last'
|
65
|
-
member.name('_').should == 'First_Last'
|
66
75
|
end
|
67
76
|
|
77
|
+
|
68
78
|
it "Tells if member is a leader" do
|
69
79
|
Osm::Member.new(grouping_id: -2).leader?.should == true # In the leader grouping
|
70
80
|
Osm::Member.new(grouping_id: 2).leader?.should == false # In a youth grouping
|
@@ -167,11 +177,11 @@ describe "Member" do
|
|
167
177
|
'section_id' => 1,
|
168
178
|
'started' => '2006-07-17',
|
169
179
|
'custom_data' => {
|
170
|
-
'1' => {'2' => 'Primary', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '12' => 'primary@example.com', '13' => 'yes', '14' => '', '15' => '', '18' => '01234 567890', '19' => 'yes', '20' => '0987 654321', '21' => '', '8441' => 'Data for 8441'},
|
180
|
+
'1' => {'1' => 'Mrs', '2' => 'Primary', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '12' => 'primary@example.com', '13' => 'yes', '14' => '', '15' => '', '18' => '01234 567890', '19' => 'yes', '20' => '0987 654321', '21' => '', '8441' => 'Data for 8441'},
|
171
181
|
'2' => {'2' => 'Secondary', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '12' => 'secondary@example.com', '13' => 'yes', '14' => '', '15' => '', '18' => '01234 567890', '19' => 'yes', '20' => '0987 654321', '21' => '', '8442' => 'Data for 8442'},
|
172
182
|
'3' => {'2' => 'Emergency', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '12' => 'emergency@example.com', '14' => '', '18' => '01234 567890', '20' => '0987 654321', '21' => '', '8443' => 'Data for 8443'},
|
173
|
-
'4' => {'2' => 'Doctor', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '18' => '01234 567890', '20' => '0987 654321', '21' => '', '54' => 'Surgery', '8444' => 'Data for 8444'},
|
174
|
-
'5' => {'4848' => 'Data for 4848'},
|
183
|
+
'4' => {'1' => 'Dr', '2' => 'Doctor', '3' => 'Contact', '7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '18' => '01234 567890', '20' => '0987 654321', '21' => '', '54' => 'Surgery', '8444' => 'Data for 8444'},
|
184
|
+
'5' => {'1' => 'Mr', '4848' => 'Data for 4848'},
|
175
185
|
'6' => {'7' => 'Address 1', '8' => 'Address 2', '9' => 'Address 3', '10' => 'Address 4', '11' => 'Postcode', '12' => 'member@example.com', '13' => 'yes', '14' => '', '15' => '', '18' => '01234 567890', '19' => 'yes', '20' => '0987 654321', '21' => '', '8446' => 'Data for 8446'},
|
176
186
|
'7' => {'34' => 'Unspecified'},
|
177
187
|
},
|
@@ -252,6 +262,7 @@ describe "Member" do
|
|
252
262
|
{'column_id' => 8446, 'group_column_id' => '6_8446', 'label' => 'Label for 8446', 'varname' => 'label_for_8446', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
|
253
263
|
]},
|
254
264
|
{'group_id' => 5, 'description' => 'This allows you to add extra information for your members.', 'identifier' => 'customisable_data', 'name' => 'Customisable Data', 'columns' => [
|
265
|
+
{'column_id' => 1, 'group_column_id' => '5_1', 'label' => 'Title', 'varname' => 'title', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
|
255
266
|
{'column_id' => 4848, 'group_column_id' => '5_4848', 'label' => 'Label for 4848', 'varname' => 'label_for_4848', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
|
256
267
|
]},
|
257
268
|
{'group_id' => 7, 'description' => '', 'identifier' => 'floating', 'name' => 'Floating', 'columns' => [
|
@@ -267,6 +278,7 @@ describe "Member" do
|
|
267
278
|
member = members[0]
|
268
279
|
member.id.should == 123
|
269
280
|
member.section_id.should == 1
|
281
|
+
member.title.should == 'Mr'
|
270
282
|
member.first_name.should == 'John'
|
271
283
|
member.last_name.should == 'Smith'
|
272
284
|
member.date_of_birth.should == Date.new(2000, 3, 8)
|
@@ -298,6 +310,7 @@ describe "Member" do
|
|
298
310
|
member.contact.receive_email_2.should == false
|
299
311
|
member.contact.additional_information.should == {"label_for_8446"=>"Data for 8446"}
|
300
312
|
member.contact.additional_information_labels.should == {"label_for_8446"=>"Label for 8446"}
|
313
|
+
member.primary_contact.title.should == 'Mrs'
|
301
314
|
member.primary_contact.first_name.should == 'Primary'
|
302
315
|
member.primary_contact.last_name.should == 'Contact'
|
303
316
|
member.primary_contact.address_1.should == 'Address 1'
|
@@ -345,6 +358,7 @@ describe "Member" do
|
|
345
358
|
member.emergency_contact.email_2.should == ''
|
346
359
|
member.emergency_contact.additional_information.should == {"label_for_8443"=>"Data for 8443"}
|
347
360
|
member.emergency_contact.additional_information_labels.should == {"label_for_8443"=>"Label for 8443"}
|
361
|
+
member.doctor.title.should == 'Dr'
|
348
362
|
member.doctor.first_name.should == 'Doctor'
|
349
363
|
member.doctor.last_name.should == 'Contact'
|
350
364
|
member.doctor.surgery.should == 'Surgery'
|
@@ -532,6 +546,7 @@ describe "Member" do
|
|
532
546
|
before :each do
|
533
547
|
attributes = {
|
534
548
|
:section_id => 2,
|
549
|
+
:title => 'Title',
|
535
550
|
:first_name => 'First',
|
536
551
|
:last_name => 'Last',
|
537
552
|
:date_of_birth => '2000-01-02',
|
@@ -619,6 +634,7 @@ describe "Member" do
|
|
619
634
|
attributes = {
|
620
635
|
:id => 1,
|
621
636
|
:section_id => 2,
|
637
|
+
:title => 'Title',
|
622
638
|
:first_name => 'First',
|
623
639
|
:last_name => 'Last',
|
624
640
|
:date_of_birth => '2000-01-02',
|
@@ -805,6 +821,7 @@ describe "Member" do
|
|
805
821
|
"associated_type" => "member",
|
806
822
|
"associated_id" => 1,
|
807
823
|
"group_id" => group_id,
|
824
|
+
"data[title]" => nil,
|
808
825
|
"data[firstname]" => nil,
|
809
826
|
"data[lastname]" => nil,
|
810
827
|
"data[address1]" => nil,
|
@@ -832,6 +849,7 @@ describe "Member" do
|
|
832
849
|
"associated_type" => "member",
|
833
850
|
"associated_id" => 1,
|
834
851
|
"group_id" => 3,
|
852
|
+
"data[title]" => nil,
|
835
853
|
"data[firstname]" => nil,
|
836
854
|
"data[lastname]" => nil,
|
837
855
|
"data[address1]" => nil,
|
@@ -854,6 +872,7 @@ describe "Member" do
|
|
854
872
|
"associated_type" => "member",
|
855
873
|
"associated_id" => 1,
|
856
874
|
"group_id" => 4,
|
875
|
+
"data[title]" => nil,
|
857
876
|
"data[firstname]" => nil,
|
858
877
|
"data[lastname]" => nil,
|
859
878
|
"data[surgery]" => nil,
|
@@ -867,6 +886,19 @@ describe "Member" do
|
|
867
886
|
"data[test_var]" => "This is a test",
|
868
887
|
}}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"status":true}'}) }
|
869
888
|
|
889
|
+
HTTParty.should_receive(:post).with('https://www.onlinescoutmanager.co.uk/ext/members/contact/?action=update', {:body => {
|
890
|
+
"apiid" => "1",
|
891
|
+
"token" => "API TOKEN",
|
892
|
+
"userid" => "user_id",
|
893
|
+
"secret" => "secret",
|
894
|
+
"context" => "members",
|
895
|
+
"associated_type" => "member",
|
896
|
+
"associated_id" => 1,
|
897
|
+
"group_id" => 5,
|
898
|
+
"column_id" => 1,
|
899
|
+
"value" => "Title",
|
900
|
+
}}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"data":{"value":"Title"}}'}) }
|
901
|
+
|
870
902
|
Osm::Term.stub(:get_for_section) { [] }
|
871
903
|
|
872
904
|
@member.update(@api, true).should == true
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: osm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.18.dev.
|
4
|
+
version: 1.2.18.dev.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Gauld
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|