osm 1.2.17 → 1.2.18.dev
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +35 -0
- data/gemfiles/rails3 +1 -1
- data/lib/hash_validator.rb +12 -4
- data/lib/osm/api.rb +5 -6
- data/lib/osm/member.rb +503 -171
- data/lib/osm/section.rb +1 -26
- data/lib/validity_validator.rb +11 -0
- data/osm.gemspec +1 -1
- data/spec/array_of_validator_spec.rb +1 -1
- data/spec/hash_validator_spec.rb +133 -0
- data/spec/osm/activity_spec.rb +7 -7
- data/spec/osm/api_access_spec.rb +1 -1
- data/spec/osm/api_spec.rb +4 -4
- data/spec/osm/badge_spec.rb +62 -62
- data/spec/osm/badges_spec.rb +4 -4
- data/spec/osm/budget_spec.rb +8 -8
- data/spec/osm/event_spec.rb +42 -42
- data/spec/osm/flexi_record_spec.rb +18 -18
- data/spec/osm/giftaid_spec.rb +7 -7
- data/spec/osm/grouping_spec.rb +5 -5
- data/spec/osm/invoice_spec.rb +32 -32
- data/spec/osm/meeting_spec.rb +10 -10
- data/spec/osm/member_spec.rb +316 -167
- data/spec/osm/model_spec.rb +31 -31
- data/spec/osm/register_spec.rb +15 -15
- data/spec/osm/section_spec.rb +28 -71
- data/spec/osm/sms_spec.rb +1 -1
- data/spec/osm/term_spec.rb +31 -31
- data/spec/validity_validator_spec.rb +32 -0
- data/version.rb +1 -1
- metadata +13 -10
data/lib/osm/section.rb
CHANGED
@@ -15,14 +15,6 @@ module Osm
|
|
15
15
|
# @return [Date] when the section's subscription to OSM expires
|
16
16
|
# @!attribute [rw] type
|
17
17
|
# @return [Symbol] the section type (:beavers, :cubs, :scouts, :exporers, :network, :adults, :waiting, :unknown)
|
18
|
-
# @!attribute [rw] column_names
|
19
|
-
# @return [Hash] custom names to use for the data columns
|
20
|
-
# @!attribute [rw] fields
|
21
|
-
# @return [Hash] which columns are shown in OSM
|
22
|
-
# @!attribute [rw] intouch_fields
|
23
|
-
# @return [Hash] which columns are shown in OSM's in touch reports
|
24
|
-
# @!attribute [rw] mobile_fields
|
25
|
-
# @return [Hash] which columns are shown in the OSM mobile app
|
26
18
|
# @!attribute [rw] flexi_records
|
27
19
|
# @return [Array<FlexiRecord>] list of the extra records the section has
|
28
20
|
# @!attribute [rw] gocardless
|
@@ -83,10 +75,6 @@ module Osm
|
|
83
75
|
attribute :subscription_level, :default => 1
|
84
76
|
attribute :subscription_expires, :type => Date
|
85
77
|
attribute :type, :default => :unknown
|
86
|
-
attribute :column_names, :default => {}
|
87
|
-
attribute :fields, :default => {}
|
88
|
-
attribute :intouch_fields, :default => {}
|
89
|
-
attribute :mobile_fields, :default => {}
|
90
78
|
attribute :flexi_records, :default => []
|
91
79
|
attribute :gocardless, :type => Boolean
|
92
80
|
attribute :myscout_events_expires, :type => Date
|
@@ -116,7 +104,7 @@ module Osm
|
|
116
104
|
|
117
105
|
if ActiveModel::VERSION::MAJOR < 4
|
118
106
|
attr_accessible :id, :name, :group_id, :group_name, :subscription_level, :subscription_expires,
|
119
|
-
:type, :
|
107
|
+
:type, :flexi_records,
|
120
108
|
:gocardless, :myscout_events_expires, :myscout_badges_expires,
|
121
109
|
:myscout_programme_expires, :myscout_details_expires, :myscout_events,
|
122
110
|
:myscout_badges, :myscout_programme, :myscout_payments, :myscout_details,
|
@@ -136,16 +124,11 @@ module Osm
|
|
136
124
|
validates_numericality_of :myscout_payment_reminder_frequency, :only_integer=>true, :greater_than_or_equal_to=>-1
|
137
125
|
validates_numericality_of :sms_messages_sent, :only_integer=>true, :greater_than_or_equal_to=>0
|
138
126
|
validates_numericality_of :sms_messages_remaining, :only_integer=>true, :greater_than_or_equal_to=>0
|
139
|
-
|
140
127
|
validates_presence_of :name
|
141
128
|
validates_presence_of :group_name
|
142
129
|
validates_presence_of :subscription_level
|
143
130
|
validates_presence_of :subscription_expires
|
144
131
|
validates_presence_of :type
|
145
|
-
# validates_presence_of :column_names, :unless => Proc.new { |a| a.column_names == {} }
|
146
|
-
# validates_presence_of :fields, :unless => Proc.new { |a| a.fields == {} }
|
147
|
-
# validates_presence_of :intouch_fields, :unless => Proc.new { |a| a.intouch_fields == {} }
|
148
|
-
# validates_presence_of :mobile_fields, :unless => Proc.new { |a| a.mobile_fields == {} }
|
149
132
|
# validates_presence_of :flexi_records, :unless => Proc.new { |a| a.flexi_records == [] }
|
150
133
|
|
151
134
|
validates_inclusion_of :subscription_level, :in => (1..3), :message => 'is not a valid subscription level'
|
@@ -161,10 +144,6 @@ module Osm
|
|
161
144
|
validates_inclusion_of :myscout_programme_show, :in => [-2, -1, 0, 5, 10, 15, 20]
|
162
145
|
validates_inclusion_of :sms_sent_test, :in => [true, false]
|
163
146
|
|
164
|
-
validates :column_names, :hash => {:key_type => Symbol, :value_type => String}
|
165
|
-
validates :fields, :hash => {:key_type => Symbol, :value_in => [true, false]}
|
166
|
-
validates :intouch_fields, :hash => {:key_type => Symbol, :value_in => [true, false]}
|
167
|
-
validates :mobile_fields, :hash => {:key_type => Symbol, :value_in => [true, false]}
|
168
147
|
validates :myscout_emails, :hash => {:key_in => [:email1, :email2, :email3, :email4], :value_in => [true, false]}
|
169
148
|
validates :flexi_records, :array_of => {:item_type => Osm::FlexiRecord, :item_valid => true}
|
170
149
|
|
@@ -223,10 +202,6 @@ module Osm
|
|
223
202
|
:subscription_expires => Osm::parse_date(section_data['subscription_expires']),
|
224
203
|
:type => !section_data['sectionType'].nil? ? section_data['sectionType'].to_sym : (!section_data['section'].nil? ? section_data['section'].to_sym : :unknown),
|
225
204
|
:num_scouts => section_data['numscouts'],
|
226
|
-
:column_names => section_data['columnNames'].is_a?(Hash) ? Osm::symbolize_hash(section_data['columnNames']) : {},
|
227
|
-
:fields => section_data['fields'].is_a?(Hash) ? Osm::symbolize_hash(section_data['fields']) : {},
|
228
|
-
:intouch_fields => section_data['intouch'].is_a?(Hash) ? Osm::symbolize_hash(section_data['intouch']) : {},
|
229
|
-
:mobile_fields => section_data['mobFields'].is_a?(Hash) ? Osm::symbolize_hash(section_data['mobFields']) : {},
|
230
205
|
:flexi_records => flexi_records.sort,
|
231
206
|
:group_id => role_data['groupid'],
|
232
207
|
:group_name => role_data['groupname'],
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class ValidityValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record, attribute, value)
|
3
|
+
record.errors.add(attribute, "must be valid") unless value.try('valid?')
|
4
|
+
error_messages = (value.try(:errors).try(:messages) || {})
|
5
|
+
error_messages.each do |attr, messages|
|
6
|
+
messages.each do |message|
|
7
|
+
record.errors.add(attribute, "#{attr} attribute is invalid: #{message}")
|
8
|
+
end # each message
|
9
|
+
end # each attribute
|
10
|
+
end
|
11
|
+
end
|
data/osm.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.add_runtime_dependency 'dirty_hashy', '~> 0.2.1' # Used to track changed data in Badge::Data and FlexiRecord::Data
|
27
27
|
|
28
28
|
s.add_development_dependency 'rake', '~> 10.0'
|
29
|
-
s.add_development_dependency 'rspec', '
|
29
|
+
s.add_development_dependency 'rspec', '>= 2.14.1', '< 4'
|
30
30
|
s.add_development_dependency 'fakeweb', '~> 1.3'
|
31
31
|
s.add_development_dependency 'guard-rspec', '~> 4.2', '>= 4.2.5'
|
32
32
|
s.add_development_dependency 'rb-inotify', '~> 0.9'
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
|
5
|
+
class KeyTypeTestModel
|
6
|
+
include ActiveAttr::Model
|
7
|
+
attribute :hash_attr
|
8
|
+
validates :hash_attr, :hash => {:key_type => Fixnum}
|
9
|
+
end
|
10
|
+
|
11
|
+
class KeyInTestModel
|
12
|
+
include ActiveAttr::Model
|
13
|
+
attribute :hash_attr
|
14
|
+
validates :hash_attr, :hash => {:key_in => [1, 2]}
|
15
|
+
end
|
16
|
+
|
17
|
+
class ValueTypeTestModel
|
18
|
+
include ActiveAttr::Model
|
19
|
+
attribute :hash_attr
|
20
|
+
validates :hash_attr, :hash => {:value_type => Fixnum}
|
21
|
+
end
|
22
|
+
|
23
|
+
class ValueInTestModel
|
24
|
+
include ActiveAttr::Model
|
25
|
+
attribute :hash_attr
|
26
|
+
validates :hash_attr, :hash => {:value_in => [1, 2]}
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
describe "Hash validator" do
|
31
|
+
|
32
|
+
|
33
|
+
describe "Key type option" do
|
34
|
+
|
35
|
+
it "Has only correct keys" do
|
36
|
+
model = KeyTypeTestModel.new(hash_attr: {1=>'1', 2=>'2'})
|
37
|
+
model.valid?.should == true
|
38
|
+
model.errors.count.should == 0
|
39
|
+
end
|
40
|
+
|
41
|
+
it "Has an incorrect key" do
|
42
|
+
model = KeyTypeTestModel.new(hash_attr: {1=>'1', 2=>'2', '3'=>'3'})
|
43
|
+
model.valid?.should == false
|
44
|
+
model.errors.count.should == 1
|
45
|
+
model.errors.messages.should == {hash_attr: ['keys must be a Fixnum ("3" is not).']}
|
46
|
+
end
|
47
|
+
|
48
|
+
it "Has several incorrect keys" do
|
49
|
+
model = KeyTypeTestModel.new(hash_attr: {1=>'1', 2=>'2', '3'=>'3', '4'=>'4'})
|
50
|
+
model.valid?.should == false
|
51
|
+
model.errors.count.should == 2
|
52
|
+
model.errors.messages.should == {hash_attr: ['keys must be a Fixnum ("3" is not).', 'keys must be a Fixnum ("4" is not).']}
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
|
58
|
+
describe "Key in option" do
|
59
|
+
|
60
|
+
it "Has only correct keys" do
|
61
|
+
model = KeyInTestModel.new(hash_attr: {1=>'1', 2=>'2'})
|
62
|
+
model.valid?.should == true
|
63
|
+
model.errors.count.should == 0
|
64
|
+
end
|
65
|
+
|
66
|
+
it "Has an incorrect key" do
|
67
|
+
model = KeyInTestModel.new(hash_attr: {1=>'1', 2=>'2', 3=>'3'})
|
68
|
+
model.valid?.should == false
|
69
|
+
model.errors.count.should == 1
|
70
|
+
model.errors.messages.should == {hash_attr: ['keys must be in [1, 2] (3 is not).']}
|
71
|
+
end
|
72
|
+
|
73
|
+
it "Has several incorrect keys" do
|
74
|
+
model = KeyInTestModel.new(hash_attr: {1=>'1', 2=>'2', 3=>'3', 4=>'4'})
|
75
|
+
model.valid?.should == false
|
76
|
+
model.errors.count.should == 2
|
77
|
+
model.errors.messages.should == {hash_attr: ['keys must be in [1, 2] (3 is not).', 'keys must be in [1, 2] (4 is not).']}
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
describe "Value type option" do
|
84
|
+
|
85
|
+
it "Has only correct keys" do
|
86
|
+
model = ValueTypeTestModel.new(hash_attr: {'1'=>1, '2'=>2})
|
87
|
+
model.valid?.should == true
|
88
|
+
model.errors.count.should == 0
|
89
|
+
end
|
90
|
+
|
91
|
+
it "Has an incorrect key" do
|
92
|
+
model = ValueTypeTestModel.new(hash_attr: {'1'=>1, '2'=>2, '3'=>'3'})
|
93
|
+
model.valid?.should == false
|
94
|
+
model.errors.count.should == 1
|
95
|
+
model.errors.messages.should == {hash_attr: ['values must be a Fixnum ("3" for key "3" is not).']}
|
96
|
+
end
|
97
|
+
|
98
|
+
it "Has several incorrect keys" do
|
99
|
+
model = ValueTypeTestModel.new(hash_attr: {'1'=>1, '2'=>2, '3'=>'3', '4'=>'4'})
|
100
|
+
model.valid?.should == false
|
101
|
+
model.errors.count.should == 2
|
102
|
+
model.errors.messages.should == {hash_attr: ['values must be a Fixnum ("3" for key "3" is not).', 'values must be a Fixnum ("4" for key "4" is not).']}
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
describe "Value in option" do
|
109
|
+
|
110
|
+
it "Has only correct keys" do
|
111
|
+
model = ValueInTestModel.new(hash_attr: {'1'=>1, '2'=>2})
|
112
|
+
model.valid?.should == true
|
113
|
+
model.errors.count.should == 0
|
114
|
+
end
|
115
|
+
|
116
|
+
it "Has an incorrect key" do
|
117
|
+
model = ValueInTestModel.new(hash_attr: {'1'=>1, '2'=>2, '3'=>'3'})
|
118
|
+
model.valid?.should == false
|
119
|
+
model.errors.count.should == 1
|
120
|
+
model.errors.messages.should == {hash_attr: ['values must be in [1, 2] ("3" for key "3" is not).']}
|
121
|
+
end
|
122
|
+
|
123
|
+
it "Has several incorrect keys" do
|
124
|
+
model = ValueInTestModel.new(hash_attr: {'1'=>1, '2'=>2, '3'=>'3', '4'=>'4'})
|
125
|
+
model.valid?.should == false
|
126
|
+
model.errors.count.should == 2
|
127
|
+
model.errors.messages.should == {hash_attr: ['values must be in [1, 2] ("3" for key "3" is not).', 'values must be in [1, 2] ("4" for key "4" is not).']}
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
end
|
data/spec/osm/activity_spec.rb
CHANGED
@@ -125,8 +125,8 @@ describe "Activity" do
|
|
125
125
|
activity.location.should == :indoors
|
126
126
|
activity.shared.should == 0
|
127
127
|
activity.rating.should == 4
|
128
|
-
activity.editable.should
|
129
|
-
activity.deletable.should
|
128
|
+
activity.editable.should == true
|
129
|
+
activity.deletable.should == false
|
130
130
|
activity.used.should == 3
|
131
131
|
activity.versions[0].version.should == 0
|
132
132
|
activity.versions[0].created_by.should == 1
|
@@ -146,7 +146,7 @@ describe "Activity" do
|
|
146
146
|
activity.badges[0].requirement_id.should == 93384
|
147
147
|
activity.badges[0].requirement_label.should == 'B: Fire drill'
|
148
148
|
activity.badges[0].data.should == 'Yes'
|
149
|
-
activity.valid?.should
|
149
|
+
activity.valid?.should == true
|
150
150
|
end
|
151
151
|
|
152
152
|
|
@@ -165,13 +165,13 @@ describe "Activity" do
|
|
165
165
|
|
166
166
|
HTTParty.should_receive(:post).with(url, {:body => post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":0}'}) }
|
167
167
|
activity = Osm::Activity.new(:id => 2)
|
168
|
-
activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should
|
168
|
+
activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should == true
|
169
169
|
end
|
170
170
|
|
171
171
|
it "Add activity to programme (failed)" do
|
172
172
|
HTTParty.should_receive(:post) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>'{"result":1}'}) }
|
173
173
|
activity = Osm::Activity.new(:id => 2)
|
174
|
-
activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should
|
174
|
+
activity.add_to_programme(@api, 1, Date.new(2000, 1, 2), 'Notes').should == false
|
175
175
|
end
|
176
176
|
|
177
177
|
|
@@ -223,7 +223,7 @@ describe "Activity" do
|
|
223
223
|
:shared => 0,
|
224
224
|
:section_id => 1,
|
225
225
|
)
|
226
|
-
activity.update(@api, 1, true).should
|
226
|
+
activity.update(@api, 1, true).should == true
|
227
227
|
end
|
228
228
|
|
229
229
|
it "Update activity in OSM (failed)" do
|
@@ -237,7 +237,7 @@ describe "Activity" do
|
|
237
237
|
:location => :indoors,
|
238
238
|
:running_time => 0,
|
239
239
|
)
|
240
|
-
activity.update(@api, 1, true).should
|
240
|
+
activity.update(@api, 1, true).should == false
|
241
241
|
end
|
242
242
|
|
243
243
|
end
|
data/spec/osm/api_access_spec.rb
CHANGED
data/spec/osm/api_spec.rb
CHANGED
@@ -26,11 +26,11 @@ describe "API" do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
it "Exposes the debug option seperatly too" do
|
29
|
-
Osm::Api.debug.should
|
29
|
+
Osm::Api.debug.should == false
|
30
30
|
Osm::Api.debug = true
|
31
|
-
Osm::Api.debug.should
|
31
|
+
Osm::Api.debug.should == true
|
32
32
|
Osm::Api.debug = false
|
33
|
-
Osm::Api.debug.should
|
33
|
+
Osm::Api.debug.should == false
|
34
34
|
end
|
35
35
|
|
36
36
|
|
@@ -60,7 +60,7 @@ describe "API" do
|
|
60
60
|
end
|
61
61
|
|
62
62
|
it "sets a new API user" do
|
63
|
-
@api.set_user('1', '2').is_a?(Osm::Api).should
|
63
|
+
@api.set_user('1', '2').is_a?(Osm::Api).should == true
|
64
64
|
|
65
65
|
HTTParty.should_receive(:post).with("https://www.onlinescoutmanager.co.uk/test", {:body => {
|
66
66
|
'apiid' => @CONFIGURATION[:api][:osm][:id],
|
data/spec/osm/badge_spec.rb
CHANGED
@@ -35,7 +35,7 @@ describe "Badge" do
|
|
35
35
|
badge.id.should == 12
|
36
36
|
badge.version.should == 3
|
37
37
|
badge.group_name.should == ''
|
38
|
-
badge.latest.should
|
38
|
+
badge.latest.should == true
|
39
39
|
badge.sharing.should == :draft
|
40
40
|
badge.user_id.should == 4
|
41
41
|
badge.levels.should == [1, 2, 3]
|
@@ -48,25 +48,25 @@ describe "Badge" do
|
|
48
48
|
badge.level_requirement.should == 8
|
49
49
|
badge.requires_modules.should == [['A'], ['B', 'C']]
|
50
50
|
badge.show_level_letters.should == true
|
51
|
-
badge.valid?.should
|
51
|
+
badge.valid?.should == true
|
52
52
|
end
|
53
53
|
|
54
54
|
it "Valid with nil for levels" do
|
55
55
|
badge = Osm::Badge.new(@badge_options.merge(levels: nil))
|
56
56
|
badge.levels.should be_nil
|
57
|
-
badge.valid?.should
|
57
|
+
badge.valid?.should == true
|
58
58
|
end
|
59
59
|
|
60
60
|
it "Valid with nil for level_requirement" do
|
61
61
|
badge = Osm::Badge.new(@badge_options.merge(level_requirement: nil))
|
62
62
|
badge.level_requirement.should be_nil
|
63
|
-
badge.valid?.should
|
63
|
+
badge.valid?.should == true
|
64
64
|
end
|
65
65
|
|
66
66
|
it "Valid with nil for add_columns_to_module" do
|
67
67
|
badge = Osm::Badge.new(@badge_options.merge(add_columns_to_module: nil))
|
68
68
|
badge.add_columns_to_module.should be_nil
|
69
|
-
badge.valid?.should
|
69
|
+
badge.valid?.should == true
|
70
70
|
end
|
71
71
|
|
72
72
|
end
|
@@ -86,9 +86,9 @@ describe "Badge" do
|
|
86
86
|
requirement.description.should == 'description'
|
87
87
|
requirement.mod.should == m
|
88
88
|
requirement.id.should == 1
|
89
|
-
requirement.editable.should
|
89
|
+
requirement.editable.should == true
|
90
90
|
requirement.badge.identifier.should == 'key'
|
91
|
-
requirement.valid?.should
|
91
|
+
requirement.valid?.should == true
|
92
92
|
end
|
93
93
|
|
94
94
|
it "Create RequirementModule" do
|
@@ -112,12 +112,12 @@ describe "Badge" do
|
|
112
112
|
m.completed_into_column.should == 3
|
113
113
|
m.numeric_into_column.should == 4
|
114
114
|
m.add_column_id_to_numeric.should == 5
|
115
|
-
m.valid?.should
|
115
|
+
m.valid?.should == true
|
116
116
|
end
|
117
117
|
|
118
118
|
it "Works out if we add columns to this badge" do
|
119
|
-
Osm::Badge.new(add_columns_to_module: 123).add_columns?.should
|
120
|
-
Osm::Badge.new(add_columns_to_module: nil).add_columns?.should
|
119
|
+
Osm::Badge.new(add_columns_to_module: 123).add_columns?.should == true
|
120
|
+
Osm::Badge.new(add_columns_to_module: nil).add_columns?.should == false
|
121
121
|
end
|
122
122
|
|
123
123
|
it "Produces a map of module letter <-> module id" do
|
@@ -174,7 +174,7 @@ describe "Badge" do
|
|
174
174
|
data.requirements.should == {}
|
175
175
|
data.section_id.should == 2
|
176
176
|
data.badge.identifier.should == 'key'
|
177
|
-
data.valid?.should
|
177
|
+
data.valid?.should == true
|
178
178
|
end
|
179
179
|
|
180
180
|
|
@@ -215,14 +215,14 @@ describe "Badge" do
|
|
215
215
|
|
216
216
|
|
217
217
|
it "Works out if a requirement has been met" do
|
218
|
-
data = Osm::Badge::Data.new(requirements: {1 => ''}).requirement_met?(1).should
|
219
|
-
data = Osm::Badge::Data.new(requirements: {1 => 'xStuff'}).requirement_met?(1).should
|
220
|
-
data = Osm::Badge::Data.new(requirements: {1 => '0'}).requirement_met?(1).should
|
221
|
-
data = Osm::Badge::Data.new(requirements: {1 => 0}).requirement_met?(1).should
|
222
|
-
data = Osm::Badge::Data.new(requirements: {}).requirement_met?(1).should
|
223
|
-
data = Osm::Badge::Data.new(requirements: {1 => 'Stuff'}).requirement_met?(1).should
|
224
|
-
data = Osm::Badge::Data.new(requirements: {1 => '1'}).requirement_met?(1).should
|
225
|
-
data = Osm::Badge::Data.new(requirements: {1 => 1}).requirement_met?(1).should
|
218
|
+
data = Osm::Badge::Data.new(requirements: {1 => ''}).requirement_met?(1).should == false
|
219
|
+
data = Osm::Badge::Data.new(requirements: {1 => 'xStuff'}).requirement_met?(1).should == false
|
220
|
+
data = Osm::Badge::Data.new(requirements: {1 => '0'}).requirement_met?(1).should == false
|
221
|
+
data = Osm::Badge::Data.new(requirements: {1 => 0}).requirement_met?(1).should == false
|
222
|
+
data = Osm::Badge::Data.new(requirements: {}).requirement_met?(1).should == false
|
223
|
+
data = Osm::Badge::Data.new(requirements: {1 => 'Stuff'}).requirement_met?(1).should == true
|
224
|
+
data = Osm::Badge::Data.new(requirements: {1 => '1'}).requirement_met?(1).should == true
|
225
|
+
data = Osm::Badge::Data.new(requirements: {1 => 1}).requirement_met?(1).should == true
|
226
226
|
end
|
227
227
|
|
228
228
|
|
@@ -308,13 +308,13 @@ describe "Badge" do
|
|
308
308
|
data = Osm::Badge::Data.new(:awarded => 2, :badge => badge)
|
309
309
|
|
310
310
|
data.stub(:earnt) { 1 }
|
311
|
-
data.earnt?.should
|
311
|
+
data.earnt?.should == false
|
312
312
|
|
313
313
|
data.stub(:earnt) { 2 }
|
314
|
-
data.earnt?.should
|
314
|
+
data.earnt?.should == false
|
315
315
|
|
316
316
|
data.stub(:earnt) { 3 }
|
317
|
-
data.earnt?.should
|
317
|
+
data.earnt?.should == true
|
318
318
|
end
|
319
319
|
|
320
320
|
it "Non staged" do
|
@@ -339,10 +339,10 @@ describe "Badge" do
|
|
339
339
|
)
|
340
340
|
|
341
341
|
data = Osm::Badge::Data.new(:due => 1, :awarded => 1, :badge => badge)
|
342
|
-
data.earnt?.should
|
342
|
+
data.earnt?.should == false
|
343
343
|
|
344
344
|
data = Osm::Badge::Data.new(:due => 1, :awarded => 0, :badge => badge)
|
345
|
-
data.earnt?.should
|
345
|
+
data.earnt?.should == true
|
346
346
|
|
347
347
|
|
348
348
|
# Number of modules required
|
@@ -350,10 +350,10 @@ describe "Badge" do
|
|
350
350
|
this_badge.min_modules_required = 2
|
351
351
|
|
352
352
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
353
|
-
data.earnt?.should
|
353
|
+
data.earnt?.should == true
|
354
354
|
|
355
355
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
356
|
-
data.earnt?.should
|
356
|
+
data.earnt?.should == false
|
357
357
|
|
358
358
|
|
359
359
|
# Number of requirements needed
|
@@ -362,13 +362,13 @@ describe "Badge" do
|
|
362
362
|
this_badge.min_requirements_required = 2
|
363
363
|
|
364
364
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
365
|
-
data.earnt?.should
|
365
|
+
data.earnt?.should == true
|
366
366
|
|
367
367
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'x', 20=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
368
|
-
data.earnt?.should
|
368
|
+
data.earnt?.should == true
|
369
369
|
|
370
370
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'x', 20=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
371
|
-
data.earnt?.should
|
371
|
+
data.earnt?.should == false
|
372
372
|
|
373
373
|
|
374
374
|
# Module combinations
|
@@ -376,16 +376,16 @@ describe "Badge" do
|
|
376
376
|
this_badge.requires_modules = [['a'], ['b', 'c']]
|
377
377
|
|
378
378
|
data = Osm::Badge::Data.new(:requirements => {10=>'x', 11=>'x', 20=>'x', 30=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
379
|
-
data.earnt?.should
|
379
|
+
data.earnt?.should == false
|
380
380
|
|
381
381
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'x', 30=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
382
|
-
data.earnt?.should
|
382
|
+
data.earnt?.should == false
|
383
383
|
|
384
384
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'y', 30=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
385
|
-
data.earnt?.should
|
385
|
+
data.earnt?.should == true
|
386
386
|
|
387
387
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 11=>'y', 20=>'x', 30=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
388
|
-
data.earnt?.should
|
388
|
+
data.earnt?.should == true
|
389
389
|
|
390
390
|
# Requirements from another badge
|
391
391
|
this_badge = badge.clone
|
@@ -395,23 +395,23 @@ describe "Badge" do
|
|
395
395
|
# Simply met
|
396
396
|
this_badge.other_requirements_required = [{id: 100, min: 0}]
|
397
397
|
data = Osm::Badge::Data.new(:requirements => {10=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
398
|
-
data.earnt?.should
|
398
|
+
data.earnt?.should == true # Assume met if not in requirements Hash
|
399
399
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
400
|
-
data.earnt?.should
|
400
|
+
data.earnt?.should == false
|
401
401
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
402
|
-
data.earnt?.should
|
402
|
+
data.earnt?.should == true
|
403
403
|
# Minimum value
|
404
404
|
this_badge.other_requirements_required = [{id: 100, min: 2}]
|
405
405
|
data = Osm::Badge::Data.new(:requirements => {10=>'y'}, :due => 0, :awarded => 0, :badge => this_badge)
|
406
|
-
data.earnt?.should
|
406
|
+
data.earnt?.should == true # Assume met if not in requirements Hash
|
407
407
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'x'}, :due => 0, :awarded => 0, :badge => this_badge)
|
408
|
-
data.earnt?.should
|
408
|
+
data.earnt?.should == false
|
409
409
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'1'}, :due => 0, :awarded => 0, :badge => this_badge)
|
410
|
-
data.earnt?.should
|
410
|
+
data.earnt?.should == false
|
411
411
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'2'}, :due => 0, :awarded => 0, :badge => this_badge)
|
412
|
-
data.earnt?.should
|
412
|
+
data.earnt?.should == true
|
413
413
|
data = Osm::Badge::Data.new(:requirements => {10=>'y', 100=>'3'}, :due => 0, :awarded => 0, :badge => this_badge)
|
414
|
-
data.earnt?.should
|
414
|
+
data.earnt?.should == true
|
415
415
|
end
|
416
416
|
end
|
417
417
|
|
@@ -485,10 +485,10 @@ describe "Badge" do
|
|
485
485
|
end
|
486
486
|
|
487
487
|
it "Works out if the badge has been started" do
|
488
|
-
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'Yes', 2 => ''}).started?.should
|
489
|
-
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'Yes', 2 => ''}, :due => 1).started?.should
|
490
|
-
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'xNo', 2 => ''}).started?.should
|
491
|
-
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => '', 2 => ''}).started?.should
|
488
|
+
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'Yes', 2 => ''}).started?.should == true
|
489
|
+
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'Yes', 2 => ''}, :due => 1).started?.should == false
|
490
|
+
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => 'xNo', 2 => ''}).started?.should == false
|
491
|
+
Osm::Badge::Data.new(:badge => Osm::CoreBadge.new, :requirements => {1 => '', 2 => ''}).started?.should == false
|
492
492
|
|
493
493
|
# Staged Activity Badge
|
494
494
|
Osm::Badge::Data.new(
|
@@ -503,7 +503,7 @@ describe "Badge" do
|
|
503
503
|
),
|
504
504
|
:requirements => {1000 => 'Yes', 2000 => 'Yes', 2001 => ''},
|
505
505
|
:due => 1,
|
506
|
-
).started?.should
|
506
|
+
).started?.should == true
|
507
507
|
|
508
508
|
# Staged Count Badge
|
509
509
|
Osm::Badge::Data.new(
|
@@ -511,13 +511,13 @@ describe "Badge" do
|
|
511
511
|
:requirements => {1000 => 5, 2000 => '5', 3000 => ''},
|
512
512
|
:due => 5,
|
513
513
|
:awarded => 4,
|
514
|
-
).started?.should
|
514
|
+
).started?.should == false # Finished lvl 5 & not started lvl 10
|
515
515
|
Osm::Badge::Data.new(
|
516
516
|
:badge => Osm::StagedBadge.new(:levels => [0,1,2,3,4,5,10,15,20], :show_level_letters => false, :level_requirement => 1000),
|
517
517
|
:requirements => {1000 => 6, 2000 => '6', 3000 => ''},
|
518
518
|
:due => 5,
|
519
519
|
:awarded => 3,
|
520
|
-
).started?.should
|
520
|
+
).started?.should == true # Finished lvl 5 & started lvl 10
|
521
521
|
end
|
522
522
|
|
523
523
|
it "Works out what stage of the badge has been started" do
|
@@ -660,7 +660,7 @@ describe "Badge" do
|
|
660
660
|
badge.identifier.should == '123_0'
|
661
661
|
badge.id.should == 123
|
662
662
|
badge.version.should == 0
|
663
|
-
badge.latest.should
|
663
|
+
badge.latest.should == true
|
664
664
|
badge.user_id.should == 0
|
665
665
|
badge.sharing.should == :default_locked
|
666
666
|
badge.requirements.size.should == 1
|
@@ -672,7 +672,7 @@ describe "Badge" do
|
|
672
672
|
badge.other_requirements_required.should == []
|
673
673
|
badge.badges_required.should == []
|
674
674
|
badge.show_level_letters.should == true
|
675
|
-
badge.valid?.should
|
675
|
+
badge.valid?.should == true
|
676
676
|
badge.modules.size.should == 1
|
677
677
|
m = badge.modules[0]
|
678
678
|
m.badge.id.should == 123
|
@@ -684,15 +684,15 @@ describe "Badge" do
|
|
684
684
|
m.completed_into_column.should == nil
|
685
685
|
m.numeric_into_column.should == nil
|
686
686
|
m.add_column_id_to_numeric.should == nil
|
687
|
-
m.valid?.should
|
687
|
+
m.valid?.should == true
|
688
688
|
requirement = badge.requirements[0]
|
689
689
|
requirement.name.should == 'r_name'
|
690
690
|
requirement.description.should == 'r_description'
|
691
691
|
requirement.id.should == 2345
|
692
692
|
requirement.mod.should == m
|
693
|
-
requirement.editable.should
|
693
|
+
requirement.editable.should == true
|
694
694
|
requirement.badge.should == badge
|
695
|
-
requirement.valid?.should
|
695
|
+
requirement.valid?.should == true
|
696
696
|
end
|
697
697
|
end
|
698
698
|
|
@@ -774,7 +774,7 @@ describe "Badge" do
|
|
774
774
|
@data.due = 1
|
775
775
|
@data.awarded = 1
|
776
776
|
@data.awarded_date = date
|
777
|
-
@data.update(@api).should
|
777
|
+
@data.update(@api).should == true
|
778
778
|
end
|
779
779
|
|
780
780
|
it "Success (just requirement)" do
|
@@ -785,7 +785,7 @@ describe "Badge" do
|
|
785
785
|
@data.should_not_receive(:mark_due)
|
786
786
|
|
787
787
|
@data.requirements[2345] = '2'
|
788
|
-
@data.update(@api).should
|
788
|
+
@data.update(@api).should == true
|
789
789
|
end
|
790
790
|
|
791
791
|
it "Success (just due)" do
|
@@ -796,7 +796,7 @@ describe "Badge" do
|
|
796
796
|
@data.should_receive(:mark_due).with(@api, 1) { true }
|
797
797
|
|
798
798
|
@data.due = 1
|
799
|
-
@data.update(@api).should
|
799
|
+
@data.update(@api).should == true
|
800
800
|
end
|
801
801
|
|
802
802
|
it "Success (just awarded)" do
|
@@ -808,7 +808,7 @@ describe "Badge" do
|
|
808
808
|
|
809
809
|
@data.awarded = 1
|
810
810
|
@data.awarded_date = date
|
811
|
-
@data.update(@api).should
|
811
|
+
@data.update(@api).should == true
|
812
812
|
end
|
813
813
|
|
814
814
|
it "Failed (requirement)" do
|
@@ -823,7 +823,7 @@ describe "Badge" do
|
|
823
823
|
@data.due = 1
|
824
824
|
@data.awarded = 1
|
825
825
|
@data.awarded_date = date
|
826
|
-
@data.update(@api).should
|
826
|
+
@data.update(@api).should == false
|
827
827
|
end
|
828
828
|
|
829
829
|
it "Failed (due)" do
|
@@ -837,7 +837,7 @@ describe "Badge" do
|
|
837
837
|
@data.due = 1
|
838
838
|
@data.awarded = 1
|
839
839
|
@data.awarded_date = date
|
840
|
-
@data.update(@api).should
|
840
|
+
@data.update(@api).should == false
|
841
841
|
end
|
842
842
|
|
843
843
|
it "Failed (awarded)" do
|
@@ -851,7 +851,7 @@ describe "Badge" do
|
|
851
851
|
@data.due = 1
|
852
852
|
@data.awarded = 1
|
853
853
|
@data.awarded_date = date
|
854
|
-
@data.update(@api).should
|
854
|
+
@data.update(@api).should == false
|
855
855
|
end
|
856
856
|
|
857
857
|
end
|
@@ -883,7 +883,7 @@ describe "Badge" do
|
|
883
883
|
HTTParty.should_receive(:post).with(awarded_url, {:body => awarded_post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>awarded_body_data.to_json}) }
|
884
884
|
Osm::Section.stub(:get) { Osm::Section.new(:id => 2, :type => :beavers) }
|
885
885
|
|
886
|
-
data.mark_awarded(@api, Date.new(2000, 1, 2), 1).should
|
886
|
+
data.mark_awarded(@api, Date.new(2000, 1, 2), 1).should == true
|
887
887
|
end
|
888
888
|
|
889
889
|
it "Mark badge due" do
|
@@ -914,7 +914,7 @@ describe "Badge" do
|
|
914
914
|
HTTParty.should_receive(:post).with(awarded_url, {:body => awarded_post_data}) { OsmTest::DummyHttpResult.new(:response=>{:code=>'200', :body=>awarded_body_data.to_json}) }
|
915
915
|
Osm::Section.stub(:get) { Osm::Section.new(:id => 2, :type => :beavers) }
|
916
916
|
|
917
|
-
data.mark_due(@api, 1).should
|
917
|
+
data.mark_due(@api, 1).should == true
|
918
918
|
end
|
919
919
|
|
920
920
|
it "Get summary data for a section" do
|