netsuite 0.2.2 → 0.2.3
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/lib/netsuite.rb +1 -0
- data/lib/netsuite/records/account.rb +2 -1
- data/lib/netsuite/records/contact.rb +1 -1
- data/lib/netsuite/records/customer_deposit.rb +1 -1
- data/lib/netsuite/records/matrix_option_list.rb +33 -4
- data/lib/netsuite/records/sales_order_item.rb +4 -2
- data/lib/netsuite/records/service_sale_item.rb +45 -0
- data/lib/netsuite/version.rb +1 -1
- data/netsuite.gemspec +2 -2
- data/spec/netsuite/records/matrix_option_list_spec.rb +25 -0
- data/spec/netsuite/records/sales_order_spec.rb +11 -0
- data/spec/netsuite/records/service_sale_item_spec.rb +134 -0
- metadata +9 -4
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: c137a01aff81975a25856d832bc61d90b37468c5
         | 
| 4 | 
            +
              data.tar.gz: afbbaf1726823511a72bef89702f09011c87ceb0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ec904bf4c128f98da10e50688e3b2ffbfc81fe933c96001fce48f9e9788c1d2df5067206ce19a129296930447b8560de4204776f3c8da4489676c4d57a88be68
         | 
| 7 | 
            +
              data.tar.gz: 8b1d944d17d8af49ce0fee65a965166766e50645ee1c3c759c8178fcfbb094f22e5d83f83cb1e1a8b15a3c614a84630cd5ab15acff64574d77fb5094264ba62f
         | 
    
        data/lib/netsuite.rb
    CHANGED
    
    | @@ -105,6 +105,7 @@ module NetSuite | |
| 105 105 | 
             
                autoload :SalesOrder,                 'netsuite/records/sales_order'
         | 
| 106 106 | 
             
                autoload :SalesOrderItem,             'netsuite/records/sales_order_item'
         | 
| 107 107 | 
             
                autoload :SalesOrderItemList,         'netsuite/records/sales_order_item_list'
         | 
| 108 | 
            +
                autoload :ServiceSaleItem,            'netsuite/records/service_sale_item'
         | 
| 108 109 | 
             
                autoload :ShipAddress,                'netsuite/records/ship_address'
         | 
| 109 110 | 
             
                autoload :SupportCase,                'netsuite/records/support_case'
         | 
| 110 111 | 
             
                autoload :Task,                       'netsuite/records/task'
         | 
| @@ -5,8 +5,9 @@ module NetSuite | |
| 5 5 | 
             
                  include Support::RecordRefs
         | 
| 6 6 | 
             
                  include Support::Records
         | 
| 7 7 | 
             
                  include Support::Actions
         | 
| 8 | 
            +
                  include Namespaces::ListAcct
         | 
| 8 9 |  | 
| 9 | 
            -
                  actions :get, :add, :delete
         | 
| 10 | 
            +
                  actions :get, :add, :delete, :search
         | 
| 10 11 |  | 
| 11 12 | 
             
                  fields :acct_name, :acct_number, :acct_type, :cash_flow_rate, :cur_doc_num, :description, :eliminate, :exchange_rate,
         | 
| 12 13 | 
             
                    :general_rate, :include_children, :inventory, :is_inactive, :opening_balance, :revalue, :tran_date
         | 
| @@ -7,7 +7,7 @@ module NetSuite | |
| 7 7 | 
             
                  include Support::Actions
         | 
| 8 8 | 
             
                  include Namespaces::ListRel
         | 
| 9 9 |  | 
| 10 | 
            -
                  actions :get, :add, :delete, :search
         | 
| 10 | 
            +
                  actions :get, :add, :delete, :search, :update
         | 
| 11 11 |  | 
| 12 12 | 
             
                  fields :salutation, :first_name, :middle_name, :last_name, :title, :phone, :fax, :email, :default_address,
         | 
| 13 13 | 
             
                         :entity_id, :phonetic_name, :alt_email, :office_phone, :home_phone, :mobile_phone, :supervisor_phone,
         | 
