osc_ruby 0.3.0 → 0.4.0
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 +4 -4
- data/.travis.yml +1 -0
- data/README.md +3 -1
- data/lib/ext/string.rb +14 -0
- data/lib/osc_ruby.rb +4 -1
- data/lib/osc_ruby/answer.rb +3 -60
- data/lib/osc_ruby/class_factory_module.rb +1 -1
- data/lib/osc_ruby/product_category_shared.rb +118 -0
- data/lib/osc_ruby/query_results.rb +35 -0
- data/lib/osc_ruby/service_category.rb +2 -210
- data/lib/osc_ruby/service_class.rb +66 -0
- data/lib/osc_ruby/service_product.rb +1 -209
- data/lib/osc_ruby/validations_module.rb +54 -2
- data/lib/osc_ruby/version.rb +1 -1
- data/spec/core/answer_spec.rb +20 -1
- data/spec/core/query_results_spec.rb +54 -0
- data/spec/core/service_category_spec.rb +4 -4
- data/spec/core/service_product_spec.rb +4 -4
- metadata +7 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f3699de5d5f0bfd43b0fa37ee16e2bbe47fed6ff
         | 
| 4 | 
            +
              data.tar.gz: 31b35ce287cc0d343afb32e399b052fa9becff64
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 3027967797e07efaecc469545382d6b521170d51ce5c5eb4bb43f1c8a046d0d3f42c32ee241b59485f36d53015eae58fa40ece9d62124d3d971c09b9416ea475
         | 
| 7 | 
            +
              data.tar.gz: 760a5ce18c2dc9bcebe61b5fa31b8d4145228704d1bab14628dcea3e0bfb7abd89d805ca2160a49fdc67c94d436506809323c347de556ed1d0104993d5f21bcb
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -12,7 +12,7 @@ This gem was tested against Oracle Service Cloud November 2016 using Ruby versio | |
| 12 12 |  | 
| 13 13 | 
             
            The create, update, and destroy methods should work on any version of Oracle Service Cloud since version May 2015; however, there maybe some issues with querying items on any version before November 2016. This is because I am using the ROQL queries to generate values for Common Objects
         | 
| 14 14 |  | 
| 15 | 
            -
            Currently supporting the following objects:
         | 
| 15 | 
            +
            Currently supporting the following objects from the REST API:
         | 
| 16 16 |  | 
| 17 17 | 
             
            	ServiceProduct
         | 
| 18 18 |  | 
| @@ -20,6 +20,8 @@ Currently supporting the following objects: | |
| 20 20 |  | 
| 21 21 | 
             
            	Answer
         | 
| 22 22 |  | 
| 23 | 
            +
            	QueryResults (does not support CRUD)
         | 
| 24 | 
            +
             | 
| 23 25 | 
             
            At this time, subclasses such as ServiceProduct.CategoryLinks are not currently supported. 
         | 
| 24 26 |  | 
| 25 27 | 
             
            I am trying to build a few more classes and have a pretty solid testing suite and codebase before implementing this functionality.
         | 
    
        data/lib/ext/string.rb
    CHANGED
    
    | @@ -2,4 +2,18 @@ class String | |
| 2 2 | 
             
                def is_i?
         | 
| 3 3 | 
             
                   /\A[-+]?\d+\z/ === self
         | 
| 4 4 | 
             
                end
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            	def camel_case_lower
         | 
| 7 | 
            +
            		@class_to_array = self.split('')
         | 
| 8 | 
            +
            		@class_name_length = @class_to_array.length - 1
         | 
| 9 | 
            +
            		@output = @class_to_array.each_with_index do |letter,i|
         | 
| 10 | 
            +
            			if i ==0
         | 
| 11 | 
            +
            				letter.downcase!
         | 
| 12 | 
            +
            			elsif i == @class_name_length
         | 
| 13 | 
            +
            				letter.gsub!(/y/,'ie')
         | 
| 14 | 
            +
            			end
         | 
| 15 | 
            +
            		end.join
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            		@output + 's'
         | 
| 18 | 
            +
            	end
         | 
| 5 19 | 
             
            end
         | 
    
        data/lib/osc_ruby.rb
    CHANGED
    
    | @@ -2,6 +2,9 @@ module OSCRuby; end | |
| 2 2 |  | 
| 3 3 | 
             
            require 'osc_ruby/client'
         | 
| 4 4 | 
             
            require 'osc_ruby/connect'
         | 
| 5 | 
            +
            require 'osc_ruby/service_class'
         | 
| 6 | 
            +
            require 'osc_ruby/product_category_shared'
         | 
| 5 7 | 
             
            require 'osc_ruby/service_product'
         | 
| 6 8 | 
             
            require 'osc_ruby/service_category'
         | 
| 7 | 
            -
            require 'osc_ruby/answer'
         | 
| 9 | 
            +
            require 'osc_ruby/answer'
         | 
| 10 | 
            +
            require 'osc_ruby/query_results'
         | 
    
        data/lib/osc_ruby/answer.rb
    CHANGED
    
    | @@ -1,20 +1,9 @@ | |
| 1 | 
            -
            require 'osc_ruby/client'
         | 
| 2 | 
            -
            require 'osc_ruby/query_module'
         | 
| 3 | 
            -
            require 'osc_ruby/validations_module'
         | 
| 4 | 
            -
            require 'osc_ruby/class_factory_module'
         | 
| 5 | 
            -
            require 'json'
         | 
| 6 | 
            -
            require 'uri'
         | 
| 7 | 
            -
             | 
| 8 1 | 
             
            module OSCRuby
         | 
| 9 2 |  | 
| 10 | 
            -
            	class Answer
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            		include QueryModule
         | 
| 13 | 
            -
            		include ValidationsModule
         | 
| 14 | 
            -
            		include ClassFactoryModule
         | 
| 3 | 
            +
            	class Answer < ServiceClass
         | 
| 15 4 |  | 
| 16 5 | 
             
            		attr_accessor :answerType, :language, :summary, :id, :lookupName, :createdTime, :updatedTime, :accessLevels, :name, :adminLastAccessTime, :expiresDate, :guidedAssistance, :keywords, :lastAccessTime, :lastNotificationTime, :nextNotificationTime, :originalReferenceNumber, :positionInList,
         | 
| 17 | 
            -
            			:publishOnDate, :question, :solution, :updatedByAccount, :uRL
         | 
| 6 | 
            +
            			:publishOnDate, :question, :solution, :updatedByAccount, :uRL, :categories
         | 
| 18 7 |  | 
| 19 8 | 
             
            	    def initialize(attributes = nil)
         | 
| 20 9 |  | 
| @@ -24,6 +13,7 @@ module OSCRuby | |
| 24 13 | 
             
               				@summary = "Answer summary text"
         | 
