Sha256: 7ca6e99724e75771b9d2694a012709a63714d50455d0883a9bcf5c206d39826f

Contents?: true

Size: 1.48 KB

Versions: 1

Compression:

Stored size: 1.48 KB

Contents

require_relative '../../../../test_helper'

module Troo
  describe Retrieval::Member do
    let(:described_class) { Retrieval::Member }
    let(:full_name) { 'My Test Member' }

    before { @member = Fabricate(:member, full_name: full_name) }
    after  { database_cleanup }

    describe '.all' do
      subject { described_class.all }

      it 'retrieves all locally stored members' do
        subject.size.must_equal 1
      end
    end

    describe '.retrieve' do
      subject { described_class.retrieve(id) }

      context 'local retrieval by database ID' do
        let(:id) { @member.id }

        it 'returns the correct member' do
          subject.full_name.must_equal('My Test Member')
        end
      end

      context 'local retrieval by external ID' do
        let(:id) { '5195fdb5a8c01a2318004f5d' }

        it 'returns the correct member' do
          subject.full_name.must_equal('My Test Member')
        end
      end

      context 'remote retrieval by either ID' do
        let(:id) { '526d_remote_member_005259' }
        let(:full_name) { 'My Remote Test Member' }

        before { External::Member.stubs(:fetch).returns([@member]) }

        it 'returns the correct member' do
          subject.full_name.must_equal('My Remote Test Member')
        end
      end

      context 'when the ID cannot be found' do
        let(:id) { 'not_found_id' }

        before { External::Member.stubs(:fetch).returns([]) }

        it { subject.must_equal(nil) }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
troo-0.0.8 test/lib/troo/models/retrieval/member_test.rb