osm 1.2.15.dev → 1.2.15.dev.1
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 +3 -0
- data/lib/osm.rb +2 -1
- data/lib/osm/badge.rb +47 -17
- data/lib/osm/badges.rb +1 -1
- data/lib/osm/meeting.rb +23 -4
- data/spec/osm/badge_spec.rb +85 -19
- data/spec/osm/badges_spec.rb +3 -3
- data/spec/osm/meeting_spec.rb +10 -60
- 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 | 
            +
                YjFmYjY4MTk2NDUyYzEyNDJhNGE1ZTVhOGZhZTBiOWZhOTUwYzM3Zg==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                ZmVjMjkwMDUwOWU3NzMzZGZiMmM3ZWI3MmFmYTVlMDA1ZjVlNTBkNw==
         | 
| 7 7 | 
             
            SHA512:
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                ZDI5NzA5NzMxY2FhYmFmZDYxMTAwY2Y0MTBkMTZkYjhkZjUzZTMzYjJjZTU0
         | 
| 10 | 
            +
                N2RhOTU1OTViMTFiZGY5YzNjMjE4MWE0ZDFlMzIxZTUwNjE3OTI2YzBiYzll
         | 
| 11 | 
            +
                ODZjMmY3MjdkNjIzZDA5MGNmMjQyNTVhMWNhMWZkOTM5ODJhZTg=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                ZTczZjNmMDc1M2E3ZGJkYTVmZDJhM2VjYmFhOGVhODk5Y2E0ZWQwM2FlZTYx
         | 
| 14 | 
            +
                ZTM0MzJhMDZlY2VlZjM1ZmYwNzZkNjI1NzNjYmI0ZGRhZjQwZTlkNTUxODQ0
         | 
| 15 | 
            +
                YjVlYTU5ZGE3NDg0MTU1NTE4MTAxY2I4YjI1ZDQzMGU0NWRjZmY=
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -16,6 +16,7 @@ | |
| 16 16 | 
             
                  * id, version, identifier, group\_name, latest, user\_id, levels, sharing attributes added
         | 
| 17 17 | 
             
                  * OSM Changed how completion criteria are retrieved (this gem now uses a special peice of OSM's API just for this purpose) so:
         | 
| 18 18 | 
             
                    * Osm::Badge attributes sections\_needed, total\_needed and needed\_from\_section are gone
         | 
| 19 | 
            +
                  * New methods modules, module_letters and module_ids
         | 
| 19 20 | 
             
                * Osm::Badge::Data
         | 
| 20 21 | 
             
                  * mark\_awarded method now only marks as awarded (the optional mark\_as parameter is gone)
         | 
| 21 22 | 
             
                  * mark\_not\_awarded method added
         | 
| @@ -29,6 +30,8 @@ | |
| 29 30 | 
             
                  * Attributes untouched: badge\_type, badge\_section, data, requirement\_label
         | 
| 30 31 | 
             
                * Osm::Activity::Badge attributes now match Osm::Event::BadgeLink
         | 
| 31 32 | 
             
                * Osm::Meeting::BadgeLink attributes now match Osm::Event::badgeLink
         | 
| 33 | 
            +
                * Osm::Badges.get_badge_stock returns a Hash, keys are now "#{badge_id}_#{level}"
         | 
| 34 | 
            +
                * Osm::Badge::Data instance method requirement_met?(field_id) method made public
         | 
| 32 35 |  | 
| 33 36 | 
             
            ## Version 1.2.14
         | 
| 34 37 |  | 
    
        data/lib/osm.rb
    CHANGED
    
    | @@ -34,7 +34,8 @@ module Osm | |
| 34 34 | 
             
              OSM_DATE_FORMAT_HUMAN = '%d/%m/%Y'
         | 
| 35 35 | 
             
              OSM_DATETIME_FORMAT_HUMAN = '%d/%m/%Y %H:%M:%S'
         | 
| 36 36 | 
             
              OSM_TIME_REGEX = /\A(?:[0-1][0-9]|2[0-3]):[0-5][0-9]\Z/
         | 
| 37 | 
            -
               | 
| 37 | 
            +
              OSM_DATE_REGEX_UNANCHORED = /(?:[1-9]\d{3}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1]))|(?:(?:0?[1-9]|[1-2][0-9]|3[0-1])\/(?:0?[1-9]|1[0-2])\/(?:\d{2}|[1-9]\d{3}))/
         | 