| 25 14 | 
             
               				@language = {}
         | 
| 26 15 | 
             
               				@question = nil
         | 
| 16 | 
            +
               				@categories = []
         | 
| 27 17 |  | 
| 28 18 | 
             
            			else
         | 
| 29 19 |  | 
| @@ -55,53 +45,6 @@ module OSCRuby | |
| 55 45 |  | 
| 56 46 | 
             
            	    end
         | 
| 57 47 |  | 
| 58 | 
            -
            	    def create(client,return_json = false)
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            			ClassFactoryModule.create(client,self,"/answers",return_json)
         | 
| 61 | 
            -
             | 
| 62 | 
            -
            	    end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
            	    def self.find(client,id = nil,return_json = false)
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            	    	ClassFactoryModule.find(client,id,'answers',return_json,OSCRuby::Answer)
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            	    end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
            	    def self.all(client, return_json = false)
         | 
| 73 | 
            -
             | 
| 74 | 
            -
            	    	ClassFactoryModule.all(client,'answers',return_json,OSCRuby::Answer)
         | 
| 75 | 
            -
             | 
| 76 | 
            -
            	    end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
            	    def self.where(client, query = '', return_json = false)
         | 
| 79 | 
            -
             | 
| 80 | 
            -
            	    	ClassFactoryModule.where(client,query,'answers',return_json,OSCRuby::Answer)
         | 
| 81 | 
            -
             | 
| 82 | 
            -
            	    end
         | 
| 83 | 
            -
             | 
| 84 | 
            -
            	    def update(client, return_json = false)
         | 
| 85 | 
            -
             | 
| 86 | 
            -
            	    	ClassFactoryModule::update(client,self,"answers",return_json)
         | 
| 87 | 
            -
             | 
| 88 | 
            -
            	    end
         | 
| 89 | 
            -
             | 
| 90 | 
            -
            	    def destroy(client, return_json = false)
         | 
| 91 | 
            -
             | 
| 92 | 
            -
            	    	ClassFactoryModule.destroy(client,self,'answers',return_json)
         | 
| 93 | 
            -
             | 
| 94 | 
            -
            	    end
         | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
             | 
| 100 | 
            -
             | 
| 101 | 
            -
             | 
| 102 | 
            -
             | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 48 |  | 
| 106 49 | 
             
            	    # Convenience Methods for making the CRUD operations nicer to use
         | 
| 107 50 |  | 
| @@ -0,0 +1,118 @@ | |
| 1 | 
            +
            module OSCRuby
         | 
| 2 | 
            +
            	
         | 
| 3 | 
            +
            	class ProductCategoryShared < ServiceClass
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            		attr_accessor :names,:parent,:displayOrder,:adminVisibleInterfaces,:endUserVisibleInterfaces,:id,:lookupName,:createdTime,:updatedTime,:name
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	    def initialize(attributes = nil)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                		@names = []
         | 
| 10 | 
            +
            			@adminVisibleInterfaces = []
         | 
| 11 | 
            +
            			@endUserVisibleInterfaces = []
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            			if attributes.nil?
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            				@parent = {}
         | 
| 16 | 
            +
            				@displayOrder = 1
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            			else
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            				@id = attributes["id"]
         | 
| 21 | 
            +
            				@lookupName = attributes["lookupName"]
         | 
| 22 | 
            +
            				@createdTime = attributes["createdTime"]
         | 
| 23 | 
            +
            				@updatedTime = attributes["updatedTime"]
         | 
| 24 | 
            +
            				@displayOrder = attributes["displayOrder"]
         | 
| 25 | 
            +
            				@name = attributes["name"]
         | 
| 26 | 
            +
            				@parent = attributes["parent"]
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            			end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            	    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            	    # Convenience Methods for making the CRUD operations nicer to use
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            		def set_attributes(response_body)
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            			self.id = response_body["id"]
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                		self.name = response_body["lookupName"]
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                		self.lookupName = response_body["lookupName"]
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            			self.displayOrder = response_body["displayOrder"]
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            			if !response_body["parent"].nil?
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            				self.parent = response_body["parent"]["links"][0]["href"].split('/').pop.to_i
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            			else
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            				self.parent = nil
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            			end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            		end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
            		def update_attributes(updated_product)
         | 
| 57 | 
            +
             | 
| 58 | 
            +
            			self.lookupName = updated_product.lookupName
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            			self.createdTime = updated_product.createdTime
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            			self.updatedTime = updated_product.updatedTime
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            			self.name = updated_product.name
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            			self.parent = updated_product.parent
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            		end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            		def self.check_self(obj,is_update = false)
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            			class_name = self.to_s.split('::')[1]
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            			obj_attrs = ValidationsModule::extract_attributes(obj)
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            			obj_attrs = ValidationsModule::check_interfaces(obj_attrs)
         | 
| 77 | 
            +
             | 
| 78 | 
            +
            			if is_update == true
         | 
| 79 | 
            +
            			
         | 
| 80 | 
            +
            				obj_attrs = remove_unused_new_attrs(obj_attrs)
         | 
| 81 | 
            +
            			
         | 
| 82 | 
            +
            			else
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            				obj_attrs = ValidationsModule::check_for_names(obj_attrs,class_name)
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            				obj_attrs = ValidationsModule::check_for_parents(obj_attrs)
         | 
| 87 | 
            +
            				
         | 
| 88 | 
            +
            			end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            			obj_attrs
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            		end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
            		def self.remove_unused_new_attrs(obj_attrs)
         | 
| 95 | 
            +
             | 
| 96 | 
            +
            			obj_attrs[0].delete('id')
         | 
| 97 | 
            +
            			
         | 
| 98 | 
            +
            			obj_attrs[0].delete('lookupName')
         | 
| 99 | 
            +
            			
         | 
| 100 | 
            +
            			obj_attrs[0].delete('createdTime')
         | 
| 101 | 
            +
            			
         | 
| 102 | 
            +
            			obj_attrs[0].delete('updatedTime')
         | 
| 103 | 
            +
            			
         | 
| 104 | 
            +
            			obj_attrs[0].delete('name')
         | 
| 105 | 
            +
            			
         | 
| 106 | 
            +
            			if !obj_attrs[0]['parent'].nil?
         | 
| 107 | 
            +
            			
         | 
| 108 | 
            +
            				obj_attrs[0].delete('parent')
         | 
| 109 | 
            +
            			
         | 
| 110 | 
            +
            			end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            			obj_attrs
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            		end
         | 
| 115 | 
            +
             | 
| 116 | 
            +
            	end
         | 
| 117 | 
            +
             | 
| 118 | 
            +
            end
         | 
| @@ -0,0 +1,35 @@ | |
| 1 | 
            +
            require 'osc_ruby/connect'
         | 
