openagent 0.9.0 → 0.9.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.
- data/lib/openagent/agent.rb +1 -0
- data/lib/openagent/message_builder.rb +35 -2
- data/lib/openagent/version.rb +1 -1
- data/lib/openagent/zone.rb +1 -1
- data/lib/sif/infra/common/condition_group.rb +8 -2
- data/lib/sif/infra/common/conditions.rb +13 -0
- data/lib/sif/models/groups/sis/section_info.rb +1 -1
- data/lib/sif/models/groups/sis/sis_representer.rb +2 -2
- data/lib/sif/models/groups/sis/student_section_enrollment.rb +2 -2
- data/lib/sif/representations/infra/common/condition_group.rb +3 -2
- data/lib/sif/representations/infra/common/conditions.rb +18 -0
- data/lib/sif/representations/infra/common/query.rb +2 -1
- data/lib/sif/sif.rb +2 -0
- data/spec/fixtures/agent.yaml +9 -1
- data/spec/message_builder_spec.rb +11 -8
- metadata +4 -2
    
        data/lib/openagent/agent.rb
    CHANGED
    
    
| @@ -24,8 +24,41 @@ module OpenAgent | |
| 24 24 | 
             
                    )
         | 
| 25 25 | 
             
                  )
         | 
| 26 26 | 
             
                end
         | 
| 27 | 
            +
                def condition(cond={})
         | 
| 28 | 
            +
                    SIF::Infra::Common::Condition.new(
         | 
| 29 | 
            +
                        :element => cond['element'],
         | 
| 30 | 
            +
                        :value => cond['value'],
         | 
| 31 | 
            +
                        :operator => cond['operator']
         | 
| 32 | 
            +
                    )
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                def conditions(condition_arr={})
         | 
| 36 | 
            +
                  return false if condition_arr.count == 0
         | 
| 37 | 
            +
                  condition_arr.map do |c|
         | 
| 38 | 
            +
            #        require 'pry' ; binding.pry
         | 
| 39 | 
            +
                    SIF::Infra::Common::Conditions.new(
         | 
| 40 | 
            +
                        :type => c['cond_type'],
         | 
| 41 | 
            +
                        :condition => condition(c)
         | 
| 42 | 
            +
                    )
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
                def conditions_group(condition_arr={})
         | 
| 46 | 
            +
                  return false if condition_arr.nil? || condition_arr['conditions'].count == 0
         | 
| 47 | 
            +
                  if condition_arr['conditions'].count == 1
         | 
| 48 | 
            +
                    SIF::Infra::Common::ConditionGroup.new(
         | 
| 49 | 
            +
                      :type => 'None',
         | 
| 50 | 
            +
                      :conditions => conditions(condition_arr['conditions'])
         | 
| 51 | 
            +
                      )
         | 
| 52 | 
            +
                  else
         | 
| 53 | 
            +
                    SIF::Infra::Common::ConditionGroup.new(
         | 
| 54 | 
            +
                      :type => condition_arr['group_type'],
         | 
| 55 | 
            +
                      :conditions => conditions(condition_arr['conditions'])
         | 
| 56 | 
            +
                      )
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
                end
         | 
| 59 | 
            +
                #Condition_hash should = {:type=>"None", :conditions=>[{:type=>"None", :element=>"@SchoolYear", :value=>"2014", :operator=>"EQ"}]}
         | 
| 27 60 |  | 
| 28 | 
            -
                def request(object_name,  | 
| 61 | 
            +
                def request(object_name, condition_arr={})
         | 
| 29 62 | 
             
                  SIF::Infra::Common::Message.new(
         | 
| 30 63 | 
             
                    :version => @agent.msg_version,
         | 
| 31 64 | 
             
                    :xmlns => @agent.msg_xmlns,
         | 
| @@ -37,7 +70,7 @@ module OpenAgent | |
| 37 70 | 
             
                        :query_object => SIF::Infra::Common::QueryObject.new(
         | 
| 38 71 | 
             
                          :object_name => object_name
         | 
| 39 72 | 
             
                        ),
         | 
| 40 | 
            -
                        :condition_group =>  | 
| 73 | 
            +
                        :condition_group => conditions_group(condition_arr)
         | 
| 41 74 | 
             
                      )
         | 
| 42 75 | 
             
                    )
         | 
| 43 76 | 
             
                  )
         | 
    
        data/lib/openagent/version.rb
    CHANGED
    
    
    
        data/lib/openagent/zone.rb
    CHANGED
    
    
| @@ -1,4 +1,4 @@ | |
| 1 | 
            -
            require_relative ' | 
| 1 | 
            +
            require_relative 'conditions'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module SIF
         | 
| 4 4 | 
             
              module Infra
         | 