| 38 | 
            +
              OSM_DATE_REGEX = /\A#{Osm::OSM_DATE_REGEX_UNANCHORED.to_s}\Z/
         | 
| 38 39 | 
             
              SUBSCRIPTION_LEVEL_NAMES = ['Unknown', 'Bronze', 'Silver', 'Gold', 'Gold+']
         | 
| 39 40 | 
             
              SUBSCRIPTION_LEVELS = [nil, :bronze, :silver, :gold, :gold_plus]
         | 
| 40 41 | 
             
            end
         | 
    
        data/lib/osm/badge.rb
    CHANGED
    
    | @@ -170,14 +170,29 @@ module Osm | |
| 170 170 | 
             
                    badge_data = Hash[item.to_a.select{ |k,v| !!k.match(/\d+_\d+/) }]
         | 
| 171 171 | 
             
                    badge_data.each do |badge_identifier, status|
         | 
| 172 172 | 
             
                      if status.is_a?(String)
         | 
| 173 | 
            -
                        # Possible statuses:  | 
| 174 | 
            -
                         | 
| 175 | 
            -
             | 
| 176 | 
            -
             | 
| 177 | 
            -
             | 
| 178 | 
            -
             | 
| 179 | 
            -
             | 
| 180 | 
            -
             | 
| 173 | 
            +
                        # Possible statuses: 
         | 
| 174 | 
            +
                        # 'Started',
         | 
| 175 | 
            +
                        # 'Due', 'Due Lvl 2'
         | 
| 176 | 
            +
                        # 'Awarded', 'Awarded Lvl 2', '01/02/2003', '02/03/2004 (Lvl 2)'
         | 
| 177 | 
            +
                        if status.eql?('Started')
         | 
| 178 | 
            +
                          new_item[badge_identifier] = :started
         | 
| 179 | 
            +
                        elsif status.eql?('Due')
         | 
| 180 | 
            +
                          new_item[badge_identifier] = :due
         | 
| 181 | 
            +
                        elsif match_data = status.match(/\ADue Lvl (\d+)\Z/)
         | 
| 182 | 
            +
                          new_item[badge_identifier] = :due
         | 
| 183 | 
            +
                          new_item["#{badge_identifier}_level"] = match_data[1].to_i
         | 
| 184 | 
            +
                        elsif status.eql?('Awarded')
         | 
| 185 | 
            +
                          new_item[badge_identifier] = :awarded
         | 
| 186 | 
            +
                        elsif match_data = status.match(/\AAwarded Lvl (\d+)\Z/)
         | 
| 187 | 
            +
                          new_item[badge_identifier] = :awarded
         | 
| 188 | 
            +
                          new_item["#{badge_identifier}_level"] = match_data[1].to_i
         | 
| 189 | 
            +
                        elsif match_data = status.match(Osm::OSM_DATE_REGEX)
         | 
| 190 | 
            +
                          new_item[badge_identifier] = :awarded
         | 
| 191 | 
            +
                          new_item["#{badge_identifier}_date"] = Osm.parse_date(match_data[0])
         | 
| 192 | 
            +
                        elsif match_data = status.match(/\A(#{Osm::OSM_DATE_REGEX_UNANCHORED.to_s}) \(Lvl (\d+)\)\Z/)
         | 
| 193 | 
            +
                          new_item[badge_identifier] = :awarded
         | 
| 194 | 
            +
                          new_item["#{badge_identifier}_date"] = Osm.parse_date(match_data[1])
         | 
| 195 | 
            +
                          new_item["#{badge_identifier}_level"] = match_data[2].to_i
         | 
| 181 196 | 
             
                        end
         | 
| 182 197 | 
             
                      end
         | 
| 183 198 | 
             
                    end
         | 
| @@ -246,6 +261,18 @@ module Osm | |
| 246 261 | 
             
                  }.flatten].except('z')
         | 
| 247 262 | 
             
                end
         | 
| 248 263 |  | 
| 264 | 
            +
                def module_letters
         | 
| 265 | 
            +
                  @module_letters ||= completion_criteria[:modules].map{ |m| m[:module_letter] }.sort
         | 
