Sha256: 178643556ea9044bfa65896f486c41f7e79775b06a92efcda0bca25e10c44fee

Contents?: true

Size: 1.79 KB

Versions: 6

Compression:

Stored size: 1.79 KB

Contents

require 'date'

module Trackerific
  
  # Provides a mock service for using in test and development
  class MockService < Trackerific::Service
    
    class << self
      # Regular expression matchers for mocked Trackerific service
      # @return [Array, Regexp] the regular expression
      # @api private
      def package_id_matchers
        if defined?(Rails)
          return [ /XXXXXXXXXX/, /XXXxxxxxxx/ ] unless Rails.env.production?
        else
          return [ ] # no matchers in production mode
        end
      end
      
      # Returns an Array of required options used when creating a new instance
      # @return [Array] required options
      # @api private
      def required_options
        [ ]
      end
    end
    
    # Sets up a mocked package details
    # @param [String] package_id the package identifier
    # @return [Trackerific::Details] the tracking details
    # @raise [Trackerific::Error] raised when the server returns an error
    # @example Track a package
    #   service = Trackerific::MockedService.new
    #   details = service.track_package("XXXXXXXXXX") # => valid response
    #   details = service.track_package("XXXxxxxxxx") # => throws a Trackerific::Error exception
    # @api public
    def track_package(package_id)
      super
      if package_id == "XXXXXXXXXX"
        Trackerific::Details.new(
          package_id,
          "Your package was delivered.",
          [
            Trackerific::Event.new(Date.today, "Package delivered.", "SANTA MARIA, CA"),
            Trackerific::Event.new(Date.today - 1, "Package scanned.", "SANTA BARBARA, CA"),
            Trackerific::Event.new(Date.today - 2, "Package picked up for delivery.", "LOS ANGELES, CA")
          ]
        )
      else
        raise Trackerific::Error, "Package not found."
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
trackerific-0.5.5 lib/trackerific/services/mock_service.rb
trackerific-0.5.4 lib/trackerific/services/mock_service.rb
trackerific-0.5.3 lib/trackerific/services/mock_service.rb
trackerific-0.5.2 lib/trackerific/services/mock_service.rb
trackerific-0.5.1 lib/trackerific/services/mock_service.rb
trackerific-0.5.0 lib/trackerific/services/mock_service.rb