Sha256: f071cfbb3194c228e646259194d37c342aa14e881b0f4849098bbce6813094d8

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

require 'spec_helper'

###
# Shared examples for LikeSystem::Likee
###
shared_examples_for LikeSystem::Likee do
  ###
  # Let likee be DummyLikee.create
  ###
  let(:likee) { DummyLikee.create }

  ###
  # Let liker be DummyLiker.create
  ###
  let(:liker) { DummyLiker.create }

  ###
  # Describes associations
  ###
  describe "associations" do
    ###
    # Should have many likers
    ###
    it "should have many likers" do
      should have_many(:likers)
    end
  end

  ###
  # Describes class methods
  ###
  describe "class methods" do
    ###
    # Should be a likee
    ###
    it "should be a likee" do
      expect(likee.is_likee?).to equal(true)
    end

    ###
    # Should be liked by a liker
    ###
    it "should specify if is liked by a liker" do
      expect(LikeSystem::Like).to receive(:likes?).with(liker, likee) { true }

      expect(likee.liked_by?(liker)).to equal(true)
    end

    ###
    # Should scope likers filtered by liker type
    ###
    it "should scope likers filtered by liker type" do
      scope = LikeSystem::Like.scope_by_likee(likee).scope_by_liker_type(DummyLiker)

      expect(likee.likers_by(DummyLiker)).to eq(scope)
    end
  end
end

###
# Describes DummyLikee
###
describe DummyLikee do
  ###
  # It behaves like LikeSystem::Likee
  ###
  it_behaves_like LikeSystem::Likee
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
like_system-0.0.7 spec/like_system/likee_spec.rb
like_system-0.0.6 spec/like_system/likee_spec.rb