| 266 | 
            +
                end
         | 
| 267 | 
            +
             | 
| 268 | 
            +
                def module_ids
         | 
| 269 | 
            +
                  @module_ids ||= completion_criteria[:modules].map{ |m| m[:module_id] }.sort
         | 
| 270 | 
            +
                end
         | 
| 271 | 
            +
             | 
| 272 | 
            +
                def modules
         | 
| 273 | 
            +
                  completion_criteria[:modules] || []
         | 
| 274 | 
            +
                end
         | 
| 275 | 
            +
             | 
| 249 276 |  | 
| 250 277 | 
             
                # Compare Badge based on name then id then version (desc)
         | 
| 251 278 | 
             
                def <=>(another)
         | 
| @@ -443,8 +470,8 @@ module Osm | |
| 443 470 | 
             
                  # @return [Fixnum] the total number of requirements considered gained
         | 
| 444 471 | 
             
                  def total_gained
         | 
| 445 472 | 
             
                    count = 0
         | 
| 446 | 
            -
                    requirements.each do | | 
| 447 | 
            -
                      next unless requirement_met?( | 
| 473 | 
            +
                    badge.requirements.each do |requirement|
         | 
| 474 | 
            +
                      next unless requirement_met?(requirement.field)
         | 
| 448 475 | 
             
                      count += 1
         | 
| 449 476 | 
             
                    end
         | 
| 450 477 | 
             
                    return count
         | 
| @@ -472,7 +499,7 @@ module Osm | |
| 472 499 | 
             
                    count = {}
         | 
| 473 500 | 
             
                    badge.requirements.each do |requirement|
         | 
| 474 501 | 
             
                      count[requirement.module_letter] ||= 0
         | 
| 475 | 
            -
                      next unless requirement_met?( | 
| 502 | 
            +
                      next unless requirement_met?(requirement.field)
         | 
| 476 503 | 
             
                      count[requirement.module_letter] += 1
         | 
| 477 504 | 
             
                    end
         | 
| 478 505 | 
             
                    Hash[*count.map{ |k,v| [badge.module_map[k], v, k, v] }.flatten]
         | 
| @@ -549,7 +576,7 @@ module Osm | |
| 549 576 | 
             
                    end
         | 
| 550 577 | 
             
                    return false if due?
         | 
| 551 578 | 
             
                    requirements.each do |key, value|
         | 
| 552 | 
            -
                      return true if requirement_met?( | 
| 579 | 
            +
                      return true if requirement_met?(key)
         | 
| 553 580 | 
             
                    end
         | 
| 554 581 | 
             
                    return false
         | 
| 555 582 | 
             
                  end
         | 
| @@ -581,7 +608,7 @@ module Osm | |
| 581 608 | 
             
                      ((due + 1)..top_level).reverse_each do |level|
         | 
| 582 609 | 
             
                        badge.requirements.each do |requirement|
         | 
| 583 610 | 
             
                          next unless requirement.module_letter.eql?(letters[level - 1]) # Not interested in other levels
         | 
| 584 | 
            -
                          return level if requirement_met?( | 
| 611 | 
            +
                          return level if requirement_met?(requirement.field)
         | 
| 585 612 | 
             
                        end
         | 
| 586 613 | 
             
                      end
         | 
| 587 614 | 
             
                      return 0 # No levels started
         | 
| @@ -726,10 +753,13 @@ module Osm | |
| 726 753 | 
             
                    Osm.inspect_instance(self, options={:replace_with => {'badge' => :name}})
         | 
| 727 754 | 
             
                  end
         | 
| 728 755 |  | 
| 729 | 
            -
                   | 
| 730 | 
            -
                   | 
| 731 | 
            -
             | 
| 732 | 
            -
             | 
| 756 | 
            +
                  # Work out if the requirmeent has been met
         | 
| 757 | 
            +
                  # @param [Fixnum, #to_i] field_id The id of the field to evaluate (e.g. "12", "xSomething", "Yes" or "")
         | 
| 758 | 
            +
                  # @return [Boolean] whether the requirmeent has been met
         | 
| 759 | 
            +
                  def requirement_met?(field_id)
         | 
| 760 | 
            +
                    data = requirements[field_id.to_i].to_s
         | 
| 761 | 
            +
                    return false if data == '0'
         | 
| 762 | 
            +
                    !(data.blank? || data[0].downcase.eql?('x'))
         | 
| 733 763 | 
             
                  end
         | 
| 734 764 |  | 
| 735 765 | 
             
                end # Class Data
         | 
    
        data/lib/osm/badges.rb
    CHANGED
    
    | @@ -19,7 +19,7 @@ module Osm | |
| 19 19 |  | 
| 20 20 | 
             
                  data = api.perform_query("ext/badges/stock/?action=getBadgeStock§ion=#{section.type}§ion_id=#{section.id}&term_id=#{term_id}")
         | 
| 21 21 | 
             
                  data = (data['items'] || [])
         | 
| 22 | 
            -
                  data.map!{ |i| [i[' | 
| 22 | 
            +
                  data.map!{ |i| [i['badge_id_level'], i['stock']] }
         | 
| 23 23 | 
             
                  data = Hash[data]
         | 
| 24 24 |  | 
| 25 25 | 
             
                  Osm::Model.cache_write(api, cache_key, data)
         | 
    
        data/lib/osm/meeting.rb
    CHANGED
    
    | @@ -283,12 +283,31 @@ module Osm | |
| 283 283 | 
             
                  else
         | 
| 284 284 | 
             
                    # We'll have to iterate through the activities
         | 
| 285 285 | 
             
                    require_ability_to(api, :read, :programme, section_id, options)
         | 
| 286 | 
            -
             | 
| 286 | 
            +
             | 
| 287 | 
            +
                    links = badge_links
         | 
| 287 288 | 
             
                    activities.each do |activity|
         | 
| 288 289 | 
             
                      activity = Osm::Activity.get(api, activity.activity_id, nil, options)
         | 
| 289 | 
            -
                      activity.badges | 
| 290 | 
            -
             | 
| 291 | 
            -
             | 
| 290 | 
            +
                      links += activity.badges
         | 
| 291 | 
            +
                    end
         | 
| 292 | 
            +
             | 
| 293 | 
            +
                    badges = []
         | 
| 294 | 
            +
                    links.each do |badge|
         | 
| 295 | 
            +
                      badges.push({
         | 
| 296 | 
            +
                        "badge" => nil,#"activity_animalcarer",
         | 
| 297 | 
            +
                        "badge_id" => badge.badge_id,
         | 
| 298 | 
            +
                        "badge_version" => badge.badge_version,
         | 
| 299 | 
            +
                        "column_id" => badge.requirement_id,
         | 
| 300 | 
            +
                        "badgeName" => badge.badge_name,
         | 
| 301 | 
            +
                        "badgetype" => badge.badge_type,
         | 
| 302 | 
            +
                        "columngroup" => nil,#"A",
         | 
| 303 | 
            +
                        "columnname" => nil,#"a",
         | 
| 304 | 
            +
                        "data" => badge.data,
         | 
| 305 | 
            +
                        "eveningid" => id,
         | 
| 306 | 
            +
                        "meetingdate" => date,
         | 
| 307 | 
            +
                        "name" => badge.requirement_label,
         | 
| 308 | 
            +
                        "section" => badge.badge_section,
         | 
| 309 | 
            +
                        "sectionid" => section_id
         | 
| 310 | 
            +
                      })
         | 
| 292 311 | 
             
                    end
         | 
| 293 312 | 
             
                  end
         | 
| 294 313 |  | 
    
        data/spec/osm/badge_spec.rb
    CHANGED
    
    | @@ -64,6 +64,38 @@ describe "Badge" do | |
| 64 64 | 
             
                requirement.valid?.should be_true
         | 
| 65 65 | 
             
              end
         | 
| 66 66 |  | 
| 67 | 
            +
              it "Produces a map of module letter <-> module id" do
         | 
| 68 | 
            +
                badge = Osm::Badge.new(completion_criteria:{ modules: [
         | 
| 69 | 
            +
                  {module_id: 2, module_letter: 'c'},
         | 
| 70 | 
            +
                  {module_id: 10, module_letter: 'b'},
         | 
| 71 | 
            +
                  {module_id: 1, module_letter: 'a'}
         | 
| 72 | 
            +
                ]})
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                badge.module_map.should == {1=>'a', 10=>'b', 2=>'c', 'a'=>1, 'b'=>10, 'c'=>2}
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              it "Gets the number of requirements needed per module" do
         | 
| 78 | 
            +
                badge = Osm::Badge.new(completion_criteria:{ modules: [
         | 
| 79 | 
            +
                  {module_id: 2, module_letter: 'c', min_required: 5},
         | 
| 80 | 
            +
                  {module_id: 10, module_letter: 'b', min_required: 4},
         | 
| 81 | 
            +
                  {module_id: 1, module_letter: 'a', min_required: 3}
         | 
| 82 | 
            +
                ]})
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                badge.needed_per_module.should == {'a'=>3, 'b'=>4, 'c'=>5, 2=>5, 10=>4, 1=>3}
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              it "Produces a list of modules" do
         | 
| 88 | 
            +
                badge = Osm::Badge.new(completion_criteria:{ modules: [
         | 
| 89 | 
            +
                  {module_id: 2, module_letter: 'c'},
         | 
| 90 | 
            +
                  {module_id: 10, module_letter: 'b'},
         | 
| 91 | 
            +
                  {module_id: 1, module_letter: 'a'}
         | 
| 92 | 
            +
                ]})
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                badge.module_letters.should == ['a', 'b', 'c']
         | 
| 95 | 
            +
                badge.module_ids.should == [1, 2, 10]
         | 
| 96 | 
            +
              end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
             | 
| 67 99 | 
             
              it "Create Data" do
         | 
| 68 100 | 
             
                data = Osm::Badge::Data.new(
         | 
| 69 101 | 
             
                  :member_id => 1,
         | 
| @@ -117,18 +149,43 @@ describe "Badge" do | |
| 117 149 | 
             
              end
         | 
| 118 150 |  | 
| 119 151 |  | 
| 152 | 
            +
              it "Works out if a requirement has been met" do
         | 
| 153 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => ''}).requirement_met?(1).should be_false
         | 
| 154 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => 'xStuff'}).requirement_met?(1).should be_false
         | 
| 155 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => '0'}).requirement_met?(1).should be_false
         | 
| 156 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => 0}).requirement_met?(1).should be_false
         | 