| @@ -1,13 +1,42 @@ | |
| 1 1 | 
             
            module NetSuite
         | 
| 2 2 | 
             
              module Records
         | 
| 3 3 | 
             
                class MatrixOptionList
         | 
| 4 | 
            +
                  # Deals with both hash and arrays of attributes[:matrix_option_list]
         | 
| 5 | 
            +
                  #
         | 
| 6 | 
            +
                  # Hash:
         | 
| 7 | 
            +
                  #
         | 
| 8 | 
            +
                  #   <listAcct:matrixOptionList>
         | 
| 9 | 
            +
                  #     <listAcct:matrixOption internalId="47" scriptId="custitem15">
         | 
| 10 | 
            +
                  #       <platformCore:value internalId="2" typeId="36"/>
         | 
| 11 | 
            +
                  #     </listAcct:matrixOption>
         | 
| 12 | 
            +
                  #   </listAcct:matrixOptionList>
         | 
| 13 | 
            +
                  #
         | 
| 14 | 
            +
                  # Array:
         | 
| 15 | 
            +
                  #
         | 
| 16 | 
            +
                  #   <listAcct:matrixOptionList>
         | 
| 17 | 
            +
                  #     <listAcct:matrixOption internalId="45" scriptId="custitem13">
         | 
| 18 | 
            +
                  #       <platformCore:value internalId="4" typeId="28"/>
         | 
| 19 | 
            +
                  #     </listAcct:matrixOption>
         | 
| 20 | 
            +
                  #     <listAcct:matrixOption internalId="46" scriptId="custitem14">
         | 
| 21 | 
            +
                  #       <platformCore:value internalId="1" typeId="29"/>
         | 
| 22 | 
            +
                  #     </listAcct:matrixOption>
         | 
| 23 | 
            +
                  #   </listAcct:matrixOptionList>
         | 
| 24 | 
            +
                  #
         | 
| 4 25 | 
             
                  def initialize(attributes = {})
         | 
| 5 | 
            -
                    attributes[:matrix_option] | 
| 26 | 
            +
                    case attributes[:matrix_option]
         | 
| 27 | 
            +
                    when Hash
         | 
| 6 28 | 
             
                      options << OpenStruct.new(
         | 
| 7 | 
            -
                        type_id:  | 
| 8 | 
            -
                        value_id:  | 
| 29 | 
            +
                        type_id: attributes[:matrix_option][:value][:'@type_id'],
         | 
| 30 | 
            +
                        value_id: attributes[:matrix_option][:value][:'@internal_id']
         | 
| 9 31 | 
             
                      )
         | 
| 10 | 
            -
                     | 
| 32 | 
            +
                    when Array
         | 
| 33 | 
            +
                      attributes[:matrix_option].each do |option|
         | 
| 34 | 
            +
                        options << OpenStruct.new(
         | 
| 35 | 
            +
                          type_id: option[:value][:'@type_id'],
         | 
| 36 | 
            +
                          value_id: option[:value][:'@internal_id']
         | 
| 37 | 
            +
                        )
         | 
| 38 | 
            +
                      end
         | 
| 39 | 
            +
                    end
         | 
| 11 40 | 
             
                  end
         | 
| 12 41 |  | 
| 13 42 | 
             
                  def options
         | 
| @@ -1,5 +1,8 @@ | |
| 1 1 | 
             
            module NetSuite
         | 
| 2 2 | 
             
              module Records
         | 
| 3 | 
            +
                # Beaware of possible gotcha when closing sales order. You need to set the
         | 
| 4 | 
            +
                # SalesOrder#custom_form to "Basic Sales Order Form" otherwise you might get
         | 
| 5 | 
            +
                # errors when trying to close it
         | 
| 3 6 | 
             
                class SalesOrderItem
         | 
| 4 7 | 
             
                  include Support::Fields
         | 
| 5 8 | 
             
                  include Support::RecordRefs
         | 
| @@ -10,7 +13,7 @@ module NetSuite | |
| 10 13 | 
             
                    :gift_cert_message, :gift_cert_number, :gift_cert_recipient_email, :gift_cert_recipient_name, :gross_amt, :is_taxable,
         | 