| 2 | 
            +
            require 'osc_ruby/validations_module'
         | 
| 3 | 
            +
            require 'json'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module OSCRuby
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	class QueryResults
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            		include QueryModule
         | 
| 10 | 
            +
            		include ValidationsModule
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            		def initialize; end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            		def select(client,query)
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            			ValidationsModule::check_client(client)
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            			ValidationsModule::check_query(query,"select")
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            			@query = URI.escape("queryResults/?query=#{query}")
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            	    	response = QueryModule::find(client,@query)
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            	    	json_response = JSON.parse(response) 
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            	    	puts "Results for '#{query}'"
         | 
| 27 | 
            +
            	    	puts
         | 
| 28 | 
            +
            	    	puts json_response
         | 
| 29 | 
            +
            	    	puts
         | 
| 30 | 
            +
            	 
         | 
| 31 | 
            +
            		end
         | 
| 32 | 
            +
            	
         | 
| 33 | 
            +
            	end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            end
         | 
| @@ -1,214 +1,6 @@ | |
| 1 | 
            -
            require 'osc_ruby/client'
         | 
| 2 | 
            -
            require 'osc_ruby/query_module'
         | 
| 3 | 
            -
            require 'osc_ruby/validations_module'
         | 
| 4 | 
            -
            require 'osc_ruby/class_factory_module'
         | 
| 5 | 
            -
            require 'json'
         | 
| 6 | 
            -
            require 'uri'
         | 
| 7 | 
            -
             | 
| 8 1 | 
             
            module OSCRuby
         | 
| 9 | 
            -
            	
         | 
| 10 | 
            -
            	class ServiceCategory
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            		include QueryModule
         | 
| 13 | 
            -
            		include ValidationsModule
         | 
| 14 | 
            -
            		include ClassFactoryModule
         | 
| 15 | 
            -
            		
         | 
| 16 | 
            -
            		attr_accessor :names,:parent,:displayOrder,:adminVisibleInterfaces,:endUserVisibleInterfaces,:id,:lookupName,:createdTime,:updatedTime,:name
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            	    def initialize(attributes = nil)
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                		@names = []
         | 
| 21 | 
            -
            			@adminVisibleInterfaces = []
         | 
| 22 | 
            -
            			@endUserVisibleInterfaces = []
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            			if attributes.nil?
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            				@parent = {}
         | 
| 27 | 
            -
            				@displayOrder = 1
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            			else
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            				@id = attributes["id"]
         | 
| 32 | 
            -
            				@lookupName = attributes["lookupName"]
         | 
| 33 | 
            -
            				@createdTime = attributes["createdTime"]
         | 
| 34 | 
            -
            				@updatedTime = attributes["updatedTime"]
         | 
| 35 | 
            -
            				@displayOrder = attributes["displayOrder"]
         | 
| 36 | 
            -
            				@name = attributes["name"]
         | 
| 37 | 
            -
            				@parent = attributes["parent"]
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            			end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
            	    end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            	    
         | 
| 44 | 
            -
            	    def create(client,return_json = false)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            	    	ClassFactoryModule.create(client,self,"/serviceCategories",return_json)
         | 
| 47 | 
            -
             | 
| 48 | 
            -
            	    end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            	    
         | 
| 51 | 
            -
            	    def self.find(client,id = nil,return_json = false)
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            	    	ClassFactoryModule.find(client,id,'serviceCategories',return_json,OSCRuby::ServiceCategory)
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            	    end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
            	    
         | 
| 58 | 
            -
            	    def self.all(client, return_json = false)
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            	    	ClassFactoryModule.all(client,'serviceCategories',return_json,OSCRuby::ServiceCategory)
         | 
| 61 | 
            -
             | 
| 62 | 
            -
            	    end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
            	    
         | 
| 65 | 
            -
            	    def self.where(client, query = '', return_json = false)
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            			ClassFactoryModule.where(client,query,'serviceCategories',return_json,OSCRuby::ServiceCategory)
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            	    end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
            	    
         | 
| 72 | 
            -
            	    def update(client, return_json = false)
         | 
| 73 | 
            -
             | 
| 74 | 
            -
            	    	ClassFactoryModule::update(client,self,"serviceCategories",return_json)
         | 
| 75 | 
            -
             | 
| 76 | 
            -
            	    end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
            	    def destroy(client, return_json = false)
         | 
| 80 | 
            -
             | 
| 81 | 
            -
            	    	ClassFactoryModule.destroy(client,self,'serviceCategories',return_json)
         | 
| 82 | 
            -
             | 
| 83 | 
            -
            	    end
         | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
            	    
         | 
| 87 | 
            -
             | 
| 88 | 
            -
            	    # Convenience Methods for making the CRUD operations nicer to use
         | 
| 89 | 
            -
             | 
| 90 | 
            -
            		def set_attributes(response_body)
         | 
| 91 | 
            -
             | 
| 92 | 
            -
            			self.id = response_body["id"]
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                		self.name = response_body["lookupName"]
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                		self.lookupName = response_body["lookupName"]
         | 
| 97 | 
            -
             | 
| 98 | 
            -
            			self.displayOrder = response_body["displayOrder"]
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            			if !response_body["parent"].nil?
         | 
| 101 | 
            -
             | 
| 102 | 
            -
            				self.parent = response_body["parent"]["links"][0]["href"].split('/').pop.to_i
         | 
| 103 | 
            -
             | 
| 104 | 
            -
            			else
         | 
| 105 | 
            -
             | 
| 106 | 
            -
            				self.parent = nil
         | 
| 107 | 
            -
             | 
| 108 | 
            -
            			end
         | 
| 109 | 
            -
             | 
| 110 | 
            -
            		end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
            		def update_attributes(updated_category)
         | 
| 113 | 
            -
             | 
| 114 | 
            -
            			self.lookupName = updated_category.lookupName
         | 
| 115 | 
            -
             | 
| 116 | 
            -
            			self.createdTime = updated_category.createdTime
         | 
| 117 | 
            -
             | 
| 118 | 
            -
            			self.updatedTime = updated_category.updatedTime
         | 
| 119 | 
            -
             | 
| 120 | 
            -
            			self.name = updated_category.name
         | 
| 121 | 
            -
             | 
| 122 | 
            -
            			self.parent = updated_category.parent
         | 
| 123 | 
            -
             | 
| 124 | 
            -
            		end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
            		def self.check_self(obj,is_update = false)
         | 
| 127 | 
            -
             | 
| 128 | 
            -
            			obj_attrs = ValidationsModule::extract_attributes(obj)
         | 
| 129 | 
            -
             | 
| 130 | 
            -
            			obj_attrs = check_interfaces(obj_attrs)
         | 
| 131 | 
            -
             | 
| 132 | 
            -
            			if is_update == true
         | 
