module Storexplore::Testing

Extra facilities to ease testing custom store APIs.

Public Class Methods

config() { |config| ... } click to toggle source

Call this with a block to initialize Storexplore::Testing. The given block receives the Storexplore::Testing::Configuration as argument.

# File lib/storexplore/testing/configuration.rb, line 30
def self.config
  @config ||= Configuration.new
  yield @config if block_given?
  @config
end

Public Instance Methods

dig(categories, message) click to toggle source
# File lib/storexplore/testing/api_shared_context.rb, line 51
def dig(categories, message)
  categories.map { |cat| cat.send(message).to_a[@range] }.flatten
end
dig_deep(categories) click to toggle source
# File lib/storexplore/testing/api_shared_context.rb, line 55
def dig_deep(categories)
  all_categories = [categories]
  items = []

  while not categories.empty? and items.empty?
    items = dig(categories, :items)
    categories = dig(categories, :categories)
    all_categories << categories
  end

  [all_categories.flatten, items]
end
explore_store() click to toggle source
# File lib/storexplore/testing/api_shared_context.rb, line 39
def explore_store
  @sample_categories = dig([store], :categories)
  @all_sample_categories, @sample_items = dig_deep(@sample_categories)
  @valid_sample_items = valid_items(@sample_items)
  @sample_items_attributes = (valid_sample_items.map &:attributes).uniq
  @parseable_categories_attributes = all_sample_categories.map do |category|
    category.attributes rescue {}
  end
end
logger() click to toggle source
# File lib/storexplore/testing/api_shared_context.rb, line 81
def logger
  Testing.config.logger
end
valid_items(items) click to toggle source
# File lib/storexplore/testing/api_shared_context.rb, line 68
def valid_items(items)
  result = []
  sample_items.each do |item|
    begin
      item.attributes
      result.push(item)
    rescue BrowsingError => e
      Testing.logger.debug e.message
    end
  end
  result
end