| 157 | 
            +
                data = Osm::Badge::Data.new(requirements: {}).requirement_met?(1).should be_false
         | 
| 158 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => 'Stuff'}).requirement_met?(1).should be_true
         | 
| 159 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => '1'}).requirement_met?(1).should be_true
         | 
| 160 | 
            +
                data = Osm::Badge::Data.new(requirements: {1 => 1}).requirement_met?(1).should be_true
         | 
| 161 | 
            +
              end
         | 
| 162 | 
            +
             | 
| 163 | 
            +
             | 
| 120 164 | 
             
              it "Get total requirements gained for a member" do
         | 
| 121 165 | 
             
                data = Osm::Badge::Data.new(
         | 
| 166 | 
            +
                  :badge => Osm::Badge.new(
         | 
| 167 | 
            +
                    :requirements => [
         | 
| 168 | 
            +
                      Osm::Badge::Requirement.new(field: 1),
         | 
| 169 | 
            +
                      Osm::Badge::Requirement.new(field: 2),
         | 
| 170 | 
            +
                      Osm::Badge::Requirement.new(field: 3),
         | 
| 171 | 
            +
                      Osm::Badge::Requirement.new(field: 4),
         | 
| 172 | 
            +
                      Osm::Badge::Requirement.new(field: 5),
         | 
| 173 | 
            +
                      Osm::Badge::Requirement.new(field: 6),
         | 
| 174 | 
            +
                      Osm::Badge::Requirement.new(field: 7),
         | 
| 175 | 
            +
                      Osm::Badge::Requirement.new(field: 8),
         | 
| 176 | 
            +
                      Osm::Badge::Requirement.new(field: 9),
         | 
| 177 | 
            +
                    ]
         | 
| 178 | 
            +
                  ),
         | 
| 122 179 | 
             
                  :requirements => {
         | 
| 123 | 
            -
                     | 
| 124 | 
            -
                     | 
| 125 | 
            -
                     | 
| 126 | 
            -
                     | 
| 127 | 
            -
                     | 
| 128 | 
            -
                     | 
| 129 | 
            -
                     | 
| 130 | 
            -
                     | 
| 131 | 
            -
                     | 
| 180 | 
            +
                    1 => 'a',
         | 
| 181 | 
            +
                    2 => 'yes',
         | 
| 182 | 
            +
                    3 => '2000-01-02',
         | 
| 183 | 
            +
                    4 => 1,
         | 
| 184 | 
            +
                    5 => 'x',
         | 
| 185 | 
            +
                    6 => 'xYES',
         | 
| 186 | 
            +
                    7 => '',
         | 
| 187 | 
            +
                    8 => nil,
         | 
| 188 | 
            +
                    9 => 0,
         | 
| 132 189 | 
             
                  }
         | 
| 133 190 | 
             
                )
         | 