| @@ -7,7 +7,13 @@ module SIF | |
| 7 7 | 
             
                    include Virtus.model
         | 
| 8 8 |  | 
| 9 9 | 
             
                    attribute :type,       String
         | 
| 10 | 
            -
                    attribute :conditions, Array[ | 
| 10 | 
            +
                    attribute :conditions, Array[Conditions]
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    def empty?
         | 
| 13 | 
            +
                      return true if conditions.nil?
         | 
| 14 | 
            +
                      return true if conditions.empty?
         | 
| 15 | 
            +
                      return false
         | 
| 16 | 
            +
                    end
         | 
| 11 17 | 
             
                  end
         | 
| 12 18 | 
             
                end
         | 
| 13 19 | 
             
              end
         | 
| @@ -5,12 +5,12 @@ module SIF | |
| 5 5 | 
             
                    module SISRepresenter
         | 
| 6 6 | 
             
                      include Virtus.model
         | 
| 7 7 |  | 
| 8 | 
            -
                      attribute :extended_elements, Array[MODEL_COMMON::ExtendedElement]
         | 
| 8 | 
            +
                      attribute :extended_elements, Array[MODEL_COMMON::ExtendedElement], :default => []
         | 
| 9 9 | 
             
                      attribute :metadata, String
         | 
| 10 10 | 
             
                      attribute :ref_id, String
         | 
| 11 11 |  | 
| 12 12 | 
             
                      def find_element(name)
         | 
| 13 | 
            -
                        return if extended_elements.nil?
         | 
| 13 | 
            +
                        return nil if extended_elements.nil?
         | 
| 14 14 | 
             
                        el = extended_elements.find{ |e| e.name == name }
         | 
| 15 15 | 
             
                        el ? el.value : nil
         | 
| 16 16 | 
             
                      end
         | 
| @@ -14,8 +14,8 @@ module SIF | |
| 14 14 | 
             
                      attribute :schedule_info_overrides, Array[Common::ScheduleInfoOverride]
         | 
| 15 15 | 
             
                      attribute :credits_attempted, Common::CreditsAttempted
         | 
| 16 16 |  | 
| 17 | 
            -
                      def status | 
| 18 | 
            -
                        if  | 
| 17 | 
            +
                      def status
         | 
| 18 | 
            +
                        if entry_date.past? && exit_date.future?
         | 
| 19 19 | 
             
                          'active'
         | 
| 20 20 | 
             
                        else
         | 
| 21 21 | 
             
                          'deleted'
         | 
| @@ -9,8 +9,9 @@ module SIF | |
| 9 9 | 
             
                      property :type, :as => 'Type', :attribute => true
         | 
| 10 10 |  | 
| 11 11 | 
             
                      collection :conditions, :as => 'SIF_Conditions',
         | 
| 12 | 
            -
                                 :class => SIF::Infra::Common:: | 
| 13 | 
            -
                                 :decorator =>  | 
| 12 | 
            +
                                 :class => SIF::Infra::Common::Conditions,
         | 
| 13 | 
            +
                                 :decorator => Conditions
         | 
| 14 | 
            +
             | 
| 14 15 | 
             
                    end
         | 
| 15 16 | 
             
                  end
         | 
| 16 17 | 
             
                end
         | 
| @@ -0,0 +1,18 @@ | |
| 1 | 
            +
            module SIF
         | 
| 2 | 
            +
              module Representation
         | 
| 3 | 
            +
                module Infra
         | 
| 4 | 
            +
                  module Common
         | 
| 5 | 
            +
                    class Conditions < SIF::Represent
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                      self.representation_wrap = 'SIF_Conditions'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                      property :type, :as => 'Type', :attribute => true
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                      collection :condition, :as => 'SIF_Condition',
         | 
| 12 | 
            +
                                 :class => SIF::Infra::Common::Condition,
         | 
| 13 | 
            +
                                 :decorator => Condition
         | 
| 14 | 
            +
                    end
         | 
| 15 | 
            +
                  end
         | 
| 16 | 
            +
                end
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
            end
         | 
| @@ -14,7 +14,8 @@ module SIF | |
| 14 14 | 
             
                               :decorator => QueryObject
         | 
| 15 15 | 
             
                      property :condition_group, :as => 'SIF_ConditionGroup',
         | 
| 16 16 | 
             
                               :class => SIF::Infra::Common::ConditionGroup,
         | 
| 17 | 
            -
                               :decorator => ConditionGroup
         | 
| 17 | 
            +
                               :decorator => ConditionGroup,
         | 
| 18 | 
            +
                               :if => lambda { !condition_group.empty? }
         | 
| 18 19 |  | 
| 19 20 | 
             
                      property :example, :as => 'SIF_Example'
         | 
| 20 21 | 
             
                    end
         | 
    
        data/lib/sif/sif.rb
    CHANGED
    
    | @@ -13,6 +13,7 @@ module SIF | |
| 13 13 | 
             
                module Common
         | 
| 14 14 | 
             
                  autoload :Application, 'sif/infra/common/application'
         | 
| 15 15 | 
             
                  autoload :Condition, 'sif/infra/common/condition'
         | 
| 16 | 
            +
                  autoload :Conditions, 'sif/infra/common/conditions'
         | 
| 16 17 | 
             
                  autoload :ConditionGroup, 'sif/infra/common/condition_group'
         | 
| 17 18 | 
             
                  autoload :Data, 'sif/infra/common/data'
         | 
| 18 19 | 
             
                  autoload :Error, 'sif/infra/common/error'
         | 
| @@ -137,6 +138,7 @@ module SIF | |
| 137 138 | 
             
                  module Common
         | 
| 138 139 | 
             
                    autoload :Application, 'sif/representations/infra/common/application'
         | 
| 139 140 | 
             
                    autoload :Condition, 'sif/representations/infra/common/condition'
         | 
| 141 | 
            +
                    autoload :Conditions, 'sif/representations/infra/common/conditions'
         | 
| 140 142 | 
             
                    autoload :ConditionGroup, 'sif/representations/infra/common/condition_group'
         | 
| 141 143 | 
             
                    autoload :Data, 'sif/representations/infra/common/data'
         | 
| 142 144 | 
             
                    autoload :Error, 'sif/representations/infra/common/error'
         | 
    
        data/spec/fixtures/agent.yaml
    CHANGED
    
    
| @@ -2,6 +2,7 @@ require_relative 'spec_helper' | |
| 2 2 | 
             
            require "openagent/message_builder"
         | 
| 3 3 | 
             
            require "openagent/agent"
         | 
| 4 4 | 
             
            require "openagent/zone"
         | 
| 5 | 
            +
            require "openagent"
         | 
| 5 6 |  | 
| 6 7 | 
             
            describe OpenAgent::MessageBuilder do
         | 
| 7 8 |  | 
| @@ -24,7 +25,7 @@ describe OpenAgent::MessageBuilder do | |
| 24 25 | 
             
              end
         | 
| 25 26 |  | 
| 26 27 | 
             
              def represent(msg)
         | 
| 27 | 
            -
                SIF | 
| 28 | 
            +
                SIF.repr(msg)
         | 
| 28 29 | 
             
              end
         | 
| 29 30 |  | 
| 30 31 | 
             
              it "registers" do
         | 
| @@ -38,8 +39,15 @@ describe OpenAgent::MessageBuilder do | |
| 38 39 | 
             
              end
         | 
| 39 40 |  | 
| 40 41 |  | 
| 41 | 
            -
              it "requests" do
         | 
| 42 | 
            -
                header_checks_out{ builder.request("StudentPersonal", nil) }
         | 
| 42 | 
            +
              it "requests without conditions" do
         | 
| 43 | 
            +
                msg = header_checks_out{ builder.request("StudentPersonal", nil) }
         | 
| 44 | 
            +
                represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n  <SIF_Request>\n    <SIF_Header>\n      <SIF_MsgId>GUUID</SIF_MsgId>\n      <SIF_Timestamp>TIME</SIF_Timestamp>\n      <SIF_SourceId>canvas</SIF_SourceId>\n    </SIF_Header>\n    <SIF_Version>2.0r1</SIF_Version>\n    <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n    <SIF_Query>\n      <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n    </SIF_Query>\n  </SIF_Request>\n</SIF_Message>"
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it "requests with conditions" do
         | 
| 48 | 
            +
                conditions_arr = agent.conditions
         | 
| 49 | 
            +
                msg = header_checks_out{ builder.request("StudentPersonal", conditions_arr) }
         | 
| 50 | 
            +
                represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n  <SIF_Request>\n    <SIF_Header>\n      <SIF_MsgId>GUUID</SIF_MsgId>\n      <SIF_Timestamp>TIME</SIF_Timestamp>\n      <SIF_SourceId>canvas</SIF_SourceId>\n    </SIF_Header>\n    <SIF_Version>2.0r1</SIF_Version>\n    <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n    <SIF_Query>\n      <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n      <SIF_ConditionGroup Type=\"None\">\n        <SIF_Conditions Type=\"None\">\n          <SIF_Condition>\n            <SIF_Element>@SchoolYear</SIF_Element>\n            <SIF_Operator>EQ</SIF_Operator>\n            <SIF_Value>2014</SIF_Value>\n          </SIF_Condition>\n        </SIF_Conditions>\n      </SIF_ConditionGroup>\n    </SIF_Query>\n  </SIF_Request>\n</SIF_Message>"
         | 
| 43 51 | 
             
              end
         | 
| 44 52 |  | 
| 45 53 | 
             
              it "pings" do
         | 
| @@ -73,9 +81,4 @@ describe OpenAgent::MessageBuilder do | |
| 73 81 | 
             
                msg = header_checks_out{builder.provision}
         | 
| 74 82 | 
             
                represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n  <SIF_Provision>\n    <SIF_Header>\n      <SIF_MsgId>GUUID</SIF_MsgId>\n      <SIF_Timestamp>TIME</SIF_Timestamp>\n      <SIF_SourceId>canvas</SIF_SourceId>\n    </SIF_Header>\n    <SIF_ProvideObjects/>\n    <SIF_SubscribeObjects>\n      <SIF_Object ObjectName=\"LEAInfo\"/>\n      <SIF_Object ObjectName=\"SchoolInfo\"/>\n      <SIF_Object ObjectName=\"TermInfo\"/>\n      <SIF_Object ObjectName=\"SchoolCourseInfo\"/>\n      <SIF_Object ObjectName=\"SectionInfo\"/>\n      <SIF_Object ObjectName=\"StudentPersonal\"/>\n      <SIF_Object ObjectName=\"StaffPersonal\"/>\n      <SIF_Object ObjectName=\"StudentSectionInfo\"/>\n    </SIF_SubscribeObjects>\n    <SIF_PublishAddObjects/>\n    <SIF_PublishChangeObjects/>\n    <SIF_PublishDeleteObjects/>\n    <SIF_RequestObjects>\n      <SIF_Object ObjectName=\"LEAInfo\"/>\n      <SIF_Object ObjectName=\"SchoolInfo\"/>\n      <SIF_Object ObjectName=\"TermInfo\"/>\n      <SIF_Object ObjectName=\"SchoolCourseInfo\"/>\n      <SIF_Object ObjectName=\"SectionInfo\"/>\n      <SIF_Object ObjectName=\"StudentPersonal\"/>\n      <SIF_Object ObjectName=\"StaffPersonal\"/>\n      <SIF_Object ObjectName=\"StudentSectionInfo\"/>\n    </SIF_RequestObjects>\n    <SIF_RespondObjects/>\n  </SIF_Provision>\n</SIF_Message>"
         | 
| 75 83 | 
             
              end
         | 
| 76 | 
            -
             | 
| 77 | 
            -
              it "requests" do
         | 
| 78 | 
            -
                msg = header_checks_out{builder.request("StudentPersonal")}
         | 
| 79 | 
            -
                represent(msg).to_xml.should == "<SIF_Message xmlns=\"http://www.sifinfo.org/infrastructure/2.x\" Version=\"2.0r1\">\n  <SIF_Request>\n    <SIF_Header>\n      <SIF_MsgId>GUUID</SIF_MsgId>\n      <SIF_Timestamp>TIME</SIF_Timestamp>\n      <SIF_SourceId>canvas</SIF_SourceId>\n    </SIF_Header>\n    <SIF_Version>2.0r1</SIF_Version>\n    <SIF_MaxBufferSize>64000</SIF_MaxBufferSize>\n    <SIF_Query>\n      <SIF_QueryObject ObjectName=\"StudentPersonal\"/>\n    </SIF_Query>\n  </SIF_Request>\n</SIF_Message>"
         | 
| 80 | 
            -
              end
         | 
| 81 84 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: openagent
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.1
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2014- | 
| 14 | 
            +
            date: 2014-02-06 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: rake
         | 
| @@ -197,6 +197,7 @@ files: | |
| 197 197 | 
             
            - lib/sif/infra/common/application.rb
         | 
| 198 198 | 
             
            - lib/sif/infra/common/condition.rb
         | 
| 199 199 | 
             
            - lib/sif/infra/common/condition_group.rb
         | 
| 200 | 
            +
            - lib/sif/infra/common/conditions.rb
         | 
| 200 201 | 
             
            - lib/sif/infra/common/data.rb
         | 
| 201 202 | 
             
            - lib/sif/infra/common/error.rb
         | 
| 202 203 | 
             
            - lib/sif/infra/common/event.rb
         | 
| @@ -296,6 +297,7 @@ files: | |
| 296 297 | 
             
            - lib/sif/representations/infra/common/application.rb
         | 
| 297 298 | 
             
            - lib/sif/representations/infra/common/condition.rb
         | 
| 298 299 | 
             
            - lib/sif/representations/infra/common/condition_group.rb
         | 
| 300 | 
            +
            - lib/sif/representations/infra/common/conditions.rb
         | 
| 299 301 | 
             
            - lib/sif/representations/infra/common/data.rb
         | 
| 300 302 | 
             
            - lib/sif/representations/infra/common/error.rb
         | 
| 301 303 | 
             
            - lib/sif/representations/infra/common/event.rb
         |