summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrett Walker <bwalker@gitlab.com>2018-01-11 14:16:22 +0100
committerBrett Walker <bwalker@gitlab.com>2018-01-22 17:25:10 +0100
commit1a075899007da589a788b6b95c4b1f2a6396499d (patch)
treea5017cf40513bc180d237c92fd7b825709cbd864
parentb8189816214e817605082516e9d8b604dc851d58 (diff)
downloadgitlab-ce-1a075899007da589a788b6b95c4b1f2a6396499d.tar.gz
created new 'Runtime::Session' and refactored 'Browser::Session'
-rw-r--r--qa/qa.rb1
-rw-r--r--qa/qa/runtime/api.rb29
-rw-r--r--qa/qa/runtime/browser.rb15
-rw-r--r--qa/qa/runtime/session.rb27
4 files changed, 32 insertions, 40 deletions
diff --git a/qa/qa.rb b/qa/qa.rb
index b3ff9d123f5..af1d83704f2 100644
--- a/qa/qa.rb
+++ b/qa/qa.rb
@@ -16,6 +16,7 @@ module QA
autoload :Browser, 'qa/runtime/browser'
autoload :Env, 'qa/runtime/env'
autoload :API, 'qa/runtime/api'
+ autoload :Session, 'qa/runtime/session'
end
##
diff --git a/qa/qa/runtime/api.rb b/qa/qa/runtime/api.rb
index d72c7a2e465..05df1af5301 100644
--- a/qa/qa/runtime/api.rb
+++ b/qa/qa/runtime/api.rb
@@ -16,33 +16,10 @@ module QA
# In case of an address that is a symbol we will try to guess address
# based on `Runtime::Scenario#something_address`.
def self.get(address, page, *args)
- page = self.add_query_values(page, args)
- API::Response.new(Faraday.get(API::Client::Session.new(address, page).address))
- end
-
- def self.add_query_values(path, args)
- if args.any?
- query_string = Hash(*args).map { |key, value| "#{key}=#{value}" }.join('&')
-
- if query_string
- path << (path.index('?') ? '&' : '?')
- path << query_string
- end
- end
- path
- end
-
- class Session
- attr_reader :address
-
- def initialize(instance, page = nil)
- @instance = instance
- @address = host + (page.is_a?(String) ? page : page&.path)
- end
-
- def host
- @instance.is_a?(Symbol) ? Runtime::Scenario.send("#{@instance}_address") : @instance.to_s
+ session = Session.new(address, page).tap do |s|
+ s.add_query_values(args)
end
+ API::Response.new(Faraday.get(session.address))
end
end
diff --git a/qa/qa/runtime/browser.rb b/qa/qa/runtime/browser.rb
index 14b2a488760..7882c8a0947 100644
--- a/qa/qa/runtime/browser.rb
+++ b/qa/qa/runtime/browser.rb
@@ -90,22 +90,9 @@ module QA
end
end
- class Session
+ class Session < QA::Runtime::Session
include Capybara::DSL
- def initialize(instance, page = nil)
- @instance = instance
- @address = host + page&.path
- end
-
- def host
- if @instance.is_a?(Symbol)
- Runtime::Scenario.send("#{@instance}_address")
- else
- @instance.to_s
- end
- end
-
def perform(&block)
visit(@address)
diff --git a/qa/qa/runtime/session.rb b/qa/qa/runtime/session.rb
new file mode 100644
index 00000000000..1a92455221a
--- /dev/null
+++ b/qa/qa/runtime/session.rb
@@ -0,0 +1,27 @@
+module QA
+ module Runtime
+ class Session
+ attr_reader :address
+
+ def initialize(instance, page = nil)
+ @instance = instance
+ @address = host + (page.is_a?(String) ? page : page&.path)
+ end
+
+ def host
+ @instance.is_a?(Symbol) ? Runtime::Scenario.send("#{@instance}_address") : @instance.to_s
+ end
+
+ def add_query_values(args)
+ if args.any?
+ query_string = Hash(*args).map { |key, value| "#{key}=#{value}" }.join('&')
+
+ if query_string
+ @address << (@address.index('?') ? '&' : '?')
+ @address << query_string
+ end
+ end
+ end
+ end
+ end
+end