| 134 191 | 
             
                data.total_gained.should == 4
         | 
| @@ -789,13 +846,15 @@ describe "Badge" do | |
| 789 846 | 
             
                        'firstname' => 'First',
         | 
| 790 847 | 
             
                        'lastname' => 'Last',
         | 
| 791 848 | 
             
                        'scout_id' => 1,
         | 
| 792 | 
            -
                        ' | 
| 793 | 
            -
                        ' | 
| 794 | 
            -
                        ' | 
| 795 | 
            -
                        ' | 
| 796 | 
            -
                        ' | 
| 797 | 
            -
                        ' | 
| 798 | 
            -
                        ' | 
| 849 | 
            +
                        '90_0' => nil,
         | 
| 850 | 
            +
                        '91_0' => '',
         | 
| 851 | 
            +
                        '92_0' => 'Started',
         | 
| 852 | 
            +
                        '93_0' => 'Due',
         | 
| 853 | 
            +
                        '94_0' => 'Due Lvl 3',
         | 
| 854 | 
            +
                        '95_0' => 'Awarded',
         | 
| 855 | 
            +
                        '96_0' => 'Awarded Lvl 2',
         | 
| 856 | 
            +
                        '97_0' => '01/02/2003',
         | 
| 857 | 
            +
                        '98_0' => '02/03/2004 (Lvl 1)',
         | 
