Sha256: 4ac722420bcdb370b36d9cc1795b47029bca4fc644c361a8be3e796fb1ae8cd9

Contents?: true

Size: 1.56 KB

Versions: 3

Compression:

Stored size: 1.56 KB

Contents

require 'spec_helper'

describe Gaku::Campus do

  describe 'concerns' do
    it_behaves_like 'contactable'
    it_behaves_like 'avatarable'
  end

  describe 'relations' do
    it { should belong_to :school }
    it { should have_one :address }
  end

	describe 'validations' do
    it { should validate_presence_of :name }
    it { should validate_presence_of :school }
	end

  describe '#to_s' do
    let(:campus) { build(:campus) }
    specify { campus.to_s.should eq campus.name }
  end

  context 'counter_cache' do

    let!(:campus) { create(:campus) }

    context 'addresses_count' do

      let(:address) { build(:address) }
      let(:campus_with_address) { create(:campus, :with_one_address) }

      it 'increments addresses_count' do
        expect do
          campus.address = address
        end.to change { campus.reload.addresses_count }.by(1)
      end

      it 'decrements addresses_count' do
        expect do
          campus_with_address.address.destroy
        end.to change { campus_with_address.reload.addresses_count }.by(-1)
      end
    end

    context 'contacts_count' do

      let(:contact) { build(:contact) }
      let(:campus_with_contact) { create(:campus, :with_contact) }

      it 'increments contacts_count' do
        expect do
          campus.contacts << contact
        end.to change { campus.reload.contacts_count }.by(1)
      end

      it 'decrements contacts_count' do
        expect do
          campus_with_contact.contacts.last.destroy
        end.to change { campus_with_contact.reload.contacts_count }.by(-1)
      end
    end


  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
gaku-0.0.3 core/spec/models/campus_spec.rb
gaku-0.0.2 core/spec/models/campus_spec.rb
gaku-0.0.1 core/spec/models/campus_spec.rb