| 133 | 
            -
            			
         | 
| 134 | 
            -
            				obj_attrs = remove_unused_new_attrs(obj_attrs)
         | 
| 135 | 
            -
            			
         | 
| 136 | 
            -
            			else
         | 
| 137 | 
            -
             | 
| 138 | 
            -
            				obj_attrs = check_for_names(obj_attrs)
         | 
| 139 | 
            -
             | 
| 140 | 
            -
            				obj_attrs = check_for_parents(obj_attrs)
         | 
| 141 | 
            -
            				
         | 
| 142 | 
            -
            			end
         | 
| 143 | 
            -
             | 
| 144 | 
            -
            			obj_attrs
         | 
| 145 | 
            -
             | 
| 146 | 
            -
            		end
         | 
| 147 | 
            -
             | 
| 148 | 
            -
            		def self.check_for_names(obj_attrs)
         | 
| 149 | 
            -
             | 
| 150 | 
            -
            			if obj_attrs[0]['names'].count == 0 || obj_attrs[0]['names'][0]['labelText'].nil? || obj_attrs[0]['names'][0]['language'].nil?
         | 
| 151 | 
            -
            				
         | 
| 152 | 
            -
            				raise ArgumentError, 'ServiceCategory should at least have one name set (new_service_category.names[0] = {"labelText" => "QTH45-test", "language" => {"id" => 1}} )'
         | 
| 153 | 
            -
            			
         | 
| 154 | 
            -
            			end
         | 
| 155 | 
            -
             | 
| 156 | 
            -
            			obj_attrs
         | 
| 157 | 
            -
             | 
| 158 | 
            -
            		end
         | 
| 159 | 
            -
             | 
| 160 | 
            -
            		def self.check_for_parents(obj_attrs)
         | 
| 161 | 
            -
             | 
| 162 | 
            -
            			if !obj_attrs[0]['parent'].nil? && obj_attrs[0]['parent'].is_a?(Hash) && !obj_attrs[0]['parent'].key?('id') && !obj_attrs[0]['parent'].key?('lookupName')
         | 
| 163 | 
            -
            			
         | 
| 164 | 
            -
            				obj_attrs[0].delete('parent')
         | 
| 165 | 
            -
            			
         | 
| 166 | 
            -
            			end
         | 
| 167 | 
            -
             | 
| 168 | 
            -
            			obj_attrs
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            		end
         | 
| 171 | 
            -
             | 
| 172 | 
            -
            		def self.remove_unused_new_attrs(obj_attrs)
         | 
| 173 | 
            -
             | 
| 174 | 
            -
            			obj_attrs[0].delete('id')
         | 
| 175 | 
            -
            			
         | 
| 176 | 
            -
            			obj_attrs[0].delete('lookupName')
         | 
| 177 | 
            -
            			
         | 
| 178 | 
            -
            			obj_attrs[0].delete('createdTime')
         | 
| 179 | 
            -
            			
         | 
| 180 | 
            -
            			obj_attrs[0].delete('updatedTime')
         | 
| 181 | 
            -
            			
         | 
| 182 | 
            -
            			obj_attrs[0].delete('name')
         | 
| 183 | 
            -
            			
         | 
| 184 | 
            -
            			if !obj_attrs[0]['parent'].nil?
         | 
| 185 | 
            -
            			
         | 
| 186 | 
            -
            				obj_attrs[0].delete('parent')
         | 
| 187 | 
            -
            			
         | 
| 188 | 
            -
            			end
         | 
| 189 | 
            -
             | 
| 190 | 
            -
            			obj_attrs
         | 
| 191 | 
            -
             | 
| 192 | 
            -
            		end
         | 
| 193 | 
            -
             | 
| 194 | 
            -
            		def self.check_interfaces(empty_arr)
         | 
| 195 | 
            -
             | 
| 196 | 
            -
            			if empty_arr[0]['adminVisibleInterfaces'].empty?
         | 
| 197 | 
            -
            				
         | 
| 198 | 
            -
            				empty_arr[0].delete('adminVisibleInterfaces')
         | 
| 199 | 
            -
            			
         | 
| 200 | 
            -
            			end
         | 
| 201 | 
            -
             | 
| 202 | 
            -
            			if empty_arr[0]['endUserVisibleInterfaces'].empty?
         | 
| 203 | 
            -
            				
         | 
| 204 | 
            -
            				empty_arr[0].delete('endUserVisibleInterfaces')
         | 
| 205 | 
            -
            			
         | 
| 206 | 
            -
            			end
         | 
| 207 | 
            -
             | 
| 208 | 
            -
            			empty_arr
         | 
| 209 | 
            -
             | 
| 210 | 
            -
            		end
         | 
| 211 2 |  | 
| 3 | 
            +
            	class ServiceCategory < ProductCategoryShared
         | 
| 212 4 | 
             
            	end
         | 
| 213 | 
            -
             | 
| 5 | 
            +
            	
         | 
| 214 6 | 
             
            end
         | 
| @@ -0,0 +1,66 @@ | |
| 1 | 
            +
            require 'osc_ruby/client'
         | 
| 2 | 
            +
            require 'osc_ruby/query_module'
         | 
| 3 | 
            +
            require 'osc_ruby/validations_module'
         | 
| 4 | 
            +
            require 'osc_ruby/class_factory_module'
         | 
| 5 | 
            +
            require 'json'
         | 
| 6 | 
            +
            require 'uri'
         | 
| 7 | 
            +
            require_relative '../ext/string'
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            module OSCRuby
         | 
| 10 | 
            +
            	
         | 
| 11 | 
            +
            	class ServiceClass
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            		include QueryModule
         | 
| 14 | 
            +
            		include ValidationsModule
         | 
| 15 | 
            +
            		include ClassFactoryModule
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            	    def self.url
         | 
| 18 | 
            +
             | 
| 19 | 
            +
            	    	self.to_s.split('::')[1].camel_case_lower
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            	    end
         | 
| 22 | 
            +
            	    
         | 
| 23 | 
            +
            	    def create(client,return_json = false)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            	    	ClassFactoryModule.create(client,self,self.class.url,return_json)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            	    end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            	    
         | 
| 30 | 
            +
            	    def self.find(client,id = nil,return_json = false)
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            	    	ClassFactoryModule.find(client,id,url,return_json,self)
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            	    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            	    
         | 
| 37 | 
            +
            	    def self.all(client, return_json = false)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            	    	ClassFactoryModule.all(client,url,return_json,self)
         | 
| 40 | 
            +
             | 
| 41 | 
            +
            	    end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
            	    
         | 
| 44 | 
            +
            	    def self.where(client, query = '', return_json = false)
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            			ClassFactoryModule.where(client,query,url,return_json,self)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            	    end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                
         | 