| 11 14 | 
             
                    :line, :order_line, :quantity, :rate, :rev_rec_end_date, :rev_rec_start_date, :rev_rec_term_in_months, :serial_numbers,
         | 
| 12 15 | 
             
                    :shipping_cost, :tax1_amt, :tax_rate1, :tax_rate2, :vsoe_allocation, :vsoe_amount, :vsoe_deferral, :vsoe_delivered,
         | 
| 13 | 
            -
                    :vsoe_permit_discount, :vsoe_price
         | 
| 16 | 
            +
                    :vsoe_permit_discount, :vsoe_price, :is_closed
         | 
| 14 17 |  | 
| 15 18 | 
             
                  field :custom_field_list, CustomFieldList
         | 
| 16 19 |  | 
| @@ -36,7 +39,6 @@ module NetSuite | |
| 36 39 | 
             
                    end
         | 
| 37 40 | 
             
                    rec
         | 
| 38 41 | 
             
                  end
         | 
| 39 | 
            -
             | 
| 40 42 | 
             
                end
         | 
| 41 43 | 
             
              end
         | 
| 42 44 | 
             
            end
         | 
| @@ -0,0 +1,45 @@ | |
| 1 | 
            +
            module NetSuite
         | 
| 2 | 
            +
              module Records
         | 
| 3 | 
            +
                class ServiceSaleItem
         | 
| 4 | 
            +
                  include Support::Fields
         | 
| 5 | 
            +
                  include Support::RecordRefs
         | 
| 6 | 
            +
                  include Support::Records
         | 
| 7 | 
            +
                  include Support::Actions
         | 
| 8 | 
            +
                  include Namespaces::ListAcct
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  actions :get, :add, :delete
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  fields :available_to_partners, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :create_job, :created_date,
         | 
| 13 | 
            +
                    :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap, :featured_description,
         | 
| 14 | 
            +
                    :include_children, :is_donation_item, :is_fulfillable, :is_gco_compliant, :is_inactive, :is_online, :is_taxable,
         | 
| 15 | 
            +
                    :item_id, :last_modified_date, :matrix_option_list, :matrix_type, :max_donation_amount, :meta_tag_html,
         | 
| 16 | 
            +
                    :minimum_quantity, :minimum_quantity_units, :no_price_message, :offer_support, :on_special, :out_of_stock_behavior,
         | 
| 17 | 
            +
                    :out_of_stock_message, :overall_quantity_pricing_type, :page_title, :presentation_item_list, :prices_include_tax,
         | 
| 18 | 
            +
                    :pricing_matrix, :rate, :related_items_description, :sales_description, :search_keywords,
         | 
| 19 | 
            +
                    :show_default_donation_amount, :site_category_list, :sitemap_priority, :soft_descriptor, :specials_description,
         | 
| 20 | 
            +
                    :store_description, :store_detailed_description, :store_display_name, :translations_list, :upc_code, :url_component,
         | 
| 21 | 
            +
                    :use_marginal_rates, :vsoe_deferral, :vsoe_delivered, :vsoe_permit_discount, :vsoe_price, :vsoe_sop_group
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  # item_task_templates_list
         | 
| 24 | 
            +
                  # billing_rates_matrix -- RecordRef, via listAcct::ItemOptionsList
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  record_refs :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account,
         | 
| 27 | 
            +
                    :issue_product, :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code,
         | 
| 28 | 
            +
                    :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :store_display_image,
         | 
| 29 | 
            +
                    :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  field :pricing_matrix, PricingMatrix
         | 
| 32 | 
            +
                  field :custom_field_list, CustomFieldList
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                  attr_reader   :internal_id
         | 
| 35 | 
            +
                  attr_accessor :external_id
         | 
| 36 | 
            +
             | 
| 37 | 
            +
                  def initialize(attributes = {})
         | 
| 38 | 
            +
                    @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)
         | 
| 39 | 
            +
                    @external_id = attributes.delete(:external_id) || attributes.delete(:@external_id)
         | 
