diff --git a/Changelog.md b/Changelog.md index 07d1ae039d9..c8217d44486 100644 --- a/Changelog.md +++ b/Changelog.md @@ -11,6 +11,10 @@ ## Features +# 0.1.0.1 + +* Regression fix: 500 for deleted reshares introduced by the locator +* Federate locations # 0.1.0.0 diff --git a/app/models/location.rb b/app/models/location.rb index b3896c32e43..a1fb3057229 100644 --- a/app/models/location.rb +++ b/app/models/location.rb @@ -1,12 +1,17 @@ class Location < ActiveRecord::Base - - before_validation :split_coords, :on => :create + before_validation :split_coords, on: :create + validates_presence_of :lat, :lng attr_accessor :coordinates + include Diaspora::Federated::Base + xml_attr :address + xml_attr :lat + xml_attr :lng + belongs_to :status_message def split_coords - coordinates.present? ? (self.lat, self.lng = coordinates.split(',')) : false + self.lat, self.lng = coordinates.split(',') if coordinates.present? end end diff --git a/app/models/reshare.rb b/app/models/reshare.rb index 1815badb479..5b3c5341bb8 100644 --- a/app/models/reshare.rb +++ b/app/models/reshare.rb @@ -80,7 +80,7 @@ def absolute_root end def address - absolute_root.location.try(:address) + absolute_root.try(:location).try(:address) end private diff --git a/app/models/status_message.rb b/app/models/status_message.rb index c46c3e3d364..0c95ebc0163 100644 --- a/app/models/status_message.rb +++ b/app/models/status_message.rb @@ -15,6 +15,7 @@ class StatusMessage < Post xml_name :status_message xml_attr :raw_message xml_attr :photos, :as => [Photo] + xml_attr :location, :as => Location has_many :photos, :dependent => :destroy, :foreign_key => :status_message_guid, :primary_key => :guid diff --git a/spec/models/status_message_spec.rb b/spec/models/status_message_spec.rb index d51a7713b31..b160ae29433 100644 --- a/spec/models/status_message_spec.rb +++ b/spec/models/status_message_spec.rb @@ -329,6 +329,29 @@ end end end + + context 'with a location' do + before do + @message.location = Location.new(coordinates: "1, 2").tap(&:save) + @xml = @message.to_xml.to_s + end + + it 'serializes the location' do + @xml.should include "location" + @xml.should include "lat" + @xml.should include "lng" + end + + describe ".from_xml" do + before do + @marshalled = StatusMessage.from_xml(@xml) + end + + it 'marshals the location' do + @marshalled.location.should be_present + end + end + end end describe '#after_dispatch' do