| 51 | 
            +
            	    def update(client, return_json = false)
         | 
| 52 | 
            +
             | 
| 53 | 
            +
            	    	ClassFactoryModule::update(client,self,self.class.url,return_json)
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            	    end
         | 
| 56 | 
            +
             | 
| 57 | 
            +
             | 
| 58 | 
            +
            	    def destroy(client, return_json = false)
         | 
| 59 | 
            +
             | 
| 60 | 
            +
            	    	ClassFactoryModule.destroy(client,self,self.class.url,return_json)
         | 
| 61 | 
            +
             | 
| 62 | 
            +
            	    end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            	end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
            end
         | 
| @@ -1,214 +1,6 @@ | |
| 1 | 
            -
            require 'osc_ruby/client'
         | 
| 2 | 
            -
            require 'osc_ruby/query_module'
         | 
| 3 | 
            -
            require 'osc_ruby/validations_module'
         | 
| 4 | 
            -
            require 'osc_ruby/class_factory_module'
         | 
| 5 | 
            -
            require 'json'
         | 
| 6 | 
            -
            require 'uri'
         | 
| 7 | 
            -
             | 
| 8 1 | 
             
            module OSCRuby
         | 
| 9 | 
            -
            	
         | 
| 10 | 
            -
            	class ServiceProduct
         | 
| 11 | 
            -
             | 
| 12 | 
            -
            		include QueryModule
         | 
| 13 | 
            -
            		include ValidationsModule
         | 
| 14 | 
            -
            		include ClassFactoryModule
         | 
| 15 | 
            -
            		
         | 
| 16 | 
            -
            		attr_accessor :names,:parent,:displayOrder,:adminVisibleInterfaces,:endUserVisibleInterfaces,:id,:lookupName,:createdTime,:updatedTime,:name
         | 
| 17 | 
            -
             | 
| 18 | 
            -
            	    def initialize(attributes = nil)
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                		@names = []
         | 
| 21 | 
            -
            			@adminVisibleInterfaces = []
         | 
| 22 | 
            -
            			@endUserVisibleInterfaces = []
         | 
| 23 | 
            -
             | 
| 24 | 
            -
            			if attributes.nil?
         | 
| 25 | 
            -
             | 
| 26 | 
            -
            				@parent = {}
         | 
| 27 | 
            -
            				@displayOrder = 1
         | 
| 28 | 
            -
             | 
| 29 | 
            -
            			else
         | 
| 30 | 
            -
             | 
| 31 | 
            -
            				@id = attributes["id"]
         | 
| 32 | 
            -
            				@lookupName = attributes["lookupName"]
         | 
| 33 | 
            -
            				@createdTime = attributes["createdTime"]
         | 
| 34 | 
            -
            				@updatedTime = attributes["updatedTime"]
         | 
| 35 | 
            -
            				@displayOrder = attributes["displayOrder"]
         | 
| 36 | 
            -
            				@name = attributes["name"]
         | 
| 37 | 
            -
            				@parent = attributes["parent"]
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            			end
         | 
| 40 | 
            -
             | 
| 41 | 
            -
            	    end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
            	    
         | 
| 44 | 
            -
            	    def create(client,return_json = false)
         | 
| 45 | 
            -
             | 
| 46 | 
            -
            	    	ClassFactoryModule.create(client,self,"/serviceProducts",return_json)
         | 
| 47 | 
            -
             | 
| 48 | 
            -
            	    end
         | 
| 49 | 
            -
             | 
| 50 | 
            -
            	    
         | 
| 51 | 
            -
            	    def self.find(client,id = nil,return_json = false)
         | 
| 52 | 
            -
             | 
| 53 | 
            -
            	    	ClassFactoryModule.find(client,id,'serviceproducts',return_json,OSCRuby::ServiceProduct)
         | 
| 54 | 
            -
             | 
| 55 | 
            -
            	    end
         | 
| 56 | 
            -
             | 
| 57 | 
            -
            	    
         | 
| 58 | 
            -
            	    def self.all(client, return_json = false)
         | 
| 59 | 
            -
             | 
| 60 | 
            -
            	    	ClassFactoryModule.all(client,'serviceproducts',return_json,OSCRuby::ServiceProduct)
         | 
| 61 | 
            -
             | 
| 62 | 
            -
            	    end
         | 
| 63 | 
            -
             | 
| 64 | 
            -
            	    
         | 
| 65 | 
            -
            	    def self.where(client, query = '', return_json = false)
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            			ClassFactoryModule.where(client,query,'serviceproducts',return_json,OSCRuby::ServiceProduct)
         | 
| 68 | 
            -
             | 
| 69 | 
            -
            	    end
         | 
| 70 | 
            -
             | 
| 71 | 
            -
            	    
         | 
| 72 | 
            -
            	    def update(client, return_json = false)
         | 
| 73 | 
            -
             | 
| 74 | 
            -
            	    	ClassFactoryModule::update(client,self,"serviceProducts",return_json)
         | 
| 75 | 
            -
             | 
| 76 | 
            -
            	    end
         | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
            	    def destroy(client, return_json = false)
         | 
| 80 | 
            -
             | 
| 81 | 
            -
            	    	ClassFactoryModule.destroy(client,self,'serviceProducts',return_json)
         | 
| 82 | 
            -
             | 
| 83 | 
            -
            	    end
         | 
| 84 | 
            -
             | 
| 85 | 
            -
             | 
| 86 | 
            -
            	    
         | 
| 87 | 
            -
             | 
| 88 | 
            -
            	    # Convenience Methods for making the CRUD operations nicer to use
         | 
| 89 | 
            -
             | 
| 90 | 
            -
            		def set_attributes(response_body)
         | 
| 91 | 
            -
             | 
| 92 | 
            -
            			self.id = response_body["id"]
         | 
| 93 | 
            -
             | 
| 94 | 
            -
                		self.name = response_body["lookupName"]
         | 
| 95 | 
            -
             | 
| 96 | 
            -
                		self.lookupName = response_body["lookupName"]
         | 
| 97 | 
            -
             | 
| 98 | 
            -
            			self.displayOrder = response_body["displayOrder"]
         | 
| 99 | 
            -
             | 
| 100 | 
            -
            			if !response_body["parent"].nil?
         | 
| 101 | 
            -
             | 
| 102 | 
            -
            				self.parent = response_body["parent"]["links"][0]["href"].split('/').pop.to_i
         | 
| 103 | 
            -
             | 
| 104 | 
            -
            			else
         | 
| 105 | 
            -
             | 
| 106 | 
            -
            				self.parent = nil
         | 
| 107 | 
            -
             | 
| 108 | 
            -
            			end
         | 
| 109 | 
            -
             | 
| 110 | 
            -
            		end
         | 
| 111 | 
            -
             | 
