Sha256: 896aa67b44145e70f54a2d4a812e9d83bcc38bf70fe3b0aa4564a343973861d3

Contents?: true

Size: 1.87 KB

Versions: 7

Compression:

Stored size: 1.87 KB

Contents

# -*- encoding : utf-8 -*-
require 'spec_helper'

describe ActsAsTaggableOn::Tagging do
  before(:each) do
    @tagging = ActsAsTaggableOn::Tagging.new
  end

  it 'should not be valid with a invalid tag' do
    @tagging.taggable = TaggableModel.create(name: 'Bob Jones')
    @tagging.tag = ActsAsTaggableOn::Tag.new(name: '')
    @tagging.context = 'tags'

    expect(@tagging).to_not be_valid

    expect(@tagging.errors[:tag_id]).to eq(['can\'t be blank'])
  end

  it 'should not create duplicate taggings' do
    @taggable = TaggableModel.create(name: 'Bob Jones')
    @tag = ActsAsTaggableOn::Tag.create(name: 'awesome')

    expect(-> {
      2.times { ActsAsTaggableOn::Tagging.create(taggable: @taggable, tag: @tag, context: 'tags') }
    }).to change(ActsAsTaggableOn::Tagging, :count).by(1)
  end

  it 'should not delete tags of other records' do
    6.times { TaggableModel.create(name: 'Bob Jones', tag_list: 'very, serious, bug') }
    expect(ActsAsTaggableOn::Tag.count).to eq(3)
    taggable = TaggableModel.first
    taggable.tag_list = 'bug'
    taggable.save

    expect(taggable.tag_list).to eq(['bug'])

    another_taggable = TaggableModel.where('id != ?', taggable.id).sample
    expect(another_taggable.tag_list.sort).to eq(%w(very serious bug).sort)
  end

  it 'should destroy unused tags after tagging destroyed' do
    previous_setting = ActsAsTaggableOn.remove_unused_tags
    ActsAsTaggableOn.remove_unused_tags = true
    ActsAsTaggableOn::Tag.destroy_all
    @taggable = TaggableModel.create(name: 'Bob Jones')
    @taggable.update_attribute :tag_list, 'aaa,bbb,ccc'
    @taggable.update_attribute :tag_list, ''
    expect(ActsAsTaggableOn::Tag.count).to eql(0)
    ActsAsTaggableOn.remove_unused_tags = previous_setting
  end

  pending 'context scopes' do
    describe '.by_context'

    describe '.by_contexts'

    describe '.owned_by'

    describe '.not_owned'

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
acts-as-taggable-on-3.5.0 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.4.4 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.4.3 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.4.2 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.4.1 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.4.0 spec/acts_as_taggable_on/tagging_spec.rb
acts-as-taggable-on-3.3.0 spec/acts_as_taggable_on/tagging_spec.rb