| 799 858 | 
             
                      }
         | 
| 800 859 | 
             
                    ]
         | 
| 801 860 | 
             
                  }
         | 
| @@ -809,11 +868,18 @@ describe "Badge" do | |
| 809 868 | 
             
                    :last_name => 'Last',
         | 
| 810 869 | 
             
                    :name => 'First Last',
         | 
| 811 870 | 
             
                    :member_id => 1,
         | 
| 812 | 
            -
                    ' | 
| 813 | 
            -
                    ' | 
| 871 | 
            +
                    '92_0' => :started,
         | 
| 872 | 
            +
                    '93_0' => :due,
         | 
| 873 | 
            +
                    '94_0' => :due,
         | 
| 874 | 
            +
                    '94_0_level' => 3,
         | 
| 875 | 
            +
                    '95_0' => :awarded,
         | 
| 814 876 | 
             
                    '96_0' => :awarded,
         | 
| 877 | 
            +
                    '96_0_level' => 2,
         | 
| 815 878 | 
             
                    '97_0' => :awarded,
         | 
| 816 | 
            -
                    ' | 
| 879 | 
            +
                    '97_0_date' => Date.new(2003, 2, 1),
         | 
| 880 | 
            +
                    '98_0' => :awarded,
         | 
| 881 | 
            +
                    '98_0_date' => Date.new(2004, 3, 2),
         | 
| 882 | 
            +
                    '98_0_level' => 1,
         | 
| 817 883 | 
             
                  }
         | 
| 818 884 | 
             
                end
         | 
| 819 885 |  | 
    
        data/spec/osm/badges_spec.rb
    CHANGED
    
    | @@ -109,15 +109,15 @@ describe "Badges" do | |
