Sha256: 358eaf833bd3377c53aa4db9475ae70de41a62fb532c5f14c1e102fbedc882a3

Contents?: true

Size: 1.49 KB

Versions: 5

Compression:

Stored size: 1.49 KB

Contents

require 'net/http'

module RestAssured
  module Models
    class Double < ActiveRecord::Base
      attr_accessible :fullpath, :content, :description, :verb, :status, :response_headers

      serialize :response_headers, Hash

      VERBS = %w{GET POST PUT DELETE HEAD}
      STATUSES = Net::HTTPResponse::CODE_TO_OBJ.keys.map(&:to_i)

      validates_presence_of :fullpath
      validates_inclusion_of :verb, :in => VERBS
      validates_inclusion_of :status, :in => STATUSES

      before_save :toggle_active
      before_validation :set_verb
      before_validation :set_status
      before_validation :set_response_headers
      after_destroy :set_active

      has_many :requests, :dependent => :destroy

      private

        def toggle_active
          ne = id ? '!=' : 'IS NOT'

          if active && Double.where("fullpath = ? AND verb = ? AND active = ? AND id #{ne} ?", fullpath, verb, true, id).exists?
            Double.where("fullpath = ? AND verb = ? AND id #{ne} ?", fullpath, verb, id).update_all :active => false
          end
        end

        def set_response_headers
          self.response_headers = {} unless response_headers.present?
        end

        def set_verb
          self.verb = 'GET' unless verb.present?
        end

        def set_status
          self.status = 200 unless status.present?
        end

        def set_active
          if active && f = Double.where(:fullpath => fullpath).last
            f.active = true
            f.save
          end
        end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
rest-assured-1.1.6 lib/rest-assured/models/double.rb
rest-assured-1.1.5 lib/rest-assured/models/double.rb
rest-assured-1.1.4 lib/rest-assured/models/double.rb
rest-assured-1.1.3 lib/rest-assured/models/double.rb
rest-assured-1.1.2 lib/rest-assured/models/double.rb