Module: Kookaburra::TestHelpers

Extended by:
Forwardable
Defined in:
lib/kookaburra/test_helpers.rb

Overview

This module is intended to be mixed in to your testing context to provide convenient access to your Kookaburra objects. Examples for both RSpec and Cucumber are given below; mixing it in to other test setups should be pretty straight-forward.

Examples:

RSpec setup

# in 'spec/support/kookaburra_setup.rb'
require 'kookaburra/test_helpers'
require 'my_app/kookaburra/api_driver'
require 'my_app/kookaburra/ui_driver'

Kookaburra.configure do |c|
  c.api_driver_class = MyApp::Kookaburra::APIDriver,
  c.ui_driver_class = MyApp::Kookaburra::UIDriver,
  c.app_host = 'http://my_app.example.com:12345',
  c.browser = capybara,
  c.server_error_detection { |browser|
    browser.has_css?('h1', text: 'internal server error')
  }
end

RSpec.configure do |c|
  c.include(Kookaburra::TestHelpers, :type => :request)
end

# in 'spec/request/some_feature_spec.rb'
describe "Some Feature" do
  example "some test script" do
    api.create_widget(:foo)
    api.create_widget(:bar, :hidden => true)
    api.create_widget(:baz)

    ui.view_list_of_widgets

    ui.widget_list.widgets.should == k.get_data(:widgets).slice(:foo, :baz)

    ui.widget_list.hide_widget(:foo)

    ui.widget_list.widgets.should == k.get_data(:widgets).slice(:baz)
  end
end

Cucumber setup

# in 'features/support/kookaburra_setup.rb'
require 'kookaburra/test_helpers'
require 'my_app/kookaburra/api_driver'
require 'my_app/kookaburra/ui_driver'

Kookaburra.configure do |c|
  c.api_driver_class = MyApp::Kookaburra::APIDriver,
  c.ui_driver_class = MyApp::Kookaburra::UIDriver,
  c.app_host = 'http://my_app.example.com:12345',
  c.browser = capybara,
  c.server_error_detection { |browser|
    browser.has_css?('h1', text: 'internal server error')
  }
end

World(Kookaburra::TestHelpers)

# in 'features/step_definitions/some_steps.rb
Given /^there is a widget, "(\w+)"/ do |name|
  api.create_widget(name.to_sym)
end

Given /^there is a hidden widget, "(\w+)"/ do |name|
  api.create_widget(name.to_sym, :hidden => true)
end

When /^I view the widget list/ do
  ui.view_the_widget_list
end

Then /^I see the widget list contains the following widgets$/ do |widget_names|
  widgets = widget_names.hashes.map { |h| h['name'].to_sym }
  ui.widget_list.widgets.should == k.get_data(:widgets).slice(widgets)
end

Instance Method Summary collapse

Instance Method Details

#apiObject

Delegates to #k



96
# File 'lib/kookaburra/test_helpers.rb', line 96

def_delegator :k, :api

#kKookaburra

The Kookaburra instance to be used by your tests. It gets configured using the options set in Kookaburra.configuration, and the result is memoized.

Returns:



90
91
92
# File 'lib/kookaburra/test_helpers.rb', line 90

def k
  @k ||= Kookaburra.new
end

#uiObject

Delegates to #k



100
# File 'lib/kookaburra/test_helpers.rb', line 100

def_delegator :k, :ui