osm 1.2.17 → 1.2.18.dev

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.
@@ -11,7 +11,7 @@ describe "Gift Aid" do
11
11
  )
12
12
 
13
13
  d.donation_date.should == Date.new(2000, 1, 2)
14
- d.valid?.should be_true
14
+ d.valid?.should == true
15
15
  end
16
16
 
17
17
  it "Sorts Donation by date" do
@@ -51,7 +51,7 @@ describe "Gift Aid" do
51
51
  d.donations.should == {
52
52
  Date.new(2012, 1, 2) => '1.23',
53
53
  }
54
- d.valid?.should be_true
54
+ d.valid?.should == true
55
55
  end
56
56
 
57
57
  it "Sorts Data by section_id, grouping_id, last_name then first_name" do
@@ -99,7 +99,7 @@ describe "Gift Aid" do
99
99
  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/giftaid.php?action=getGrid&sectionid=1&termid=2", :body => data.to_json, :content_type => 'application/json')
100
100
 
101
101
  data = Osm::GiftAid.get_data(@api, 1, 2)
102
- data.is_a?(Array).should be_true
102
+ data.is_a?(Array).should == true
103
103
  data.size.should == 1
104
104
  data = data[0]
105
105
  data.donations.should == {
@@ -112,7 +112,7 @@ describe "Gift Aid" do
112
112
  data.member_id.should == 2
113
113
  data.total.should == '2.34'
114
114
  data.section_id.should == 1
115
- data.valid?.should be_true
115
+ data.valid?.should == true
116
116
  end
117
117
 
118
118
  it "Update donation" do
@@ -139,7 +139,7 @@ describe "Gift Aid" do
139
139
  :members => [3, 4],
140
140
  :amount => '1.23',
141
141
  :note => 'Note',
142
- }).should be_true
142
+ }).should == true
143
143
  end
144
144
 
145
145
  describe "Update data" do
@@ -188,7 +188,7 @@ describe "Gift Aid" do
188
188
  @data.tax_payer_name = 'n'
189
189
  @data.tax_payer_address = 'a'
190
190
  @data.tax_payer_postcode = 'pc'
191
- @data.update(@api).should be_true
191
+ @data.update(@api).should == true
192
192
  end
193
193
 
194
194
  it "A donation" do
@@ -214,7 +214,7 @@ describe "Gift Aid" do
214
214
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>body_data.to_json}) }
215
215
 
216
216
  @data.donations[Date.new(2012, 1, 3)] = '3.45'
217
- @data.update(@api).should be_true
217
+ @data.update(@api).should == true
218
218
  end
219
219
 
220
220
  end
@@ -29,9 +29,9 @@ describe "Grouping" do
29
29
  patrol.id.should == 1
30
30
  patrol.section_id.should == 2
31
31
  patrol.name.should == 'Patrol Name'
32
- patrol.active.should be_true
32
+ patrol.active.should == true
33
33
  patrol.points.should == 3
34
- patrol.valid?.should be_true
34
+ patrol.valid?.should == true
35
35
  end
36
36
 
37
37
  it "Handles no data" do
@@ -61,7 +61,7 @@ describe "Grouping" do
61
61
  'active' => grouping.active,
62
62
  }}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>''}) }
63
63
 
64
- grouping.update(@api).should be_true
64
+ grouping.update(@api).should == true
65
65
  end
66
66
 
67
67
  it "Update points in OSM (succeded)" do
@@ -83,7 +83,7 @@ describe "Grouping" do
83
83
  'points' => grouping.points,
84
84
  }}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{}'}) }
85
85
 
86
- grouping.update(@api).should be_true
86
+ grouping.update(@api).should == true
87
87
  end
88
88
 
89
89
  it "Update in OSM (failed)" do
@@ -96,7 +96,7 @@ describe "Grouping" do
96
96
  grouping.active = true
97
97
 
98
98
  HTTParty.stub(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"done":false}'}) }
99
- grouping.update(@api).should be_false
99
+ grouping.update(@api).should == false
100
100
  end
101
101
 
102
102
  end
@@ -20,9 +20,9 @@ describe "Invoice" do
20
20
  i.name.should == 'Name'
21
21
  i.extra_details.should == 'Extra Details'
22
22
  i.date.should == Date.new(2001, 2, 3)
23
- i.archived.should be_true
24
- i.finalised.should be_true
25
- i.valid?.should be_true
23
+ i.archived.should == true
24
+ i.finalised.should == true
25
+ i.valid?.should == true
26
26
  end
27
27
 
28
28
  it "Sorts Invoice by Section ID, Name then Date" do
@@ -58,7 +58,7 @@ describe "Invoice" do
58
58
  ii.payto.should == 'Name'
59
59
  ii.description.should == 'Comments'
60
60
  ii.budget_name.should == 'Budget'
61
- ii.valid?.should be_true
61
+ ii.valid?.should == true
62
62
  end
63
63
 
64
64
  it "Sorts by Invoice then Date" do
@@ -168,9 +168,9 @@ describe "Invoice" do
168
168
  invoice.name.should == 'Invoice 1'
169
169
  invoice.extra_details.should == 'Some more details'
170
170
  invoice.date.should == Date.new(2010, 1, 1)
171
- invoice.archived.should be_false
172
- invoice.finalised.should be_false
173
- invoice.valid?.should be_true
171
+ invoice.archived.should == false
172
+ invoice.finalised.should == false
173
+ invoice.valid?.should == true
174
174
  end
175
175
 
176
176
  it "Honours archived option" do
@@ -291,7 +291,7 @@ describe "Invoice" do
291
291
  'date' => '2002-03-04',
292
292
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"id":2}'}) }
293
293
 
294
- invoice.create(@api).should be_true
294
+ invoice.create(@api).should == true
295
295
  invoice.id.should == 2
296
296
  end
297
297
 
@@ -314,7 +314,7 @@ describe "Invoice" do
314
314
  'date' => '2002-03-04',
315
315
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"message":"Something went wrong"}'}) }
316
316
 
317
- invoice.create(@api).should be_false
317
+ invoice.create(@api).should == false
318
318
  invoice.id.should be_nil
319
319
  end
320
320
 
@@ -339,7 +339,7 @@ describe "Invoice" do
339
339
  'date' => '2002-03-04',
340
340
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":true}'}) }
341
341
 
342
- invoice.update(@api).should be_true
342
+ invoice.update(@api).should == true
343
343
  end
344
344
 
345
345
  it "Update (failure)" do
@@ -363,7 +363,7 @@ describe "Invoice" do
363
363
  'date' => '2002-03-04',
364
364
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":false}'}) }
365
365
 