| 109 109 | 
             
                  badges_body = {
         | 
| 110 110 | 
             
                    'identifier' => 'badge_id_level',
         | 
| 111 111 | 
             
                    'items' => [
         | 
| 112 | 
            -
                      { 'shortname' => 'badge_1', 'stock' => 1, 'desired' => 0, 'due' => 0 },
         | 
| 113 | 
            -
                      { 'shortname' => 'badge_2', 'stock' => 2, 'desired' => 0, 'due' => 0 },
         | 
| 112 | 
            +
                      { 'shortname' => 'badge_1', 'stock' => 1, 'desired' => 0, 'due' => 0, 'badge_id_level' => '100_1' },
         | 
| 113 | 
            +
                      { 'shortname' => 'badge_2', 'stock' => 2, 'desired' => 0, 'due' => 0, 'badge_id_level' => '200_2' },
         | 
| 114 114 | 
             
                    ]
         | 
| 115 115 | 
             
                  }
         | 
| 116 116 | 
             
                  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/ext/badges/stock/?action=getBadgeStock§ion=beavers§ion_id=1&term_id=2", :body => badges_body.to_json, :content_type => 'application/json')
         | 
| 117 117 | 
             
                  Osm::Term.stub(:get_current_term_for_section) { Osm::Term.new(:id => 2) }
         | 
| 118 118 |  | 
| 119 119 | 
             
                  section = Osm::Section.new(:id => 1, :type => :beavers)
         | 
| 120 | 
            -
                  Osm::Badges.get_stock(@api, section).should == {' | 
| 120 | 
            +
                  Osm::Badges.get_stock(@api, section).should == {'100_1' => 1, '200_2' => 2}
         | 
| 121 121 | 
             
                end
         | 
| 122 122 |  | 
| 123 123 | 
             
                describe "Update badge stock levels" do
         | 
    
        data/spec/osm/meeting_spec.rb
    CHANGED
    
    | @@ -155,74 +155,24 @@ describe "Meeting" do | |
| 155 155 | 
             
                  ]
         | 
| 156 156 | 
             
                  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/api.php?action=getUserRoles", :body => roles_body.to_json, :content_type => 'application/json')
         | 
| 157 157 |  | 
| 158 | 
            -
                   | 
| 159 | 
            -
                    ' | 
| 160 | 
            -
             | 
| 161 | 
            -
                      'version' => '0',
         | 
| 162 | 
            -
                      'groupid' => '2',
         | 
| 163 | 
            -
                      'userid' => '3',
         | 
| 164 | 
            -
                      'title' => 'Activity Name',
         | 
| 165 | 
            -
                      'description' => 'Description',
         | 
| 166 | 
            -
                      'resources' => 'Resources',
         | 
| 167 | 
            -
                      'instructions' => 'Instructions',
         | 
| 168 | 
            -
                      'runningtime' => '15',
         | 
| 169 | 
            -
                      'location' => 'indoors',
         | 
| 170 | 
            -
                      'shared' => '0',
         | 
| 171 | 
            -
                      'rating' => '4',
         | 
| 172 | 
            -
                      'facebook' => ''
         | 
| 173 | 
            -
                    },
         | 
| 174 | 
            -
                    'editable' => true,
         | 
| 175 | 
            -
                    'deletable' => false,
         | 
| 176 | 
            -
                    'used' => 3,
         | 
| 177 | 
            -
                    'versions' => [
         | 
| 178 | 
            -
                      {
         | 
| 179 | 
            -
                        'value' => '0',
         | 
| 180 | 
            -
                        'userid' => '1',
         | 
| 181 | 
            -
                        'firstname' => 'Alice',
         | 
| 182 | 
            -
                        'label' => 'Current version - Alice',
         | 
| 183 | 
            -
                        'selected' => 'selected'
         | 
| 184 | 
            -
                      }
         | 
| 185 | 
            -
                    ],
         | 
| 186 | 
            -
                    'sections' => ['beavers', 'cubs'],
         | 
| 187 | 
            -
                    'tags' => ['Tag 1', 'Tag2'],
         | 
| 188 | 
            -
                    'files' => [
         | 
| 189 | 
            -
                      {
         | 
| 190 | 
            -
                        'fileid' => '6',
         | 
| 191 | 
            -
                        'activityid' => '4',
         | 
| 192 | 
            -
                        'filename' => 'File Name',
         | 
| 193 | 
            -
                        'name' => 'Name',
         | 
| 194 | 
            -
                      }
         | 
| 195 | 
            -
                    ],
         | 
