Sha256: bd66864d0f57507e6ce86f4d7ca0afcbc3fc109dfcdf5bc90176df1e9234f4e1

Contents?: true

Size: 1.49 KB

Versions: 1

Compression:

Stored size: 1.49 KB

Contents

require 'spec_helper'

describe '#geopos' do
  let(:key) { 'cities' }

  context 'with existing key' do
    let(:san_francisco) { [-122.5076404, 37.757815, 'SF'] }
    let(:los_angeles) { [-118.6919259, 34.0207305, 'LA'] }

    before { @redises.geoadd(key, *san_francisco, *los_angeles) }

    after { @redises.zrem(key, %w[SF LA]) }

    context 'with existing points only' do
      let(:expected_result) do
        [
          %w[-122.5076410174369812 37.75781598995183685],
          %w[-118.69192510843276978 34.020729570911179]
        ]
      end

      it 'returns decoded coordinates pairs for each point' do
        coords = @redises.geopos(key, 'SF', 'LA')
        expect(coords).to be == expected_result
      end

      context 'with non-existing points only' do
        it 'returns array filled with nils' do
          coords = @redises.geopos(key, 'FF', 'FA')
          expect(coords).to be == [nil, nil]
        end
      end

      context 'with both existing and non-existing points' do
        let(:expected_result) do
          [%w[-122.5076410174369812 37.75781598995183685], nil]
        end

        it 'returns mixture of nil and coordinates pair' do
          coords = @redises.geopos(key, 'SF', 'FA')
          expect(coords).to be == expected_result
        end
      end
    end
  end

  context 'with non-existing key' do
    before { @redises.del(key) }

    it 'returns empty array' do
      coords = @redises.geopos(key, 'SF', 'LA')
      expect(coords).to be == [nil, nil]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mock_redis-0.19.0 spec/commands/geopos_spec.rb