366
- invoice.update(@api).should be_false
366
+ invoice.update(@api).should == false
367
367
  end
368
368
 
369
369
  it "Delete (success)" do
@@ -378,7 +378,7 @@ describe "Invoice" do
378
378
  'invoiceid' => 1,
379
379
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":true}'}) }
380
380
 
381
- invoice.delete(@api).should be_true
381
+ invoice.delete(@api).should == true
382
382
  end
383
383
 
384
384
  it "Delete (failure)" do
@@ -393,7 +393,7 @@ describe "Invoice" do
393
393
  'invoiceid' => 1,
394
394
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":false}'}) }
395
395
 
396
- invoice.delete(@api).should be_false
396
+ invoice.delete(@api).should == false
397
397
  end
398
398
 
399
399
  it "Finalise invoice (success)" do
@@ -407,8 +407,8 @@ describe "Invoice" do
407
407
  'secret' => 'secret',
408
408
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":true}'}) }
409
409
 
410
- invoice.finalise(@api).should be_true
411
- invoice.finalised.should be_true
410
+ invoice.finalise(@api).should == true
411
+ invoice.finalised.should == true
412
412
  end
413
413
 
414
414
  it "Finalise invoice (failure)" do
@@ -422,8 +422,8 @@ describe "Invoice" do
422
422
  'secret' => 'secret',
423
423
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":false}'}) }
424
424
 
425
- invoice.finalise(@api).should be_false
426
- invoice.finalised.should be_false
425
+ invoice.finalise(@api).should == false
426
+ invoice.finalised.should == false
427
427
  end
428
428
 
429
429
  it "Finalise invoice (already finalised)" do
@@ -431,8 +431,8 @@ describe "Invoice" do
431
431
 
432
432
  HTTParty.should_not_receive(:post)
433
433
 
434
- invoice.finalise(@api).should be_false
435
- invoice.finalised.should be_true
434
+ invoice.finalise(@api).should == false
435
+ invoice.finalised.should == true
436
436
  end
437
437
 
438
438
  it "Archive invoice (success)" do
@@ -448,8 +448,8 @@ describe "Invoice" do
448
448
  'archived' => 1,
449
449
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":true}'}) }
450
450
 
451
- invoice.archive(@api).should be_true
452
- invoice.archived.should be_true
451
+ invoice.archive(@api).should == true
452
+ invoice.archived.should == true
453
453
  end
454
454
 
455
455
  it "Archive invoice (failure)" do
@@ -465,8 +465,8 @@ describe "Invoice" do
465
465
  'archived' => 1,
466
466
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":false}'}) }
467
467
 
468
- invoice.archive(@api).should be_false
469
- invoice.archived.should be_false
468
+ invoice.archive(@api).should == false
469
+ invoice.archived.should == false
470
470
  end
471
471
 
472
472
  it "Archive invoice (already archived)" do
@@ -474,8 +474,8 @@ describe "Invoice" do
474
474
 
475
475
  HTTParty.should_not_receive(:post)
476
476
 
477
- invoice.archive(@api).should be_false
478
- invoice.archived.should be_true
477
+ invoice.archive(@api).should == false
478
+ invoice.archived.should == true
479
479
  end
480
480
 
481
481
  end
@@ -502,7 +502,7 @@ describe "Invoice" do
502
502
  item.payto.should == 'John Smith'
503
503
  item.budget_name.should == 'Default'
504
504
  item.description.should == 'Comment'
505
- item.valid?.should be_true
505
+ item.valid?.should == true
506
506
  end
507
507
 
508
508
  it "Create (success)" do
@@ -558,7 +558,7 @@ describe "Invoice" do
558
558
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => {osm_name => new_value}.to_json}) }
559
559
  end
560
560
 
561
- item.create(@api).should be_true
561
+ item.create(@api).should == true
562
562
  item.id.should == 2
563
563
  item.record_id.should == 4
564
564
  end
@@ -588,7 +588,7 @@ describe "Invoice" do
588
588
  ]
589
589
  invoice.should_receive(:get_items).with(@api, {:no_cache=>true}).and_return(data)
590
590
 
591
- item.create(@api).should be_false
591
+ item.create(@api).should == false
592
592
  end
593
593
 
594
594
  it "Update (success)" do
@@ -628,7 +628,7 @@ describe "Invoice" do
628
628
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => {osm_name => new_value}.to_json}) }
629
629
  end
630
630
 
631
- item.update(@api).should be_true
631
+ item.update(@api).should == true
632
632
  end
633
633
 
634
634
  it "Update (failure)" do
@@ -659,7 +659,7 @@ describe "Invoice" do
659
659
  'value' => 'A new description',
660
660
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"comments":"A description"}'}) }
661
661
 
662
- item.update(@api).should be_false
662
+ item.update(@api).should == false
663
663
  end
664
664
 
665
665
  it "Delete (success)" do
@@ -674,7 +674,7 @@ describe "Invoice" do
674
674
  'id' => 1,
675
675
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":true}'}) }
676
676
 
677
- item.delete(@api).should be_true
677
+ item.delete(@api).should == true
678
678
  end
679
679
 
680
680
  it "Delete (failure)" do
@@ -689,7 +689,7 @@ describe "Invoice" do
689
689
  'id' => 1,
690
690
  }) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body => '{"ok":false}'}) }
691
691
 
692
- item.delete(@api).should be_false
692
+ item.delete(@api).should == false
693
693
  end
694
694
 
695
695
  end
@@ -34,7 +34,7 @@ describe "Meeting" do
34
34
  e.date.should == Date.new(2000, 1, 2)
35
35
  e.activities.should == []
36
36
  e.badge_links.should == []
37
- e.valid?.should be_true
37
+ e.valid?.should == true
38
38
  end
39
39
 
40
40
  it "Sorts by Section ID, Meeting date, Start time and then Meeting ID" do
@@ -61,7 +61,7 @@ describe "Meeting" do
61
61
  ea.activity_id.should == 2
62
62
  ea.title.should == 'Activity Name'
63
63
  ea.notes.should == 'Notes'
64
- ea.valid?.should be_true
64
+ ea.valid?.should == true
65
65
  end
66
66
 
67
67
  it "Sorts by title then activity_id" do
@@ -106,7 +106,7 @@ describe "Meeting" do
106
106
  programme = Osm::Meeting.get_for_section(@api, 3, 4)
107
107
  programme.size.should == 1
108
108
  meeting = programme[0]
109
- meeting.is_a?(Osm::Meeting).should be_true
109
+ meeting.is_a?(Osm::Meeting).should == true
110
110
  meeting.id.should == 5
111
111
  meeting.section_id.should == 3
