lib/calabash/location.rb in calabash-2.0.0.pre11 vs lib/calabash/location.rb in calabash-2.0.0.prelegacy
- old
+ new
@@ -3,42 +3,43 @@
module Calabash
# An API for setting the location of your app.
module Location
# Simulates gps location of the device/simulator.
+ # @note Seems UIAutomation is broken here on physical devices on iOS 7.1
#
# @example
- # cal.set_location(latitude: 48.8567, longitude: 2.3508)
+ # set_location({latitude: 48.8567, longitude: 2.3508})
#
# @example
- # cal.set_location(coordinates_for_place('The little mermaid, Copenhagen'))
+ # set_location(coordinates_for_place('The little mermaid, Copenhagen'))
#
- # @param [Number] latitude The latitude of the location to simulate.
- # @param [Number] longitude The longitude of the location to simulate.
- # @raise [ArgumentError] If not given a latitude or longitude key.
- def set_location(latitude: nil, longitude: nil)
- unless latitude
- raise ArgumentError, "Expected latitude to be a number, not '#{latitude.class}'"
+ # @param [Hash] location The location to simulate.
+ # @raise [ArgumentError] If location is not a hash and does not contain a
+ # latitude and longitude key.
+ def set_location(location)
+ unless location.is_a?(Hash)
+ raise ArgumentError, "Expected location to be a Hash, not '#{location.class}'"
end
- unless longitude
- raise ArgumentError, "Expected longitude to be a number, not '#{longitude.class}'"
+ unless location[:latitude] || location[:longitude]
+ raise ArgumentError, 'You must supply :latitude and :longitude'
end
- Calabash::Internal.with_default_device {|device| device.set_location(latitude: latitude, longitude: longitude)}
+ Device.default.set_location(location)
end
# Get the latitude and longitude for a certain place, resolved via Google
# maps api. This hash can be used in `set_location`.
#
# @example
- # cal.coordinates_for_place('The little mermaid, Copenhagen')
+ # coordinates_for_place('The little mermaid, Copenhagen')
# # => {:latitude => 55.6760968, :longitude => 12.5683371}
#
# @return [Hash] Latitude and longitude for the given place
# @raise [RuntimeError] If the place cannot be found
- def coordinates_for_place(place_name)
- result = Geocoder.search(place_name)
+ def coordinates_for_place(place)
+ result = Geocoder.search(place)
if result.empty?
raise "No result found for '#{place}'"
end