12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- require 'rails_helper'
- describe Location do
- let(:location) {
- Location.new(
- lat: BigDecimal('2.0'),
- lng: BigDecimal('3.0'),
- radius: 300,
- speed: 2,
- course: 30)
- }
- it "converts values to Float" do
- expect(location.lat).to be_a Float
- expect(location.lat).to eq 2.0
- expect(location.lng).to be_a Float
- expect(location.lng).to eq 3.0
- expect(location.radius).to be_a Float
- expect(location.radius).to eq 300.0
- expect(location.speed).to be_a Float
- expect(location.speed).to eq 2.0
- expect(location.course).to be_a Float
- expect(location.course).to eq 30.0
- end
- it "provides hash-style access to its properties with both symbol and string keys" do
- expect(location[:lat]).to be_a Float
- expect(location[:lat]).to eq 2.0
- expect(location['lat']).to be_a Float
- expect(location['lat']).to eq 2.0
- end
- it "has a convenience accessor for combined latitude and longitude" do
- expect(location.latlng).to eq "2.0,3.0"
- end
- it "does not allow hash-style assignment" do
- expect {
- location[:lat] = 2.0
- }.to raise_error(NoMethodError)
- end
- it "ignores invalid values" do
- location2 = Location.new(
- lat: 2,
- lng: 3,
- radius: -1,
- speed: -1,
- course: -1)
- expect(location2.radius).to be_nil
- expect(location2.speed).to be_nil
- expect(location2.course).to be_nil
- end
- it "considers a location empty if either latitude or longitude is missing" do
- expect(Location.new.empty?).to be_truthy
- expect(Location.new(lat: 2, radius: 1).present?).to be_falsy
- expect(Location.new(lng: 3, radius: 1).present?).to be_falsy
- end
- it "is droppable" do
- {
- '{{location.lat}}' => '2.0',
- '{{location.latitude}}' => '2.0',
- '{{location.lng}}' => '3.0',
- '{{location.longitude}}' => '3.0',
- '{{location.latlng}}' => '2.0,3.0',
- }.each { |template, result|
- expect(Liquid::Template.parse(template).render('location' => location.to_liquid)).to eq(result),
- "expected #{template.inspect} to expand to #{result.inspect}"
- }
- end
- end
|