112
112
  meeting.title.should == 'Weekly Meeting 1'
@@ -199,7 +199,7 @@ describe "Meeting" do
199
199
  :start_time => '11:11',
200
200
  :finish_time => '22:22',
201
201
  :title => 'Title',
202
- }).is_a?(Osm::Meeting).should be_true
202
+ }).is_a?(Osm::Meeting).should == true
203
203
  end
204
204
 
205
205
  it "Create a meeting (failed)" do
@@ -232,7 +232,7 @@ describe "Meeting" do
232
232
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":0}'}) }
233
233
  activity = Osm::Activity.new(:id => 2, :title => 'Title')
234
234
  meeting = Osm::Meeting.new(:section_id => 1, :date => Date.new(2000, 1, 2))
235
- meeting.add_activity(@api, activity, 'Notes').should be_true
235
+ meeting.add_activity(@api, activity, 'Notes').should == true
236
236
  meeting.activities[0].activity_id.should == 2
237
237
  end
238
238
 
@@ -240,7 +240,7 @@ describe "Meeting" do
240
240
  HTTParty.should_receive(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
241
241
  activity = Osm::Activity.new(:id => 2, :title => 'Title')
242
242
  meeting = Osm::Meeting.new(:section_id => 1, :date => Date.new(2000, 1, 2))
243
- meeting.add_activity(@api, activity, 'Notes').should be_false
243
+ meeting.add_activity(@api, activity, 'Notes').should == false
244
244
  end
245
245
 
246
246
 
@@ -276,7 +276,7 @@ describe "Meeting" do
276
276
  :requirement_id => 93384,
277
277
  )]
278
278
  )
279
- meeting.update(@api).should be_true
279
+ meeting.update(@api).should == true
280
280
  end
281
281
 
282
282
  it "Update a meeting (failed)" do
@@ -294,7 +294,7 @@ describe "Meeting" do
294
294
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
295
295
 
296
296
  meeting = Osm::Meeting.new(:id=>1, :section_id=>2, :date=>Date.new(2000, 01, 02))
297
- meeting.update(@api).should be_false
297
+ meeting.update(@api).should == false
298
298
  end
299
299
 
300
300
  it "Update a meeting (invalid meeting)" do
@@ -315,7 +315,7 @@ describe "Meeting" do
315
315
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>''}) }
316
316
 
317
317
  meeting = Osm::Meeting.new(:id=>1, :section_id=>2)
318
- meeting.delete(@api).should be_true
318
+ meeting.delete(@api).should == true
319
319
  end
320
320
 
321
321
  end # Describe using API
@@ -339,7 +339,7 @@ describe "Meeting" do
339
339
  activity.activity_id.should == 6
340
340
  activity.title.should == 'Activity 6'
341
341
  activity.notes.should == 'Some notes'
342
- meeting.valid?.should be_true
342
+ meeting.valid?.should == true
343
343
  end
344
344
  end
345
345
 
@@ -7,86 +7,50 @@ describe "Member" do
7
7
  attributes = {
8
8
  :id => 1,
9
9
  :section_id => 2,
10
- :type => '',
11
10
  :first_name => 'First',
12
11
  :last_name => 'Last',
13
- :email1 => 'email1@example.com',
14
- :email2 => 'email2@example.com',
15
- :email3 => 'email3@example.com',
16
- :email4 => 'email4@example.com',
17
- :phone1 => '11111 111111',
18
- :phone2 => '222222',
19
- :phone3 => '+33 3333 333333',
20
- :phone4 => '4444 444 444',
21
- :address => '1 Some Road',
22
- :address2 => '',
23
12
  :date_of_birth => '2000-01-02',
24
- :started => '2006-01-02',
25
- :joining_in_years => '2',
26
- :parents => 'John and Jane Doe',
27
- :notes => 'None',
28
- :medical => 'Nothing',
29
- :religion => 'Unknown',
30
- :school=> 'Some School',
31
- :ethnicity => 'Yes',
32
- :subs => 'Upto end of 2007',
33
- :custom1 => 'Custom Field 1',
34
- :custom2 => 'Custom Field 2',
35
- :custom3 => 'Custom Field 3',
36
- :custom4 => 'Custom Field 4',
37
- :custom5 => 'Custom Field 5',
38
- :custom6 => 'Custom Field 6',
39
- :custom7 => 'Custom Field 7',
40
- :custom8 => 'Custom Field 8',
41
- :custom9 => 'Custom Field 9',
42
13
  :grouping_id => '3',
43
14
  :grouping_leader => 0,
44
- :joined => '2006-01-07',
45
- :age => '06/07',
46
- :joined_years => 1,
15
+ :grouping_label => 'Grouping',
16
+ :grouping_leader_label => '6er',
17
+ :age => '06 / 07',
18
+ :gender => :other,
19
+ :joined_movement => '2006-01-02',
20
+ :started_section => '2006-01-07',
21
+ :finished_section => '2007-12-31',
22
+ :custom => {'12_3' => '123'},
23
+ :custom_labels => {'12_3' => 'Label for 123'},
24
+ :contact => Osm::Member::MemberContact.new(postcode: 'A'),
25
+ :primary_contact => Osm::Member::PrimaryContact.new(postcode: 'B'),
26
+ :secondary_contact => Osm::Member::PrimaryContact.new(postcode: 'C'),
27
+ :emergency_contact => Osm::Member::EmergencyContact.new(postcode: 'D'),
28
+ :doctor => Osm::Member::DoctorContact.new(postcode: 'E'),
47
29
  }
48
30
  member = Osm::Member.new(attributes)
49
31
 
50
32
  member.id.should == 1
51
33
  member.section_id.should == 2
52
- member.type.should == ''
53
34
  member.first_name.should == 'First'
54
35
  member.last_name.should == 'Last'
55
- member.email1.should == 'email1@example.com'
56
- member.email2.should == 'email2@example.com'
57
- member.email3.should == 'email3@example.com'
58
- member.email4.should == 'email4@example.com'
59
- member.phone1.should == '11111 111111'
60
- member.phone2.should == '222222'
61
- member.phone3.should == '+33 3333 333333'
62
- member.phone4.should == '4444 444 444'
63
- member.address.should == '1 Some Road'
64
- member.address2.should == ''
65
36
  member.date_of_birth.should == Date.new(2000, 1, 2)
