Sha256: 9a3f8ecac663cc208410b4562856dd7feaa5d424063fc70b7275cd29ce64e6f1

Contents?: true

Size: 1.25 KB

Versions: 7

Compression:

Stored size: 1.25 KB

Contents

# encoding: UTF-8

require File.expand_path("../helper", __FILE__)

class Post < Ohm::Model
  set :comments, :Comment
end

module Finders
  def rejected
    find(:status => "rejected")
  end
end

class Comment < Ohm::Model
  include Ohm::Scope

  attribute :status
  index :status

  scope do
    def approved
      find(:status => "approved")
    end
  end

  scope Finders
end

test "has a predefined scope" do
  assert defined?(Comment::DefinedScopes)
end

test "allows custom methods for the defined scopes" do
  post = Post.create
  comment = Comment.create(:status => "approved")
  post.comments.key.sadd(comment.id)

  assert post.comments.approved.is_a?(Ohm::MultiSet)
  assert post.comments.approved.include?(comment)
end

test "allows custom methods to be included from a module" do
  post = Post.create
  comment = Comment.create(:status => "rejected")
  post.comments.key.sadd(comment.id)

  assert post.comments.rejected.is_a?(Ohm::MultiSet)
  assert post.comments.rejected.include?(comment)
end

test "works with the main Comment.all collection as well" do
  approved = Comment.create(:status => "approved")
  rejected = Comment.create(:status => "rejected")


  assert Comment.all.approved.include?(approved)
  assert Comment.all.rejected.include?(rejected)
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ohm-contrib-1.2 test/scope.rb
ohm-contrib-1.1.0 test/scope.rb
ohm-contrib-1.0.1 test/scope.rb
ohm-contrib-1.0.0 test/scope.rb
ohm-contrib-1.0.0.rc5 test/scope.rb
ohm-contrib-1.0.0.rc4 test/scope.rb
ohm-contrib-1.0.0.rc3 test/scope.rb