module NetSuiteRails::Spec::QueryHelpers

Public Class Methods

included(base) click to toggle source
# File lib/netsuite_rails/spec/query_helpers.rb, line 5
def self.included(base)
  base.before { netsuite_timestamp(DateTime.now) }
end

Public Instance Methods

get_last_netsuite_object(record) click to toggle source
# File lib/netsuite_rails/spec/query_helpers.rb, line 17
def get_last_netsuite_object(record)
  # TODO support passing custom record ref

  if record.is_a?(Class)
    record_class = record
    is_custom_record = false
  else
    record_class = record.netsuite_record_class
    is_custom_record = record.netsuite_custom_record?
  end

  search = record_class.search({
    criteria: {
      basic:
      (
      if is_custom_record
        [
          {
            field: 'recType',
            operator: 'is',
            value: NetSuite::Records::CustomRecordRef.new(internal_id: record.class.netsuite_custom_record_type_id)
          },
          {
            field: 'lastModified',
            operator: 'after',
            value: netsuite_timestamp
          }
        ]
      else
        [
          {
            field: 'lastModifiedDate',
            operator: 'after',
            value: netsuite_timestamp
          }
        ]
      end + 

      if [ NetSuite::Records::SalesOrder, NetSuite::Records::ItemFulfillment, NetSuite::Records::Invoice ].include?(record_class)
        [
          {
            field: 'type',
            operator: 'anyOf',
            value: [ '_' + record_class.name.demodulize.lower_camelcase ]
          }
        ]
      else
        []
      end
      )
    }
  })

  return nil if search.results.blank?

  if is_custom_record
    NetSuite::Records::CustomRecord.get(
      internal_id: search.results.first.internal_id.to_i,
      type_id: record.class.netsuite_custom_record_type_id
    )
  else
    record_class.get(search.results.first.internal_id.to_i)
  end
end
netsuite_timestamp(stamp = nil) click to toggle source
# File lib/netsuite_rails/spec/query_helpers.rb, line 9
def netsuite_timestamp(stamp = nil)
  if stamp.nil?
    @netsuite_timestamp ||= (Time.now - (60 * 2)).to_datetime
  else
    @netsuite_timestamp = stamp
  end
end
netsuite_url(object) click to toggle source

convenience method for inspecting objects in a live IRB session

# File lib/netsuite_rails/spec/query_helpers.rb, line 83
def netsuite_url(object)
  `open "#{NetSuiteRails::UrlHelper.netsuite_url(object)}"`
end