| 40 | 
            +
                    initialize_from_attributes_hash(attributes)
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
            end
         | 
    
        data/lib/netsuite/version.rb
    CHANGED
    
    
    
        data/netsuite.gemspec
    CHANGED
    
    | @@ -3,9 +3,9 @@ require File.expand_path('../lib/netsuite/version', __FILE__) | |
| 3 3 |  | 
| 4 4 | 
             
            Gem::Specification.new do |gem|
         | 
| 5 5 | 
             
              gem.authors       = ['Ryan Moran', 'Michael Bianco']
         | 
| 6 | 
            -
              gem.email         = ['ryan.moran@gmail.com', ' | 
| 6 | 
            +
              gem.email         = ['ryan.moran@gmail.com', 'mike@cliffsidemedia.com']
         | 
| 7 7 | 
             
              gem.description   = %q{NetSuite SuiteTalk API Wrapper}
         | 
| 8 | 
            -
              gem.summary       = %q{NetSuite SuiteTalk API Wrapper}
         | 
| 8 | 
            +
              gem.summary       = %q{NetSuite SuiteTalk API (SOAP) Wrapper}
         | 
| 9 9 | 
             
              gem.homepage      = 'https://github.com/RevolutionPrep/netsuite'
         | 
| 10 10 |  | 
| 11 11 | 
             
              gem.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'ostruct'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module NetSuite
         | 
| 5 | 
            +
              module Records
         | 
| 6 | 
            +
                describe MatrixOptionList do
         | 
| 7 | 
            +
                  it "deals with hash properly" do
         | 
| 8 | 
            +
                    hash = {:value=>{:@internal_id=>"1", :@type_id=>"36"}}
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                    list = described_class.new({ matrix_option: hash })
         | 
| 11 | 
            +
                    expect(list.options.first.value_id).to eq "1"
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  it "deals with arrays properly" do
         | 
| 15 | 
            +
                    array = [
         | 
| 16 | 
            +
                      {:value=>{:@internal_id=>"2", :@type_id=>"28"}},
         | 
| 17 | 
            +
                      {:value=>{:@internal_id=>"1", :@type_id=>"29"}}
         | 
| 18 | 
            +
                    ]
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    list = described_class.new({ matrix_option: array })
         | 
| 21 | 
            +
                    expect(list.options.first.value_id).to eq "2"
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -203,4 +203,15 @@ describe NetSuite::Records::SalesOrder do | |
| 203 203 | 
             
                end
         | 
| 204 204 | 
             
              end
         | 
| 205 205 |  | 
| 206 | 
            +
              pending "closing a sales order" do
         | 
| 207 | 
            +
                it "closes each line to close the sales order" do
         | 
| 208 | 
            +
                  attributes = sales_order.attributes
         | 
| 209 | 
            +
                  attributes[:item_list].items.each do |item|
         | 
| 210 | 
            +
                    item.is_closed = true
         | 
| 211 | 
            +
                    item.attributes = item.attributes.slice(:line, :is_closed)
         | 
| 212 | 
            +
                  end
         | 
| 213 | 
            +
             | 
| 214 | 
            +
                  sales_order.update({ item_list: attributes[:item_list] })
         | 
| 215 | 
            +
                end
         | 
| 216 | 
            +
              end
         | 
| 206 217 | 
             
            end
         | 
| @@ -0,0 +1,134 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe NetSuite::Records::ServiceSaleItem do
         | 
| 4 | 
            +
              let(:item) { NetSuite::Records::ServiceSaleItem.new }
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              it 'has the right fields' do
         | 
| 7 | 
            +
                [
         | 
| 8 | 
            +
                  :available_to_partners, :cost_estimate, :cost_estimate_type, :cost_estimate_units, :create_job, :created_date,
         | 
| 9 | 
            +
                  :display_name, :dont_show_price, :enforce_min_qty_internally, :exclude_from_sitemap, :featured_description,
         | 
| 10 | 
            +
                  :include_children, :is_donation_item, :is_fulfillable, :is_gco_compliant, :is_inactive, :is_online, :is_taxable,
         | 
| 11 | 
            +
                  :item_id, :last_modified_date, :matrix_option_list, :matrix_type, :max_donation_amount, :meta_tag_html,
         | 
| 12 | 
            +
                  :minimum_quantity, :minimum_quantity_units, :no_price_message, :offer_support, :on_special, :out_of_stock_behavior,
         | 
| 13 | 
            +
                  :out_of_stock_message, :overall_quantity_pricing_type, :page_title, :presentation_item_list, :prices_include_tax,
         | 
| 14 | 
            +
                  :rate, :related_items_description, :sales_description, :search_keywords,
         | 
| 15 | 
            +
                  :show_default_donation_amount, :site_category_list, :sitemap_priority, :soft_descriptor, :specials_description,
         | 
| 16 | 
            +
                  :store_description, :store_detailed_description, :store_display_name, :translations_list, :upc_code, :url_component,
         | 
| 17 | 
            +
                  :use_marginal_rates, :vsoe_deferral, :vsoe_delivered, :vsoe_permit_discount, :vsoe_price, :vsoe_sop_group
         | 
| 18 | 
            +
                ].each do |field|
         | 
| 19 | 
            +
                  item.should have_field(field)
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                # TODO there is a probably a more robust way to test this
         | 
| 23 | 
            +
                item.custom_field_list.class.should == NetSuite::Records::CustomFieldList
         | 
| 24 | 
            +
                item.pricing_matrix.class.should == NetSuite::Records::PricingMatrix
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              it 'has the right record_refs' do
         | 
| 28 | 
            +
                [
         | 
| 29 | 
            +
                  :billing_schedule, :cost_category, :custom_form, :deferred_revenue_account, :department, :income_account,
         | 
| 30 | 
            +
                  :issue_product, :item_options_list, :klass, :location, :parent, :pricing_group, :purchase_tax_code,
         | 
| 31 | 
            +
                  :quantity_pricing_schedule, :rev_rec_schedule, :sale_unit, :sales_tax_code, :store_display_image,
         | 
| 32 | 
            +
                  :store_display_thumbnail, :store_item_template, :subsidiary_list, :tax_schedule, :units_type
         | 
| 33 | 
            +
                ].each do |record_ref|
         | 
| 34 | 
            +
                  item.should have_record_ref(record_ref)
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              describe '.get' do
         | 
| 39 | 
            +
                context 'when the response is successful' do
         | 
| 40 | 
            +
                  let(:response) { NetSuite::Response.new(:success => true, :body => { :item_id => 'penguins' }) }
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  it 'returns a ServiceSaleItem instance populated with the data from the response object' do
         | 
| 43 | 
            +
                    NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::ServiceSaleItem, :external_id => 20).and_return(response)
         | 