66
- member.started.should == Date.new(2006, 1, 2)
67
- member.joining_in_years.should == 2
68
- member.parents.should == 'John and Jane Doe'
69
- member.notes.should == 'None'
70
- member.medical.should == 'Nothing'
71
- member.religion.should == 'Unknown'
72
- member.school.should == 'Some School'
73
- member.ethnicity.should == 'Yes'
74
- member.subs.should == 'Upto end of 2007'
75
- member.custom1.should == 'Custom Field 1'
76
- member.custom2.should == 'Custom Field 2'
77
- member.custom3.should == 'Custom Field 3'
78
- member.custom4.should == 'Custom Field 4'
79
- member.custom5.should == 'Custom Field 5'
80
- member.custom6.should == 'Custom Field 6'
81
- member.custom7.should == 'Custom Field 7'
82
- member.custom8.should == 'Custom Field 8'
83
- member.custom9.should == 'Custom Field 9'
84
37
  member.grouping_id.should == 3
85
38
  member.grouping_leader.should == 0
86
- member.joined.should == Date.new(2006, 1, 7)
87
- member.age.should == '06/07'
88
- member.joined_years.should == 1
89
- member.valid?.should be_true
39
+ member.grouping_label.should == 'Grouping'
40
+ member.grouping_leader_label.should == '6er'
41
+ member.age.should == '06 / 07'
42
+ member.gender.should == :other
43
+ member.joined_movement.should == Date.new(2006, 1, 2)
44
+ member.started_section.should == Date.new(2006, 1, 7)
45
+ member.finished_section.should == Date.new(2007, 12, 31)
46
+ member.custom.should == {'12_3' => '123'}
47
+ member.custom_labels.should == {'12_3' => 'Label for 123'}
48
+ member.contact.postcode.should == 'A'
49
+ member.primary_contact.postcode.should == 'B'
50
+ member.secondary_contact.postcode.should == 'C'
51
+ member.emergency_contact.postcode.should == 'D'
52
+ member.doctor.postcode.should == 'E'
53
+ member.valid?.should == true
90
54
  end
91
55
 
92
56
 
@@ -102,15 +66,15 @@ describe "Member" do
102
66
  end
103
67
 
104
68
  it "Tells if member is a leader" do
105
- Osm::Member.new(grouping_id: -2).leader?.should be_true # In the leader grouping
106
- Osm::Member.new(grouping_id: 2).leader?.should be_false # In a youth grouping
107
- Osm::Member.new(grouping_id: 0).leader?.should be_false # Not in a grouping
69
+ Osm::Member.new(grouping_id: -2).leader?.should == true # In the leader grouping
70
+ Osm::Member.new(grouping_id: 2).leader?.should == false # In a youth grouping
71
+ Osm::Member.new(grouping_id: 0).leader?.should == false # Not in a grouping
108
72
  end
109
73
 
110
74
  it "Tells if member is a youth member" do
111
- Osm::Member.new(grouping_id: -2).youth?.should be_false # In the leader grouping
112
- Osm::Member.new(grouping_id: 2).youth?.should be_true # In a youth grouping
113
- Osm::Member.new(grouping_id: 0).youth?.should be_false # Not in a grouping
75
+ Osm::Member.new(grouping_id: -2).youth?.should == false # In the leader grouping
76
+ Osm::Member.new(grouping_id: 2).youth?.should == true # In a youth grouping
77
+ Osm::Member.new(grouping_id: 0).youth?.should == false # Not in a grouping
114
78
  end
115
79
 
116
80
  it "Provides each part of age" do
@@ -123,6 +87,45 @@ describe "Member" do
123
87
  member.age_months.should == 7
124
88
  end
125
89
 
90
+ it "Tells if the member is male" do
91
+ Osm::Member.new(gender: :male).male?.should == true
92
+ Osm::Member.new(gender: :female).male?.should == false
93
+ Osm::Member.new(gender: :other).male?.should == false
94
+ Osm::Member.new(gender: :unspecified).male?.should == false
95
+ Osm::Member.new(gender: nil).male?.should == false
96
+ end
97
+
98
+ it "Tells if the member is female" do
99
+ Osm::Member.new(gender: :female).female?.should == true
100
+ Osm::Member.new(gender: :male).female?.should == false
101
+ Osm::Member.new(gender: :other).female?.should == false
102
+ Osm::Member.new(gender: :unspecified).female?.should == false
103
+ Osm::Member.new(gender: nil).female?.should == false
104
+ end
105
+
106
+ describe "Tells if the member is currently in the section" do
107
+ it "Today" do
108
+ Osm::Member.new(started_section: Date.yesterday).current?.should == true
109
+ Osm::Member.new(started_section: Date.today).current?.should == true
110
+ Osm::Member.new(started_section: Date.tomorrow).current?.should == false
111
+ Osm::Member.new(started_section: Date.yesterday, finished_section: Date.yesterday).current?.should == false
112
+ Osm::Member.new(started_section: Date.yesterday, finished_section: Date.today).current?.should == true
113
+ Osm::Member.new(started_section: Date.yesterday, finished_section: Date.tomorrow).current?.should == true
114
+ end
115
+
116
+ it "Another date" do
117
+ yesterday = Date.new(2014, 10, 15)
118
+ today = Date.new(2014, 10, 16)
119
+ tomorrow = Date.new(2014, 10, 17)
120
+ Osm::Member.new(started_section: yesterday).current?(today).should == true
121
+ Osm::Member.new(started_section: today).current?(today).should == true
122
+ Osm::Member.new(started_section: tomorrow).current?(today).should == false
123
+ Osm::Member.new(started_section: yesterday, finished_section: yesterday).current?(today).should == false
124
+ Osm::Member.new(started_section: yesterday, finished_section: today).current?(today).should == true
125
+ Osm::Member.new(started_section: yesterday, finished_section: tomorrow).current?(today).should == true
126
+ end
127
+ end
128
+
126
129
 
127
130
  it "Sorts by section_id, grouping_id, grouping_leader (descending), last_name then first_name" do
128
131
  m1 = Osm::Member.new(:section_id => 1, :grouping_id => 1, :grouping_leader => 1, :last_name => 'a', :first_name => 'a')
@@ -140,88 +143,233 @@ describe "Member" do
140
143
 
141
144
  describe "Using the API" do
142
145
 
