Sha256: 5d9d39c0e2da3c4ac5d9375431f2b6f8913f962b69c9585503c8f7712b30a410

Contents?: true

Size: 798 Bytes

Versions: 4

Compression:

Stored size: 798 Bytes

Contents

module Trice
  module ControllerMethods
    class ReferenceTimeAssignment

      QUERY_STUB_KEY  = '_requested_at'.freeze
      HEADER_STUB_KEY = 'X-REQUESTED-AT'.freeze

      def initialize(config)
        @stub_configuration = config
      end

      def around(controller, &action)
        t = stubbed_requested_at(controller) || Time.now

        Trice.with_reference_time(t, &action)
      end

      private

      def stubbed_requested_at(controller)
        requested_at = requested_at_string(controller.request)

        if requested_at && @stub_configuration.stubbable?(controller)
          Time.zone.parse(requested_at)
        end
      end

      def requested_at_string(request)
        request.params[QUERY_STUB_KEY] || request.headers[HEADER_STUB_KEY]
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
trice-0.3.2 lib/trice/controller_methods/reference_time_assignment.rb
trice-0.3.1 lib/trice/controller_methods/reference_time_assignment.rb
trice-0.3.0 lib/trice/controller_methods/reference_time_assignment.rb
trice-0.2.1 lib/trice/controller_methods/reference_time_assignment.rb