| 44 | 
            +
                    customer = NetSuite::Records::ServiceSaleItem.get(:external_id => 20)
         | 
| 45 | 
            +
                    customer.should be_kind_of(NetSuite::Records::ServiceSaleItem)
         | 
| 46 | 
            +
                    customer.item_id.should eql('penguins')
         | 
| 47 | 
            +
                  end
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                context 'when the response is unsuccessful' do
         | 
| 51 | 
            +
                  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  it 'raises a RecordNotFound exception' do
         | 
| 54 | 
            +
                    NetSuite::Actions::Get.should_receive(:call).with(NetSuite::Records::ServiceSaleItem, :external_id => 20).and_return(response)
         | 
| 55 | 
            +
                    lambda {
         | 
| 56 | 
            +
                      NetSuite::Records::ServiceSaleItem.get(:external_id => 20)
         | 
| 57 | 
            +
                    }.should raise_error(NetSuite::RecordNotFound,
         | 
| 58 | 
            +
                      /NetSuite::Records::ServiceSaleItem with OPTIONS=(.*) could not be found/)
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
              describe '#add' do
         | 
| 64 | 
            +
                # let(:item) { NetSuite::Records::ServiceSaleItem.new(:cost => 100, :is_inactive => false) }
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                context 'when the response is successful' do
         | 
| 67 | 
            +
                  let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                  it 'returns true' do
         | 
