Sha256: 3212fd7f04bf5630b27b802e4b2e344b999afe91b1d8486b482a817f04d2df83

Contents?: true

Size: 1.7 KB

Versions: 1

Compression:

Stored size: 1.7 KB

Contents

require File.join(File.dirname(__FILE__), '..', 'og', 'CONFIG.rb')

require 'rubygems'
require 'facets'
require 'test/unit'
require 'ostruct'

require 'og'
require 'glue/taggable'

class TestOgTaggable < Test::Unit::TestCase # :nodoc: all

  class Article
    attr_accessor :title, :body, String
    is Taggable
    
    def initialize(title = nil)
      @title = title
    end
  end

  $og1.manage_classes(Article, Tag)

  def test_all
    a1 = Article.create('Hello')
    a1.tag('great gmosx sexy')
    a1.save
    
    a2 = Article.create('Other')
    a2.tag('gmosx rain')
    a2.save
    
    a3 = Article.create('George')
    a3.tag('phd name')
    a3.save


    assert_equal 6, Tag.count
    assert_equal 3, a1.tags.size 
    assert a1.tag_names.include?('great')
    
    assert a1.tagged_with?('great')
    
    assert_equal false, a1.tagged_with?('photo')
    
    res = Article.find_with_tags('great', 'gmosx')
    assert_equal 1, res.size
    assert_equal 'Hello', res[0].title

    res = Article.find_with_tag('gmosx')
    assert_equal 2, res.size
    res = res.map { |o| o.title }
    assert res.include?('Hello')
    assert res.include?('Other')    

    res = Article.find_with_any_tag('great', 'gmosx', 'phd')
    assert_equal 3, res.size

    a1.delete_all_tags
    assert_equal 0, a1.tags.size
    
    assert_equal 4, Tag.count
    
    Tag.all.each do |tag|
      n = case tag.name
      when 'rain', 'phd', 'name': 1
      when 'gmosx': 1
      else flunk tag.name + ' not expected'
      end
      
      assert n, tag.count
    end
    
=begin
    TODO:
    Article.fing_with_no_tag('gmosx')
    Article.find_by_tags('+name +gmosx -sexy')
    Article.find_by_tags(:with => '', :any => '', :no => '')
=end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
og-0.40.0 test/glue/tc_taggable.rb