143
- it "Create from API data" do
144
- body = [
145
- {"sectionConfig"=>"{\"subscription_level\":1,\"subscription_expires\":\"2013-01-05\",\"sectionType\":\"beavers\",\"columnNames\":{\"column_names\":\"names\"},\"numscouts\":10,\"hasUsedBadgeRecords\":true,\"hasProgramme\":true,\"extraRecords\":[],\"wizard\":\"false\",\"fields\":{\"fields\":true},\"intouch\":{\"intouch_fields\":true},\"mobFields\":{\"mobile_fields\":true}}", "groupname"=>"3rd Somewhere", "groupid"=>"3", "groupNormalised"=>"1", "sectionid"=>"1", "sectionname"=>"Section 1", "section"=>"beavers", "isDefault"=>"1", "permissions"=>{"badge"=>10, "member"=>20, "user"=>100, "register"=>100, "contact"=>100, "programme"=>100, "originator"=>1, "events"=>100, "finance"=>100, "flexi"=>100}},
146
- ]
147
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/api.php?action=getUserRoles", :body => body.to_json, :content_type => 'application/json')
148
-
146
+ it "Get from OSM" do
149
147
  body = {
150
- 'identifier' => 'scoutid',
151
- 'items' => [{
152
- 'scoutid' => 1,
153
- 'sectionidO' => 2,
154
- 'type' => '',
155
- 'firstname' => 'First',
156
- 'lastname' => 'Last',
157
- 'email1' => 'email1@example.com',
158
- 'email2' => 'email2@example.com',
159
- 'email3' => 'email3@example.com',
160
- 'email4' => 'email4@example.com',
161
- 'phone1' => '11111 111111',
162
- 'phone2' => '222222',
163
- 'phone3' => '+33 3333 333333',
164
- 'phone4' => '4444 444 444',
165
- 'address' => '1 Some Road',
166
- 'address2' => '',
167
- 'dob' => '2000-01-02',
168
- 'started' => '2006-01-02',
169
- 'joining_in_yrs' => '2',
170
- 'parents' => 'John and Jane Doe',
171
- 'notes' => 'None',
172
- 'medical' => 'Nothing',
173
- 'religion' => 'Unknown',
174
- 'school'=> 'Some School',
175
- 'ethnicity' => 'Yes',
176
- 'subs' => 'Upto end of 2007',
177
- 'custom1' => 'Custom Field 1',
178
- 'custom2' => 'Custom Field 2',
179
- 'custom3' => 'Custom Field 3',
180
- 'custom4' => 'Custom Field 4',
181
- 'custom5' => 'Custom Field 5',
182
- 'custom6' => 'Custom Field 6',
183
- 'custom7' => 'Custom Field 7',
184
- 'custom8' => 'Custom Field 8',
185
- 'custom9' => 'Custom Field 9',
186
- 'patrolid' => '3',
187
- 'patrolleader' => 0,
188
- 'joined' => '2006-01-07',
189
- 'age' => '06/07',
190
- 'yrs' => 1,
191
- 'patrol' => 'Blue',
192
- 'patrolidO' => '4',
193
- 'patrolleaderO' => 0,
194
- }]
148
+ 'status' => true,
149
+ 'error' => nil,
150
+ 'data' => {
151
+ '123' => {
152
+ 'acive' => true,
153
+ 'age' => '12 / 00',
154
+ 'date_of_birth' => '2000-03-08',
155
+ 'end_date' => '2010-06-03',
156
+ 'first_name' => 'John',
157
+ 'joined' => '2008-07-12',
158
+ 'last_name' => 'Smith',
159
+ 'member_id' => 123,
160
+ 'patrol' => 'Leaders',
161
+ 'patrol_id' => -2,
162
+ 'patrol_role_level' => 1,
163
+ 'patrol_role_level_label' => 'Assistant leader',
164
+ 'section_id' => 1,
165
+ 'started' => '2006-07-17',
166
+ 'custom_data' => {
167
+ '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'},
168
+ '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'},
169
+ '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'},
170
+ '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'},
171
+ '5' => {'4848' => 'Data for 4848'},
172
+ '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'},
173
+ '7' => {'34' => 'Unspecified'},
174
+ },
175
+ }
176
+ },
177
+ 'meta' => {
178
+ 'leader_count' => 20,
179
+ 'member_count' => 30,
180
+ 'status' => true,
181
+ 'structure' => [
182
+ {'group_id' => 1, 'description' => '', 'identifier' => 'contact_primary_1', 'name' => 'Primary Contact 1', 'columns' => [
183
+ {'column_id' => 2, 'group_column_id' => '1_2', 'label' => 'First Name', 'varname' => 'firstname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
184
+ {'column_id' => 3, 'group_column_id' => '1_3', 'label' => 'Last Name', 'varname' => 'lastname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
185
+ {'column_id' => 7, 'group_column_id' => '1_7', 'label' => 'Address 1', 'varname' => 'address1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
186
+ {'column_id' => 8, 'group_column_id' => '1_8', 'label' => 'Address 2', 'varname' => 'address2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
187
+ {'column_id' => 9, 'group_column_id' => '1_9', 'label' => 'Address 3', 'varname' => 'address3', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
188
+ {'column_id' => 10, 'group_column_id' => '1_10', 'label' => 'Address 4', 'varname' => 'address4', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
189
+ {'column_id' => 11, 'group_column_id' => '1_11', 'label' => 'Postcode', 'varname' => 'postcode', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
190
+ {'column_id' => 12, 'group_column_id' => '1_12', 'label' => 'Email 1', 'varname' => 'email1', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
191
+ {'column_id' => 14, 'group_column_id' => '1_14', 'label' => 'Email 2', 'varname' => 'email2', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
192
+ {'column_id' => 18, 'group_column_id' => '1_18', 'label' => 'Phone 1', 'varname' => 'phone1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
193
+ {'column_id' => 20, 'group_column_id' => '1_20', 'label' => 'Phone 2', 'varname' => 'phone2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
194
+ {'column_id' => 8441, 'group_column_id' => '1_8441', 'label' => 'Label for 8441', 'varname' => 'label_for_8441', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
195
+ ]},
196
+ {'group_id' => 2, 'description' => '', 'identifier' => 'contact_primary_2', 'name' => 'Primary Contact 2', 'columns' => [
197
+ {'column_id' => 2, 'group_column_id' => '2_2', 'label' => 'First Name', 'varname' => 'firstname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
198
+ {'column_id' => 3, 'group_column_id' => '2_3', 'label' => 'Last Name', 'varname' => 'lastname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
199
+ {'column_id' => 7, 'group_column_id' => '2_7', 'label' => 'Address 1', 'varname' => 'address1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
200
+ {'column_id' => 8, 'group_column_id' => '2_8', 'label' => 'Address 2', 'varname' => 'address2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
201
+ {'column_id' => 9, 'group_column_id' => '2_9', 'label' => 'Address 3', 'varname' => 'address3', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
202
+ {'column_id' => 10, 'group_column_id' => '2_10', 'label' => 'Address 4', 'varname' => 'address4', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
203
+ {'column_id' => 11, 'group_column_id' => '2_11', 'label' => 'Postcode', 'varname' => 'postcode', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
204
+ {'column_id' => 12, 'group_column_id' => '2_12', 'label' => 'Email 1', 'varname' => 'email1', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
205
+ {'column_id' => 14, 'group_column_id' => '2_14', 'label' => 'Email 2', 'varname' => 'email2', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
206
+ {'column_id' => 18, 'group_column_id' => '2_18', 'label' => 'Phone 1', 'varname' => 'phone1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
207
+ {'column_id' => 20, 'group_column_id' => '2_20', 'label' => 'Phone 2', 'varname' => 'phone2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
208
+ {'column_id' => 8442, 'group_column_id' => '2_8442', 'label' => 'Label for 8442', 'varname' => 'label_for_8442', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
209
+ ]},
210
+ {'group_id' => 3, 'description' => '', 'identifier' => 'emergency', 'name' => 'Emergency Contact', 'columns' => [
211
+ {'column_id' => 2, 'group_column_id' => '3_2', 'label' => 'First Name', 'varname' => 'firstname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
212
+ {'column_id' => 3, 'group_column_id' => '3_3', 'label' => 'Last Name', 'varname' => 'lastname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
213
+ {'column_id' => 7, 'group_column_id' => '3_7', 'label' => 'Address 1', 'varname' => 'address1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
214
+ {'column_id' => 8, 'group_column_id' => '3_8', 'label' => 'Address 2', 'varname' => 'address2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
215
+ {'column_id' => 9, 'group_column_id' => '3_9', 'label' => 'Address 3', 'varname' => 'address3', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
216
+ {'column_id' => 10, 'group_column_id' => '3_10', 'label' => 'Address 4', 'varname' => 'address4', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
217
+ {'column_id' => 11, 'group_column_id' => '3_11', 'label' => 'Postcode', 'varname' => 'postcode', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
218
+ {'column_id' => 12, 'group_column_id' => '3_12', 'label' => 'Email 1', 'varname' => 'email1', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
219
+ {'column_id' => 14, 'group_column_id' => '3_14', 'label' => 'Email 2', 'varname' => 'email2', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
220
+ {'column_id' => 18, 'group_column_id' => '3_18', 'label' => 'Phone 1', 'varname' => 'phone1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
221
+ {'column_id' => 20, 'group_column_id' => '3_20', 'label' => 'Phone 2', 'varname' => 'phone2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
222
+ {'column_id' => 8443, 'group_column_id' => '3_8443', 'label' => 'Label for 8443', 'varname' => 'label_for_8443', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
223
+ ]},
224
+ {'group_id' => 4, 'description' => '', 'identifier' => 'doctor', 'name' => "Doctor's Surgery", 'columns' => [
225
+ {'column_id' => 2, 'group_column_id' => '4_2', 'label' => 'First Name', 'varname' => 'firstname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
226
+ {'column_id' => 3, 'group_column_id' => '4_3', 'label' => 'Last Name', 'varname' => 'lastname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
227
+ {'column_id' => 54, 'group_column_id' => '4_54', 'label' => 'Surgery', 'varname' => 'surgery', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
228
+ {'column_id' => 7, 'group_column_id' => '4_7', 'label' => 'Address 1', 'varname' => 'address1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
229
+ {'column_id' => 8, 'group_column_id' => '4_8', 'label' => 'Address 2', 'varname' => 'address2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
230
+ {'column_id' => 9, 'group_column_id' => '4_9', 'label' => 'Address 3', 'varname' => 'address3', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
231
+ {'column_id' => 10, 'group_column_id' => '4_10', 'label' => 'Address 4', 'varname' => 'address4', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
232
+ {'column_id' => 11, 'group_column_id' => '4_11', 'label' => 'Postcode', 'varname' => 'postcode', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
233
+ {'column_id' => 18, 'group_column_id' => '4_18', 'label' => 'Phone 1', 'varname' => 'phone1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
234
+ {'column_id' => 20, 'group_column_id' => '4_20', 'label' => 'Phone 2', 'varname' => 'phone2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
235
+ {'column_id' => 8444, 'group_column_id' => '4_8444', 'label' => 'Label for 8444', 'varname' => 'label_for_8444', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
236
+ ]},
237
+ {'group_id' => 6, 'description' => '', 'identifier' => 'contact_member', 'name' => 'Member', 'columns' => [
238
+ {'column_id' => 2, 'group_column_id' => '6_2', 'label' => 'First Name', 'varname' => 'firstname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
239
+ {'column_id' => 3, 'group_column_id' => '6_3', 'label' => 'Last Name', 'varname' => 'lastname', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
240
+ {'column_id' => 7, 'group_column_id' => '6_7', 'label' => 'Address 1', 'varname' => 'address1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
241
+ {'column_id' => 8, 'group_column_id' => '6_8', 'label' => 'Address 2', 'varname' => 'address2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
242
+ {'column_id' => 9, 'group_column_id' => '6_9', 'label' => 'Address 3', 'varname' => 'address3', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
243
+ {'column_id' => 10, 'group_column_id' => '6_10', 'label' => 'Address 4', 'varname' => 'address4', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
244
+ {'column_id' => 11, 'group_column_id' => '6_11', 'label' => 'Postcode', 'varname' => 'postcode', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
245
+ {'column_id' => 12, 'group_column_id' => '6_12', 'label' => 'Email 1', 'varname' => 'email1', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
246
+ {'column_id' => 14, 'group_column_id' => '6_14', 'label' => 'Email 2', 'varname' => 'email2', 'read_only' => 'no', 'required' => 'no', 'type' => 'email', 'width' => 120},
247
+ {'column_id' => 18, 'group_column_id' => '6_18', 'label' => 'Phone 1', 'varname' => 'phone1', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
248
+ {'column_id' => 20, 'group_column_id' => '6_20', 'label' => 'Phone 2', 'varname' => 'phone2', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
249
+ {'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},
250
+ ]},
251
+ {'group_id' => 5, 'description' => 'This allows you to add extra information for your members.', 'identifier' => 'customisable_data', 'name' => 'Customisable Data', 'columns' => [
252
+ {'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},
253
+ ]},
254
+ {'group_id' => 7, 'description' => '', 'identifier' => 'floating', 'name' => 'Floating', 'columns' => [
255
+ {'column_id' => 34, 'group_column_id' => '7_34', 'label' => 'Gender', 'varname' => 'gender', 'read_only' => 'no', 'required' => 'no', 'type' => 'text', 'width' => 120},
256
+ ]},
257
+ ],
258
+ },
195
259
  }
196
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/users.php?action=getUserDetails&sectionid=1&termid=2", :body => body.to_json, :content_type => 'application/json')
197
-
198
- body = {'items' => [{'scoutid'=>'1', 'pic'=>true}]}
199
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/ext/members/contact/?action=getListOfMembers&sort=patrolid&sectionid=1&termid=2&section=beavers", :body => body.to_json, :content_type => 'application/json')
260
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/ext/members/contact/grid/?action=getMembers", :body => body.to_json, :content_type => 'application/json')
200
261
 
201
262
  members = Osm::Member.get_for_section(@api, 1, 2)
202
263
  members.size.should == 1
203
- members[0].id.should == 1
264
+ member = members[0]
265
+ member.id.should == 123
266
+ member.section_id.should == 1
267
+ member.first_name.should == 'John'
268
+ member.last_name.should == 'Smith'
269
+ member.date_of_birth.should == Date.new(2000, 3, 8)
270
+ member.grouping_id.should == -2
271
+ member.grouping_leader.should == 1
272
+ member.grouping_label.should == 'Leaders'
273
+ member.grouping_leader_label.should == 'Assistant leader'
274
+ member.age.should == '12 / 00'
275
+ member.gender.should == :unspecified
276
+ member.joined_movement.should == Date.new(2006, 7, 17)
277
+ member.started_section.should == Date.new(2008, 7, 12)
278
+ member.finished_section.should == Date.new(2010, 6, 3)
279
+ member.custom.should == {4848 => 'Data for 4848'}
280
+ member.custom_labels.should == {4848 => 'Label for 4848'}
281
+ member.contact.first_name.should == 'John'
282
+ member.contact.last_name.should == 'Smith'
283
+ member.contact.address_1.should == 'Address 1'
284
+ member.contact.address_2.should == 'Address 2'
285
+ member.contact.address_3.should == 'Address 3'
286
+ member.contact.address_4.should == 'Address 4'
287
+ member.contact.postcode.should == 'Postcode'
288
+ member.contact.phone_1.should == '01234 567890'
289
+ member.contact.receive_phone_1.should == true
290
+ member.contact.phone_2.should == '0987 654321'
291
+ member.contact.receive_phone_2.should == false
292
+ member.contact.email_1.should == 'member@example.com'
293
+ member.contact.receive_email_1.should == true
294
+ member.contact.email_2.should == ''
295
+ member.contact.receive_email_2.should == false
296
+ member.contact.custom.should == {8446=>"Data for 8446"}
297
+ member.contact.custom_labels.should == {8446=>"Label for 8446"}
298
+ member.primary_contact.first_name.should == 'Primary'
299
+ member.primary_contact.last_name.should == 'Contact'
300
+ member.primary_contact.address_1.should == 'Address 1'
301
+ member.primary_contact.address_2.should == 'Address 2'
302
+ member.primary_contact.address_3.should == 'Address 3'
303
+ member.primary_contact.address_4.should == 'Address 4'
304
+ member.primary_contact.postcode.should == 'Postcode'
305
+ member.primary_contact.phone_1.should == '01234 567890'
306
+ member.primary_contact.receive_phone_1.should == true
307
+ member.primary_contact.phone_2.should == '0987 654321'
308
+ member.primary_contact.receive_phone_2.should == false
309
+ member.primary_contact.email_1.should == 'primary@example.com'
310
+ member.primary_contact.receive_email_1.should == true
311
+ member.primary_contact.email_2.should == ''
312
+ member.primary_contact.receive_email_2.should == false
313
+ member.primary_contact.custom.should == {8441=>"Data for 8441"}
314
+ member.primary_contact.custom_labels.should == {8441=>"Label for 8441"}
315
+ member.secondary_contact.first_name.should == 'Secondary'
316
+ member.secondary_contact.last_name.should == 'Contact'
317
+ member.secondary_contact.address_1.should == 'Address 1'
318
+ member.secondary_contact.address_2.should == 'Address 2'
319
+ member.secondary_contact.address_3.should == 'Address 3'
320
+ member.secondary_contact.address_4.should == 'Address 4'
321
+ member.secondary_contact.postcode.should == 'Postcode'
322
+ member.secondary_contact.phone_1.should == '01234 567890'
323
+ member.secondary_contact.receive_phone_1.should == true
324
+ member.secondary_contact.phone_2.should == '0987 654321'
325
+ member.secondary_contact.receive_phone_2.should == false
326
+ member.secondary_contact.email_1.should == 'secondary@example.com'
327
+ member.secondary_contact.receive_email_1.should == true
328
+ member.secondary_contact.email_2.should == ''
329
+ member.secondary_contact.receive_email_2.should == false
330
+ member.secondary_contact.custom.should == {8442=>"Data for 8442"}
331
+ member.secondary_contact.custom_labels.should == {8442=>"Label for 8442"}
332
+ member.emergency_contact.first_name.should == 'Emergency'
333
+ member.emergency_contact.last_name.should == 'Contact'
334
+ member.emergency_contact.address_1.should == 'Address 1'
335
+ member.emergency_contact.address_2.should == 'Address 2'
336
+ member.emergency_contact.address_3.should == 'Address 3'
337
+ member.emergency_contact.address_4.should == 'Address 4'
338
+ member.emergency_contact.postcode.should == 'Postcode'
339
+ member.emergency_contact.phone_1.should == '01234 567890'
340
+ member.emergency_contact.phone_2.should == '0987 654321'
341
+ member.emergency_contact.email_1.should == 'emergency@example.com'
342
+ member.emergency_contact.email_2.should == ''
343
+ member.emergency_contact.custom.should == {8443=>"Data for 8443"}
344
+ member.emergency_contact.custom_labels.should == {8443=>"Label for 8443"}
345
+ member.doctor.first_name.should == 'Doctor'
346
+ member.doctor.last_name.should == 'Contact'
347
+ member.doctor.surgery.should == 'Surgery'
348
+ member.doctor.address_1.should == 'Address 1'
349
+ member.doctor.address_2.should == 'Address 2'
350
+ member.doctor.address_3.should == 'Address 3'
351
+ member.doctor.address_4.should == 'Address 4'
352
+ member.doctor.postcode.should == 'Postcode'
353
+ member.doctor.phone_1.should == '01234 567890'
354
+ member.doctor.phone_2.should == '0987 654321'
355
+ member.doctor.custom.should == {8444=>"Data for 8444"}
356
+ member.doctor.custom_labels.should == {8444=>"Label for 8444"}
357
+ member.valid?.should == true
204
358
  end
205
359
 
206
- it "Create from API data (Waiting list)" do
207
- body = [
208
- {"sectionConfig"=>"{\"subscription_level\":1,\"subscription_expires\":\"2013-01-05\",\"sectionType\":\"waiting\",\"columnNames\":{\"column_names\":\"names\"},\"numscouts\":10,\"hasUsedBadgeRecords\":true,\"hasProgramme\":true,\"extraRecords\":[],\"wizard\":\"false\",\"fields\":{\"fields\":true},\"intouch\":{\"intouch_fields\":true},\"mobFields\":{\"mobile_fields\":true}}", "groupname"=>"3rd Somewhere", "groupid"=>"3", "groupNormalised"=>"1", "sectionid"=>"1", "sectionname"=>"Section 1", "section"=>"waiting", "isDefault"=>"1", "permissions"=>{"badge"=>10, "member"=>20, "user"=>100, "register"=>100, "contact"=>100, "programme"=>100, "originator"=>1, "events"=>100, "finance"=>100, "flexi"=>100}},
209
- ]
210
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/api.php?action=getUserRoles", :body => body.to_json, :content_type => 'application/json')
211
-
360
+ it "Get from OSM (handles an empty data array)" do
212
361
  body = {
213
- 'identifier' => 'scoutid',
214
- 'items' => []
362
+ 'status' => true,
363
+ 'error' => nil,
364
+ 'data' => [],
365
+ 'meta' => {},
215
366
  }
216
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/users.php?action=getUserDetails&sectionid=1&termid=-1", :body => body.to_json, :content_type => 'application/json')
217
-
218
- body = {'items' => [{'scoutid'=>'1', 'pic'=>true}]}
219
- FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/ext/members/contact/?action=getListOfMembers&sort=patrolid&sectionid=1&termid=-1&section=waiting", :body => body.to_json, :content_type => 'application/json')
367
+ FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/ext/members/contact/grid/?action=getMembers", :body => body.to_json, :content_type => 'application/json')
220
368
 
221
- members = Osm::Member.get_for_section(@api, 1, 2)
222
- members.size.should == 0
369
+ Osm::Member.get_for_section(@api, 1, 2).should == []
223
370
  end
224
371
 
372
+
225
373
  it "Create in OSM (succeded)" do
226
374
  member = Osm::Member.new(
227
375
  :section_id => 2,
@@ -304,7 +452,7 @@ describe "Member" do
304
452
 
305
453
  Osm::Term.stub(:get_for_section) { [] }
306
454
  HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":"ok","scoutid":1}'}) }
307
- member.create(@api).should be_true
455
+ member.create(@api).should == true
308
456
  member.id.should == 1
309
457
  end
310
458
 
@@ -321,7 +469,7 @@ describe "Member" do
321
469
  )
322
470
 
323
471
  HTTParty.should_receive(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":"ok","scoutid":-1}'}) }
324
- member.create(@api).should be_false
472
+ member.create(@api).should == false
325
473
  end
326
474
 
327
475
 
@@ -427,7 +575,7 @@ describe "Member" do
427
575
  }}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>body}) }
428
576
  Osm::Term.stub(:get_for_section) { [] }
429
577
 
430
- member.update(@api).should be_true
578
+ member.update(@api).should == true
431
579
  end
432
580
 
433
581
  it "Update in OSM (only updated fields)" do
@@ -478,7 +626,7 @@ describe "Member" do
478
626
  }}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>body}) }
479
627
  Osm::Term.stub(:get_for_section) { [] }
480
628
 
481
- member.update(@api).should be_true
629
+ member.update(@api).should == true
482
630
  end
483
631
 
484
632
  it "Update in OSM (failed)" do
@@ -495,7 +643,7 @@ describe "Member" do
495
643
  member.first_name = 'First'
496
644
 
497
645
  HTTParty.stub(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{}'}) }
498
- member.update(@api).should be_false
646
+ member.update(@api).should == false
499
647
  end
500
648
 
501
649
  it "Get Photo link" do
@@ -505,33 +653,25 @@ describe "Member" do
505
653
  :first_name => 'First',
506
654
  :last_name => 'Last',
507
655
  :date_of_birth => '2000-01-02',
508
- :started => '2006-01-02',
509
- :joined => '2006-01-03',
656
+ :started_section => '2006-01-02',
657
+ :joined_movement => '2006-01-03',
510
658
  :grouping_id => '3',
511
659
  :grouping_leader => 0,
512
- :has_photo => true,
660
+ :grouping_label => 'Grouping',
661
+ :grouping_leader_label => '',
662
+ :custom => {},
663
+ :custom_labels => {},
664
+ :contact => Osm::Member::MemberContact.new(),
665
+ :primary_contact => Osm::Member::PrimaryContact.new(),
666
+ :secondary_contact => Osm::Member::PrimaryContact.new(),
667
+ :emergency_contact => Osm::Member::EmergencyContact.new(),
668
+ :doctor => Osm::Member::DoctorContact.new(),
513
669
  )
514
670
  HTTParty.stub(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :content_type=>'image/jpeg', :body=>'abcdef'}) }
515
671
 
516
672
  member.get_photo(@api).should == "abcdef"
517
673
  end
518
674
 
519
- it "Get Photo link when no photo uploaded" do
520
- member = Osm::Member.new(
521
- :id => 1,
522
- :section_id => 2,
523
- :first_name => 'First',
524
- :last_name => 'Last',
525
- :date_of_birth => '2000-01-02',
526
- :started => '2006-01-02',
527
- :joined => '2006-01-03',
528
- :grouping_id => '3',
529
- :grouping_leader => 0,
530
- :has_photo => false,
531
- )
532
-
533
- expect{ member.get_photo(@api) }.to raise_error(Osm::Error, "the member doesn't have a photo in OSM")
534
- end
535
675
 
536
676
  describe "Get My.SCOUT link" do
537
677
 
@@ -542,10 +682,19 @@ describe "Member" do
542
682
  :first_name => 'First',
543
683
  :last_name => 'Last',
544
684
  :date_of_birth => '2000-01-02',
545
- :started => '2006-01-02',
546
- :joined => '2006-01-03',
685
+ :started_section => '2006-01-02',
686
+ :joined_movement => '2006-01-03',
547
687
  :grouping_id => '3',
548
688
  :grouping_leader => 0,
689
+ :grouping_label => 'Grouping',
690
+ :grouping_leader_label => '',
691
+ :custom => {},
692
+ :custom_labels => {},
693
+ :contact => Osm::Member::MemberContact.new(),
694
+ :primary_contact => Osm::Member::PrimaryContact.new(),
695
+ :secondary_contact => Osm::Member::PrimaryContact.new(),
696
+ :emergency_contact => Osm::Member::EmergencyContact.new(),
697
+ :doctor => Osm::Member::DoctorContact.new(),
549
698
  )
550
699
  end
551
700