From d071ea93814075491585770ff2bad4a1e2e6bf9d Mon Sep 17 00:00:00 2001 From: Jonathan Kolyer Date: Sun, 3 Nov 2013 07:10:21 -0600 Subject: [PATCH] vrfs-774: added testing for populating user lat/lng when creating a connection --- ruby/lib/jam_ruby/models/connection.rb | 5 +++++ ruby/lib/jam_ruby/models/user.rb | 10 +++++----- ruby/spec/jam_ruby/models/connection_spec.rb | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/ruby/lib/jam_ruby/models/connection.rb b/ruby/lib/jam_ruby/models/connection.rb index d66cfbd5a..62935f4e3 100644 --- a/ruby/lib/jam_ruby/models/connection.rb +++ b/ruby/lib/jam_ruby/models/connection.rb @@ -21,6 +21,7 @@ module JamRuby validates :as_musician, :inclusion => {:in => [true, false]} validate :can_join_music_session, :if => :joining_session? after_save :require_at_least_one_track_when_in_session, :if => :joining_session? + after_create :did_create include AASM IDLE_STATE = :idle @@ -112,6 +113,10 @@ module JamRuby return self.music_session.users.exists?(user) end + def did_create + self.user.update_lat_lng(self.ip_address) if self.user && self.ip_address + end + private def require_at_least_one_track_when_in_session if tracks.count == 0 diff --git a/ruby/lib/jam_ruby/models/user.rb b/ruby/lib/jam_ruby/models/user.rb index e24ff6b9a..b2c07ff65 100644 --- a/ruby/lib/jam_ruby/models/user.rb +++ b/ruby/lib/jam_ruby/models/user.rb @@ -984,31 +984,31 @@ module JamRuby end def update_lat_lng(ip_addy=nil) - yn = false if provides_location? # ip_addy argument ignored in this case + return false unless ip_addy.nil? # do nothing if attempting to set latlng from an ip address query = { :city => self.city } query[:region] = self.state unless self.state.blank? query[:country] = self.country unless self.country.blank? if geo = MaxMindGeo.where(query).limit(1).first if geo.lat && geo.lng && (self.lat != geo.lat || self.lng != geo.lng) self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) - yn = true + return true end end elsif ip_addy if geo = MaxMindGeo.ip_lookup(ip_addy) if self.lat != geo.lat || self.lng != geo.lng self.update_attributes({ :lat => geo.lat, :lng => geo.lng }) - yn = true + return true end end else if self.lat || self.lng self.update_attributes({ :lat => nil, :lng => nil }) - yn = true + return true end end - yn + false end # devise compatibility diff --git a/ruby/spec/jam_ruby/models/connection_spec.rb b/ruby/spec/jam_ruby/models/connection_spec.rb index 29d23f476..e40db1611 100644 --- a/ruby/spec/jam_ruby/models/connection_spec.rb +++ b/ruby/spec/jam_ruby/models/connection_spec.rb @@ -33,4 +33,18 @@ describe Connection do connection.destroyed?.should be_true end + it 'updates user lat/lng' do + uu = FactoryGirl.create(:user) + uu.lat.should == nil + msess = FactoryGirl.create(:music_session, :creator => uu) + geocode = FactoryGirl.create(:geocoder) + connection = FactoryGirl.create(:connection, + :user => uu, + :music_session => msess, + :ip_address => "1.1.1.1", + :client_id => "1") + user.lat.should == geocode.lat + user.lng.should == geocode.lng + end + end