| 70 | 
            +
                    NetSuite::Actions::Add.should_receive(:call).
         | 
| 71 | 
            +
                        with(item).
         | 
| 72 | 
            +
                        and_return(response)
         | 
| 73 | 
            +
                    item.add.should be_true
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                context 'when the response is unsuccessful' do
         | 
| 78 | 
            +
                  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  it 'returns false' do
         | 
| 81 | 
            +
                    NetSuite::Actions::Add.should_receive(:call).
         | 
| 82 | 
            +
                        with(item).
         | 
| 83 | 
            +
                        and_return(response)
         | 
| 84 | 
            +
                    item.add.should be_false
         | 
| 85 | 
            +
                  end
         | 
| 86 | 
            +
                end
         | 
| 87 | 
            +
              end
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              describe '#delete' do
         | 
| 90 | 
            +
                context 'when the response is successful' do
         | 
| 91 | 
            +
                  let(:response) { NetSuite::Response.new(:success => true, :body => { :internal_id => '1' }) }
         | 
| 92 | 
            +
             | 
| 93 | 
            +
                  it 'returns true' do
         | 
| 94 | 
            +
                    NetSuite::Actions::Delete.should_receive(:call).
         | 
| 95 | 
            +
                        with(item).
         | 
| 96 | 
            +
                        and_return(response)
         | 
| 97 | 
            +
                    item.delete.should be_true
         | 
| 98 | 
            +
                  end
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
             | 
| 101 | 
            +
                context 'when the response is unsuccessful' do
         | 
| 102 | 
            +
                  let(:response) { NetSuite::Response.new(:success => false, :body => {}) }
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  it 'returns false' do
         | 
| 105 | 
            +
                    NetSuite::Actions::Delete.should_receive(:call).
         | 
| 106 | 
            +
                        with(item).
         | 
| 107 | 
            +
                        and_return(response)
         | 
| 108 | 
            +
                    item.delete.should be_false
         | 
| 109 | 
            +
                  end
         | 
| 110 | 
            +
                end
         | 
| 111 | 
            +
              end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
              describe '#to_record' do
         | 
| 114 | 
            +
                before do
         | 
| 115 | 
            +
                  item.item_id = 'penguins'
         | 
| 116 | 
            +
                  item.is_online     = true
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                it 'can represent itself as a SOAP record' do
         | 
| 120 | 
            +
                  record = {
         | 
| 121 | 
            +
                    'listAcct:itemId' => 'penguins',
         | 
| 122 | 
            +
                    'listAcct:isOnline'     => true
         | 
| 123 | 
            +
                  }
         | 
| 124 | 
            +
                  item.to_record.should eql(record)
         | 
| 125 | 
            +
                end
         | 
| 126 | 
            +
              end
         | 
| 127 | 
            +
             | 
| 128 | 
            +
              describe '#record_type' do
         | 
| 129 | 
            +
                it 'returns a string of the SOAP type' do
         | 
| 130 | 
            +
                  item.record_type.should eql('listAcct:ServiceSaleItem')
         | 
| 131 | 
            +
                end
         | 
| 132 | 
            +
              end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: netsuite
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Ryan Moran
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2014- | 
| 12 | 
            +
            date: 2014-04-14 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: savon
         | 
| @@ -42,7 +42,7 @@ dependencies: | |
| 42 42 | 
             
            description: NetSuite SuiteTalk API Wrapper
         | 
| 43 43 | 
             
            email:
         | 
| 44 44 | 
             
            - ryan.moran@gmail.com
         | 
| 45 | 
            -
            -  | 
| 45 | 
            +
            - mike@cliffsidemedia.com
         | 
| 46 46 | 
             
            executables: []
         | 
| 47 47 | 
             
            extensions: []
         | 
| 48 48 | 
             
            extra_rdoc_files: []
         | 
| @@ -136,6 +136,7 @@ files: | |
| 136 136 | 
             
            - lib/netsuite/records/sales_order.rb
         | 
| 137 137 | 
             
            - lib/netsuite/records/sales_order_item.rb
         | 