| 112 | 
            -
            		def update_attributes(updated_product)
         | 
| 113 | 
            -
             | 
| 114 | 
            -
            			self.lookupName = updated_product.lookupName
         | 
| 115 | 
            -
             | 
| 116 | 
            -
            			self.createdTime = updated_product.createdTime
         | 
| 117 | 
            -
             | 
| 118 | 
            -
            			self.updatedTime = updated_product.updatedTime
         | 
| 119 | 
            -
             | 
| 120 | 
            -
            			self.name = updated_product.name
         | 
| 121 | 
            -
             | 
| 122 | 
            -
            			self.parent = updated_product.parent
         | 
| 123 | 
            -
             | 
| 124 | 
            -
            		end
         | 
| 125 | 
            -
             | 
| 126 | 
            -
            		def self.check_self(obj,is_update = false)
         | 
| 127 | 
            -
             | 
| 128 | 
            -
            			obj_attrs = ValidationsModule::extract_attributes(obj)
         | 
| 129 | 
            -
             | 
| 130 | 
            -
            			obj_attrs = check_interfaces(obj_attrs)
         | 
| 131 | 
            -
             | 
| 132 | 
            -
            			if is_update == true
         | 
| 133 | 
            -
            			
         | 
| 134 | 
            -
            				obj_attrs = remove_unused_new_attrs(obj_attrs)
         | 
| 135 | 
            -
            			
         | 
| 136 | 
            -
            			else
         | 
| 137 | 
            -
             | 
| 138 | 
            -
            				obj_attrs = check_for_names(obj_attrs)
         | 
| 139 | 
            -
             | 
| 140 | 
            -
            				obj_attrs = check_for_parents(obj_attrs)
         | 
| 141 | 
            -
            				
         | 
| 142 | 
            -
            			end
         | 
| 143 | 
            -
             | 
| 144 | 
            -
            			obj_attrs
         | 
| 145 | 
            -
             | 
| 146 | 
            -
            		end
         | 
| 147 | 
            -
             | 
| 148 | 
            -
            		def self.check_for_names(obj_attrs)
         | 
| 149 | 
            -
             | 
| 150 | 
            -
            			if obj_attrs[0]['names'].count == 0 || obj_attrs[0]['names'][0]['labelText'].nil? || obj_attrs[0]['names'][0]['language'].nil?
         | 
| 151 | 
            -
            				
         | 
| 152 | 
            -
            				raise ArgumentError, 'ServiceProduct should at least have one name set (new_service_product.names[0] = {"labelText" => "QTH45-test", "language" => {"id" => 1}} )'
         | 
| 153 | 
            -
            			
         | 
| 154 | 
            -
            			end
         | 
| 155 | 
            -
             | 
| 156 | 
            -
            			obj_attrs
         | 
| 157 | 
            -
             | 
| 158 | 
            -
            		end
         | 
| 159 | 
            -
             | 
| 160 | 
            -
            		def self.check_for_parents(obj_attrs)
         | 
| 161 | 
            -
             | 
| 162 | 
            -
            			if !obj_attrs[0]['parent'].nil? && obj_attrs[0]['parent'].is_a?(Hash) && !obj_attrs[0]['parent'].key?('id') && !obj_attrs[0]['parent'].key?('lookupName')
         | 
| 163 | 
            -
            			
         | 
| 164 | 
            -
            				obj_attrs[0].delete('parent')
         | 
| 165 | 
            -
            			
         | 
| 166 | 
            -
            			end
         | 
| 167 | 
            -
             | 
| 168 | 
            -
            			obj_attrs
         | 
| 169 | 
            -
             | 
| 170 | 
            -
            		end
         | 
| 171 | 
            -
             | 
| 172 | 
            -
            		def self.remove_unused_new_attrs(obj_attrs)
         | 
| 173 | 
            -
             | 
| 174 | 
            -
            			obj_attrs[0].delete('id')
         | 
| 175 | 
            -
            			
         | 
| 176 | 
            -
            			obj_attrs[0].delete('lookupName')
         | 
| 177 | 
            -
            			
         | 
| 178 | 
            -
            			obj_attrs[0].delete('createdTime')
         | 
| 179 | 
            -
            			
         | 
| 180 | 
            -
            			obj_attrs[0].delete('updatedTime')
         | 
| 181 | 
            -
            			
         | 
| 182 | 
            -
            			obj_attrs[0].delete('name')
         | 
| 183 | 
            -
            			
         | 
| 184 | 
            -
            			if !obj_attrs[0]['parent'].nil?
         | 
| 185 | 
            -
            			
         | 
| 186 | 
            -
            				obj_attrs[0].delete('parent')
         | 
| 187 | 
            -
            			
         | 
| 188 | 
            -
            			end
         | 
| 189 | 
            -
             | 
| 190 | 
            -
            			obj_attrs
         | 
| 191 | 
            -
             | 
| 192 | 
            -
            		end
         | 
| 193 | 
            -
             | 
| 194 | 
            -
            		def self.check_interfaces(empty_arr)
         | 
| 195 | 
            -
             | 
| 196 | 
            -
            			if empty_arr[0]['adminVisibleInterfaces'].empty?
         | 
| 197 | 
            -
            				
         | 
| 198 | 
            -
            				empty_arr[0].delete('adminVisibleInterfaces')
         | 
| 199 | 
            -
            			
         | 
| 200 | 
            -
            			end
         | 
| 201 | 
            -
             | 
| 202 | 
            -
            			if empty_arr[0]['endUserVisibleInterfaces'].empty?
         | 
| 203 | 
            -
            				
         | 
| 204 | 
            -
            				empty_arr[0].delete('endUserVisibleInterfaces')
         | 
| 205 | 
            -
            			
         | 
| 206 | 
            -
            			end
         | 
| 207 | 
            -
             | 
| 208 | 
            -
            			empty_arr
         | 
| 209 | 
            -
             | 
| 210 | 
            -
            		end
         | 
| 211 2 |  | 
| 3 | 
            +
            	class ServiceProduct < ProductCategoryShared	
         | 
| 212 4 | 
             
            	end
         | 
| 213 5 |  | 
| 214 6 | 
             
            end
         | 
| @@ -61,11 +61,21 @@ module OSCRuby | |
| 61 61 |  | 
| 62 62 | 
             
            			end
         | 
| 63 63 |  | 
| 64 | 
            -
            		    def check_query(query)
         | 
| 64 | 
            +
            		    def check_query(query,method_name = "where")
         | 
| 65 65 |  | 
| 66 66 | 
             
            				if query.empty?
         | 
| 67 67 |  | 
| 68 | 
            -
            					raise ArgumentError,  | 
