This repository has been archived by the owner on Jan 10, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 12
Cucumber
icaruswings edited this page Sep 14, 2010
·
17 revisions
# features/support/env.rb require 'gizmo' World(Gizmo::Helpers)
Scenario: A user can perform a search from the homepage Given a user is on the github homepage When the user enters "gizmo" into the search box and clicks the magnifying glass icon And the user clicks on the "icaruswings / gizmo" link Then the user is on the "gizmo" github repository details page And the user is on a github repository details page which belongs to "icaruswings"
# features/support/pages/page_with_github_search.rb module PageWithGithubSearch include Gizmo::PageMixin def valid? has_selector?("div.search") end def search_form element_struct do |form| form.container = @document.css("div.search") form.element = container= form.container.css("form") form.input = container.css("input[name=q]") form.submit = container.css("input[alt=search]") end end define_action :search do |query| fill_in search_form.input.attr('name').value, :with => query click search_form.submit.attr('alt').value end end
# features/support/pages/page_with_github_search_results.rb module PageWithGithubSearchResults include Gizmo::PageMixin def valid? has_selector?('div#code_search_results') end def search_results element_struct do |results| results.repositories = build_repositories end end private def build_repositories element_struct do |repos| container = find_results_container "Repositories" repos.heading = container.css('div.header') repos.results = container.css('div.result').map { |result| build_repository_result result } end end def build_repository_result result element_struct do |repo_result| repo_result.title = result.css('h2.title') repo_result.link = repo_result.title.css('a') link_parts = repo_result.link.inner_text.split('/').map(&:strip) repo_result.author = link_parts[0] repo_result.name = link_parts[1] end end def find_results_container heading_text all_headings = @document.css('div.header') header = all_headings.find do |heading_element| heading_element.css('div.title').inner_text =~ /#{heading_text} \((.+)\)/ end header.parent unless header.nil? end end
# features/step_definitions/homepage_steps.rb Given /^a user is on the github homepage$/ do visit "http://github.com" end When /^the user enters "([^\"]*)" into the search box and clicks the magnifying glass icon$/ do |query| on_page_with :github_search do |page| page.perform :search, query end end When /^the user clicks on the "([^\"]*)" link$/ do |text| click_link text end Then /^the user is on the "([^\"]*)" github repository details page$/ do |repo_name| on_page_with :github_repo_details do |page| page.repo_details.name.should == repo_name end end Then /^the user is on a github repository details page which belongs to "([^\"]*)"$/ do |author| on_page_with :github_repo_details do |page| page.repo_details.author.should == author end end