Just built this little snippet in a hacknight, it simulates a geolcation via capybara, so you can test if you geo-magic actually works 🙂
View
<p>Finding your location... <span id="status">checking...</span></p>
<script>
jQuery(function () {
var timeout = (document.location.href.indexOf('test_location') >= 0 ? 100 : 0);
setTimeout(function(){
navigator.geolocation.getCurrentPosition(function(){
jQuery('#status').html("found you!");
});
}, timeout)
});
</script>
Capybara test via selenium in rspec
def simulate_location(lat, lng)
page.driver.browser.execute_script <<-JS
window.navigator.geolocation.getCurrentPosition = function(success){
var position = {"coords" : { "latitude": "#{lat}", "longitude": "#{lng}" }};
success(position);
}
JS
end
it "can use location", :js => true do
visit '/?test_location=true'
simulate_location 20, 20
sleep 0.2
page.should have_content "found you!"
end