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