osm 1.2.18.dev.9 → 1.2.18.dev.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|