| 196 | 
            -
                    'badges' => [
         | 
| 197 | 
            -
                      {
         | 
| 198 | 
            -
                        'badge' => 'activity_firesafety',
         | 
| 199 | 
            -
                        'badgeLongName' => 'Fire Safety',
         | 
| 200 | 
            -
                        'badge_id' => '181',
         | 
| 201 | 
            -
                        'badge_version' => '0',
         | 
| 202 | 
            -
                        'badgetype' => 'activity',
         | 
| 203 | 
            -
                        'badgetypeLongName' => 'Activity',
         | 
| 204 | 
            -
                        'column_id' => '12345',
         | 
| 205 | 
            -
                        'columnname' => 'b_01',
         | 
| 206 | 
            -
                        'columnnameLongName' => 'B: Fire drill',
         | 
| 207 | 
            -
                        'data' => 'Yes',
         | 
| 208 | 
            -
                        'section' => 'cubs',
         | 
| 209 | 
            -
                        'sectionLongName' => 'Cubs',
         | 
| 210 | 
            -
                      }
         | 
| 211 | 
            -
                    ]
         | 
| 212 | 
            -
                  }
         | 
| 213 | 
            -
             | 
| 214 | 
            -
                  FakeWeb.register_uri(:post, "https://www.onlinescoutmanager.co.uk/programme.php?action=getActivity&id=4", :body => activity_body.to_json, :content_type => 'application/json')
         | 
| 215 | 
            -
                  Osm::Activity.stub(:get) { Osm::Activity.new(:badges => [3]) }
         | 
| 158 | 
            +
                  Osm::Activity.stub(:get) { Osm::Activity.new(:badges => [
         | 
| 159 | 
            +
                    Osm::Activity::Badge.new(badge_type: :activity, badge_section: :beavers, requirement_label: 'label', data: 'data', badge_name: 'badge', badge_id: 2, badge_version: 0, requirement_id: 200)
         | 
| 160 | 
            +
                  ]) }
         | 
| 216 161 |  | 
| 217 162 | 
             
                  meeting = Osm::Meeting.new(
         | 
| 218 163 | 
             
                    :id => 2,
         | 
| 219 164 | 
             
                    :date => Date.new(2000, 1, 2),
         | 
| 220 165 | 
             
                    :section_id => 3,
         | 
| 221 166 | 
             
                    :activities => [Osm::Meeting::Activity.new(:activity_id => 4)],
         | 
| 222 | 
            -
                    :badge_links => [ | 
| 167 | 
            +
                    :badge_links => [
         | 
| 168 | 
            +
                      Osm::Activity::Badge.new(badge_type: :activity, badge_section: :beavers, requirement_label: 'label 2', data: 'data 2', badge_name: 'badge 2', badge_id: 4, badge_version: 1, requirement_id: 400)
         | 
| 169 | 
            +
                    ],
         | 
| 223 170 | 
             
                  )
         | 
| 224 171 |  | 
| 225 | 
            -
                  meeting.get_badge_requirements(@api).should == [ | 
| 172 | 
            +
                  meeting.get_badge_requirements(@api).should == [
         | 
| 173 | 
            +
                    {"badge"=>nil, "badge_id"=>4, "badge_version"=>1, "column_id"=>400, "badgeName"=>"badge 2", "badgetype"=>:activity, "columngroup"=>nil, "columnname"=>nil, "data"=>"data 2", "eveningid"=>2, "meetingdate"=>Date.new(2000, 1, 2), "name"=>"label 2", "section"=>:beavers, "sectionid"=>3},
         | 
| 174 | 
            +
                    {"badge"=>nil, "badge_id"=>2, "badge_version"=>0, "column_id"=>200, "badgeName"=>"badge", "badgetype"=>:activity, "columngroup"=>nil, "columnname"=>nil, "data"=>"data", "eveningid"=>2, "meetingdate"=>Date.new(2000, 1, 2), "name"=>"label", "section"=>:beavers, "sectionid"=>3}
         | 
| 175 | 
            +
                  ]
         | 
| 226 176 | 
             
                end
         | 
| 227 177 |  | 
| 228 178 | 
             
                it "Create a meeting (succeded)" do
         | 
    
        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.15.dev
         | 
| 4 | 
            +
              version: 1.2.15.dev.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Robert Gauld
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2014-10- | 
| 11 | 
            +
            date: 2014-10-26 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         |