Skip to content

Commit

Permalink
federate location
Browse files Browse the repository at this point in the history
  • Loading branch information
jhass authored and Dennis Schubert committed May 20, 2013
1 parent e33f4e6 commit 286e948
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 3 deletions.
11 changes: 8 additions & 3 deletions app/models/location.rb
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions app/models/status_message.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
23 changes: 23 additions & 0 deletions spec/models/status_message_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 286e948

Please sign in to comment.