class Pretender::Rails::Server

Constants

Stub

Attributes

session[RW]

Public Instance Methods

inject(body) click to toggle source
# File lib/pretender/rails/server.rb, line 11
def inject(body)
  unless stubs.empty?
    head_pos = body.index('</head>')
    body.insert(head_pos, scripts) if head_pos
  end
  body
end
shutdown(page) click to toggle source
# File lib/pretender/rails/server.rb, line 19
def shutdown(page)
  stubs.clear
  page.driver.execute_script('typeof(server) !== "undefined" && server.shutdown();')
rescue Capybara::NotSupportedByDriverError => e
end
stub(method, route, response) click to toggle source
# File lib/pretender/rails/server.rb, line 25
def stub(method, route, response)
  stub = Stub.new(method, route, response)
  stubs.unshift stub
  stub
end

Private Instance Methods

dependencies_script() click to toggle source
# File lib/pretender/rails/server.rb, line 51
def dependencies_script
  [javascript_include_tag('fake_xml_http_request.js'),
   javascript_include_tag('route-recognizer.js'),
   javascript_include_tag('pretender.js')].join("\n")
end
javascript_include_tag(url) click to toggle source
# File lib/pretender/rails/server.rb, line 57
def javascript_include_tag(url)
  "<script src=\"/assets/#{url}\"></script>"
end
load_script(path) click to toggle source
# File lib/pretender/rails/server.rb, line 43
def load_script(path)
  open(path).read
end
routes() click to toggle source
# File lib/pretender/rails/server.rb, line 37
def routes
  stubs.map do |stub|
    "this.#{stub.method}('#{stub.route}', function(request) { return #{stub.response.to_json}; });"
  end.join("\n")
end
scripts() click to toggle source
# File lib/pretender/rails/server.rb, line 47
def scripts
  [dependencies_script, server_script].join("\n")
end
server_script() click to toggle source
# File lib/pretender/rails/server.rb, line 61
      def server_script
        <<-JS
<script>
  var server = new Pretender(function(){
    #{routes}
    this.get('/*any', this.passthrough);
    this.post('/*any', this.passthrough);
    this.put('/*any', this.passthrough);
    this.delete('/*any', this.passthrough);
  });
</script>
        JS
      end
stubs() click to toggle source
# File lib/pretender/rails/server.rb, line 33
def stubs
  @_stubs ||= []
end