Sha256: 7326f7b94d3ae749a3f369cef72beb9ef295ebb8281f8711d5b3c721e77f6f97
Contents?: true
Size: 1013 Bytes
Versions: 2
Compression:
Stored size: 1013 Bytes
Contents
# frozen_string_literal: true module CypressRails class Middleware def initialize(app) @app = app end def call(env) request = Rack::Request.new(env) if cypress_rails_url?(request.path) setup! if setup_url?(request.path) execute_script!(request) if scripts_url?(request.path) return [ 201, { "Content-Type" => "text/html" }, [""] ] end @app.call(env) end private def cypress_rails_url?(path) path.starts_with?("/__cypress_rails__") end def setup_url?(path) path.gsub("/__cypress_rails__/", "") == "setup" end def scripts_url?(path) path.gsub("/__cypress_rails__/", "") == "scripts" end def setup! reset_db! end def execute_script!(request) body = JSON.parse(request.body.read) CypressRails.scripts(body.fetch("name")).call end def reset_db! CypressRails.configuration.before_each.call end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cypress_rails-0.4.2 | lib/cypress_rails/middleware.rb |
cypress_rails-0.4.1 | lib/cypress_rails/middleware.rb |