| 138 138 | 
             
            - lib/netsuite/records/sales_order_item_list.rb
         | 
| 139 | 
            +
            - lib/netsuite/records/service_sale_item.rb
         | 
| 139 140 | 
             
            - lib/netsuite/records/ship_address.rb
         | 
| 140 141 | 
             
            - lib/netsuite/records/support_case.rb
         | 
| 141 142 | 
             
            - lib/netsuite/records/task.rb
         | 
| @@ -192,6 +193,7 @@ files: | |
| 192 193 | 
             
            - spec/netsuite/records/journal_entry_line_spec.rb
         | 
| 193 194 | 
             
            - spec/netsuite/records/journal_entry_spec.rb
         | 
| 194 195 | 
             
            - spec/netsuite/records/location_spec.rb
         | 
| 196 | 
            +
            - spec/netsuite/records/matrix_option_list_spec.rb
         | 
| 195 197 | 
             
            - spec/netsuite/records/non_inventory_sale_item_spec.rb
         | 
| 196 198 | 
             
            - spec/netsuite/records/payment_method_spec.rb
         | 
| 197 199 | 
             
            - spec/netsuite/records/phone_call_spec.rb
         | 
| @@ -200,6 +202,7 @@ files: | |
| 200 202 | 
             
            - spec/netsuite/records/sales_order_item_list_spec.rb
         | 
| 201 203 | 
             
            - spec/netsuite/records/sales_order_item_spec.rb
         | 
| 202 204 | 
             
            - spec/netsuite/records/sales_order_spec.rb
         | 
| 205 | 
            +
            - spec/netsuite/records/service_sale_item_spec.rb
         | 
| 203 206 | 
             
            - spec/netsuite/records/ship_address_spec.rb
         | 
| 204 207 | 
             
            - spec/netsuite/records/support_case_spec.rb
         | 
| 205 208 | 
             
            - spec/netsuite/records/term_spec.rb
         | 
| @@ -253,7 +256,7 @@ rubyforge_project: | |
| 253 256 | 
             
            rubygems_version: 2.2.0
         | 
| 254 257 | 
             
            signing_key: 
         | 
| 255 258 | 
             
            specification_version: 4
         | 
| 256 | 
            -
            summary: NetSuite SuiteTalk API Wrapper
         | 
| 259 | 
            +
            summary: NetSuite SuiteTalk API (SOAP) Wrapper
         | 
| 257 260 | 
             
            test_files:
         | 
| 258 261 | 
             
            - spec/netsuite/actions/add_spec.rb
         | 
| 259 262 | 
             
            - spec/netsuite/actions/delete_spec.rb
         | 
| @@ -296,6 +299,7 @@ test_files: | |
| 296 299 | 
             
            - spec/netsuite/records/journal_entry_line_spec.rb
         | 
| 297 300 | 
             
            - spec/netsuite/records/journal_entry_spec.rb
         | 
| 298 301 | 
             
            - spec/netsuite/records/location_spec.rb
         | 
| 302 | 
            +
            - spec/netsuite/records/matrix_option_list_spec.rb
         | 
| 299 303 | 
             
            - spec/netsuite/records/non_inventory_sale_item_spec.rb
         | 
| 300 304 | 
             
            - spec/netsuite/records/payment_method_spec.rb
         | 
| 301 305 | 
             
            - spec/netsuite/records/phone_call_spec.rb
         | 
| @@ -304,6 +308,7 @@ test_files: | |
| 304 308 | 
             
            - spec/netsuite/records/sales_order_item_list_spec.rb
         | 
| 305 309 | 
             
            - spec/netsuite/records/sales_order_item_spec.rb
         | 
| 306 310 | 
             
            - spec/netsuite/records/sales_order_spec.rb
         | 
| 311 | 
            +
            - spec/netsuite/records/service_sale_item_spec.rb
         | 
| 307 312 | 
             
            - spec/netsuite/records/ship_address_spec.rb
         | 
| 308 313 | 
             
            - spec/netsuite/records/support_case_spec.rb
         | 
| 309 314 | 
             
            - spec/netsuite/records/term_spec.rb
         |