| 68 | 
            +
            					raise ArgumentError, "A query must be specified when using the '#{method_name}' method"
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            				end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            		    end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
            		    def check_attributes_request(attributes_request,class_name)
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            				if attributes_request.empty?
         | 
| 77 | 
            +
            					
         | 
| 78 | 
            +
            					raise ArgumentError, "The attributes you are requesting for the #{class_name} object must be specified when using the 'select' method"
         | 
| 69 79 |  | 
| 70 80 | 
             
            				end
         | 
| 71 81 |  | 
| @@ -87,6 +97,48 @@ module OSCRuby | |
| 87 97 |  | 
| 88 98 | 
             
            			end
         | 
| 89 99 |  | 
| 100 | 
            +
            			def check_for_names(obj_attrs,class_name)
         | 
| 101 | 
            +
             | 
| 102 | 
            +
            				if obj_attrs[0]['names'].count == 0 || obj_attrs[0]['names'][0]['labelText'].nil? || obj_attrs[0]['names'][0]['language'].nil?
         | 
| 103 | 
            +
            					
         | 
| 104 | 
            +
            					raise ArgumentError, "#{class_name} should at least have one name set"
         | 
| 105 | 
            +
            				
         | 
| 106 | 
            +
            				end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
            				obj_attrs
         | 
| 109 | 
            +
             | 
| 110 | 
            +
            			end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            			def check_for_parents(obj_attrs)
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            				if !obj_attrs[0]['parent'].nil? && obj_attrs[0]['parent'].is_a?(Hash) && !obj_attrs[0]['parent'].key?('id') && !obj_attrs[0]['parent'].key?('lookupName')
         | 
| 115 | 
            +
            				
         | 
| 116 | 
            +
            					obj_attrs[0].delete('parent')
         | 
| 117 | 
            +
            				
         | 
| 118 | 
            +
            				end
         | 
| 119 | 
            +
             | 
| 120 | 
            +
            				obj_attrs
         | 
| 121 | 
            +
             | 
| 122 | 
            +
            			end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
            			def check_interfaces(empty_arr)
         | 
| 125 | 
            +
             | 
| 126 | 
            +
            				if empty_arr[0]['adminVisibleInterfaces'].empty?
         | 
| 127 | 
            +
            					
         | 
| 128 | 
            +
            					empty_arr[0].delete('adminVisibleInterfaces')
         | 
| 129 | 
            +
            				
         | 
| 130 | 
            +
            				end
         | 
| 131 | 
            +
             | 
| 132 | 
            +
            				if empty_arr[0]['endUserVisibleInterfaces'].empty?
         | 
| 133 | 
            +
            					
         | 
| 134 | 
            +
            					empty_arr[0].delete('endUserVisibleInterfaces')
         | 
| 135 | 
            +
            				
         | 
| 136 | 
            +
            				end
         | 
| 137 | 
            +
             | 
| 138 | 
            +
            				empty_arr
         | 
| 139 | 
            +
             | 
| 140 | 
            +
            			end
         | 
| 141 | 
            +
             | 
| 90 142 | 
             
            		end
         | 
| 91 143 |  | 
| 92 144 | 
             
            	end
         | 
    
        data/lib/osc_ruby/version.rb
    CHANGED
    
    
    
        data/spec/core/answer_spec.rb
    CHANGED
    
    | @@ -182,6 +182,25 @@ describe OSCRuby::Answer do | |
| 182 182 |  | 
| 183 183 | 
             
            		end
         | 
| 184 184 |  | 
| 185 | 
            +
            		it 'should expect the categories to be an array' do
         | 
| 186 | 
            +
             | 
| 187 | 
            +
            			expect(new_answer.categories).to be_an(Array)
         | 
| 188 | 
            +
             | 
| 189 | 
            +
            		end
         | 
| 190 | 
            +
             | 
| 191 | 
            +
            		it 'should expect that a hash with an id key for categories should create an answer without issue', :vcr do
         | 
| 192 | 
            +
             | 
| 193 | 
            +
            			new_answer.language['id'] = 1
         | 
| 194 | 
            +
            			new_answer.answerType['lookupName'] = "HTML"
         | 
| 195 | 
            +
             | 
| 196 | 
            +
            			new_answer.categories[0] = {'id' => 6}
         | 
| 197 | 
            +
             | 
| 198 | 
            +
            			new_answer.create(client)
         | 
| 199 | 
            +
             | 
| 200 | 
            +
            			expect(new_answer).to be_a(OSCRuby::Answer)
         | 
| 201 | 
            +
             | 
| 202 | 
            +
            		end
         | 
| 203 | 
            +
             | 
| 185 204 | 
             
            		it 'should return an instance of an OSCRuby::Answer if the json_response param is set to false (which it is by default)', :vcr do
         | 
| 186 205 |  | 
| 187 206 | 
             
            			new_answer.language['id'] = 1
         | 
| @@ -337,7 +356,7 @@ describe OSCRuby::Answer do | |
| 337 356 |  | 
| 338 357 | 
             
            		it 'should raise an error if there is no query' do
         | 
| 339 358 |  | 
| 340 | 
            -
            			expect{OSCRuby::Answer.where(client)}.to raise_error( | 
| 359 | 
            +
            			expect{OSCRuby::Answer.where(client)}.to raise_error("A query must be specified when using the 'where' method")
         | 
| 341 360 |  | 
| 342 361 | 
             
            		end
         | 
| 343 362 |  | 
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            require 'core/spec_helper'
         | 
| 2 | 
            +
            require 'json'
         | 
| 3 | 
            +
            require 'uri'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe OSCRuby::QueryResults do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            	let(:client) { 
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            		OSCRuby::Client.new do |config|
         | 
| 10 | 
            +
            		
         | 
| 11 | 
            +
            			config.interface = ENV['OSC_TEST_SITE']
         | 
| 12 | 
            +
            		
         | 
| 13 | 
            +
            			config.username = ENV['OSC_ADMIN']
         | 
| 14 | 
            +
            		
         | 
| 15 | 
            +
            			config.password = ENV['OSC_PASSWORD']
         | 
| 16 | 
            +
            		
         | 
| 17 | 
            +
            		end
         | 
| 18 | 
            +
            	}
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            	let(:query_results){
         | 
| 21 | 
            +
            		OSCRuby::QueryResults.new
         | 
| 22 | 
            +
            	}
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            	context "#select" do
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            		it 'should expect client is an instance of OSCRuby::Client class and raise an error if does not' do
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            			expect(client).to be_an(OSCRuby::Client)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
            			client = nil
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            			expect{query_results.select(client,'describe')}.to raise_error('Client must have some configuration set; please create an instance of OSCRuby::Client with configuration settings')
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            		end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            		it 'should expect a query' do
         | 
| 37 | 
            +
             | 
| 38 | 
            +
            			expect(client).to be_an(OSCRuby::Client)
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            			expect{query_results.select(client,"")}.to raise_error("A query must be specified when using the 'select' method")
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            		end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            		it 'should put results in array of hashes',:vcr do 
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            			expect(query_results.select(client,"describe")).to eq(nil)
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            			expect(query_results.select(client,"describe answers")).to eq(nil)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
            		end
         | 
| 51 | 
            +
            		
         | 
| 52 | 
            +
            	end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            end	
         | 
| @@ -121,7 +121,7 @@ describe OSCRuby::ServiceCategory do | |
| 121 121 |  | 
| 122 122 | 
             
            		it 'should check the object and make sure that it at least has a name set' do
         | 
| 123 123 |  | 
| 124 | 
            -
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set | 
| 124 | 
            +
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set')
         | 
| 125 125 |  | 
| 126 126 | 
             
            		end
         | 
| 127 127 |  | 
| @@ -129,7 +129,7 @@ describe OSCRuby::ServiceCategory do | |
| 129 129 |  | 
| 130 130 | 
             
            			new_service_category.names[0] = "new category name"
         | 
| 131 131 |  | 
| 132 | 
            -
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set | 
| 132 | 
            +
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set')
         | 
| 133 133 |  | 
| 134 134 | 
             
            		end
         | 
| 135 135 |  | 
| @@ -137,7 +137,7 @@ describe OSCRuby::ServiceCategory do | |
| 137 137 |  | 
| 138 138 | 
             
            			new_service_category.names[0] = {"labelText" => "New Category"}
         | 
| 139 139 |  | 
| 140 | 
            -
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set | 
| 140 | 
            +
            			expect{new_service_category.create(client)}.to raise_error('ServiceCategory should at least have one name set')
         | 
| 141 141 |  | 
| 142 142 | 
             
            		end
         | 
| 143 143 |  | 
| @@ -287,7 +287,7 @@ describe OSCRuby::ServiceCategory do | |
| 287 287 |  | 
| 288 288 | 
             
            		it 'should raise an error if there is no query' do
         | 
| 289 289 |  | 
| 290 | 
            -
            			expect{OSCRuby::ServiceCategory.where(client)}.to raise_error( | 
| 290 | 
            +
            			expect{OSCRuby::ServiceCategory.where(client)}.to raise_error("A query must be specified when using the 'where' method")
         | 
| 291 291 |  | 
| 292 292 | 
             
            		end
         | 
| 293 293 |  | 
| @@ -121,7 +121,7 @@ describe OSCRuby::ServiceProduct do | |
| 121 121 |  | 
| 122 122 | 
             
            		it 'should check the object and make sure that it at least has a name set' do
         | 
| 123 123 |  | 
| 124 | 
            -
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set | 
| 124 | 
            +
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set')
         | 
| 125 125 |  | 
| 126 126 | 
             
            		end
         | 
| 127 127 |  | 
| @@ -129,7 +129,7 @@ describe OSCRuby::ServiceProduct do | |
| 129 129 |  | 
| 130 130 | 
             
            			new_service_product.names[0] = "new product name"
         | 
| 131 131 |  | 
| 132 | 
            -
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set | 
| 132 | 
            +
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set')
         | 
| 133 133 |  | 
| 134 134 | 
             
            		end
         | 
| 135 135 |  | 
| @@ -137,7 +137,7 @@ describe OSCRuby::ServiceProduct do | |
| 137 137 |  | 
| 138 138 | 
             
            			new_service_product.names[0] = {"labelText" => "QTH45-test"}
         | 
| 139 139 |  | 
| 140 | 
            -
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set | 
| 140 | 
            +
            			expect{new_service_product.create(client)}.to raise_error('ServiceProduct should at least have one name set')
         | 
| 141 141 |  | 
| 142 142 | 
             
            		end
         | 
| 143 143 |  | 
| @@ -285,7 +285,7 @@ describe OSCRuby::ServiceProduct do | |
| 285 285 |  | 
| 286 286 | 
             
            		it 'should raise an error if there is no query' do
         | 
| 287 287 |  | 
| 288 | 
            -
            			expect{OSCRuby::ServiceProduct.where(client)}.to raise_error( | 
| 288 | 
            +
            			expect{OSCRuby::ServiceProduct.where(client)}.to raise_error("A query must be specified when using the 'where' method")
         | 
| 289 289 |  | 
| 290 290 | 
             
            		end
         | 
| 291 291 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: osc_ruby
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.4.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Rajan Davis
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017-01- | 
| 11 | 
            +
            date: 2017-01-20 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: simplecov
         | 
| @@ -147,8 +147,11 @@ files: | |
| 147 147 | 
             
            - lib/osc_ruby/configuration.rb
         | 
| 148 148 | 
             
            - lib/osc_ruby/connect.rb
         | 
| 149 149 | 
             
            - lib/osc_ruby/incident.rb
         | 
| 150 | 
            +
            - lib/osc_ruby/product_category_shared.rb
         | 
| 150 151 | 
             
            - lib/osc_ruby/query_module.rb
         | 
| 152 | 
            +
            - lib/osc_ruby/query_results.rb
         | 
| 151 153 | 
             
            - lib/osc_ruby/service_category.rb
         | 
| 154 | 
            +
            - lib/osc_ruby/service_class.rb
         | 
| 152 155 | 
             
            - lib/osc_ruby/service_product.rb
         | 
| 153 156 | 
             
            - lib/osc_ruby/validations_module.rb
         | 
| 154 157 | 
             
            - lib/osc_ruby/version.rb
         | 
| @@ -157,6 +160,7 @@ files: | |
| 157 160 | 
             
            - spec/core/client_spec.rb
         | 
| 158 161 | 
             
            - spec/core/configuration_spec.rb
         | 
| 159 162 | 
             
            - spec/core/connect_spec.rb
         | 
| 163 | 
            +
            - spec/core/query_results_spec.rb
         | 
| 160 164 | 
             
            - spec/core/service_category_spec.rb
         | 
| 161 165 | 
             
            - spec/core/service_product_spec.rb
         | 
| 162 166 | 
             
            - spec/core/spec_helper.rb
         | 
| @@ -190,7 +194,7 @@ test_files: | |
| 190 194 | 
             
            - spec/core/client_spec.rb
         | 
| 191 195 | 
             
            - spec/core/configuration_spec.rb
         | 
| 192 196 | 
             
            - spec/core/connect_spec.rb
         | 
| 197 | 
            +
            - spec/core/query_results_spec.rb
         | 
| 193 198 | 
             
            - spec/core/service_category_spec.rb
         | 
| 194 199 | 
             
            - spec/core/service_product_spec.rb
         | 
| 195 200 | 
             
            - spec/core/spec_helper.rb
         | 
| 196 | 
            -
            has_rdoc: 
         |