Sha256: 9b9225102583c055240374107377768f62fc6441c5be55a89a9318d36e0afa5b

Contents?: true

Size: 1.99 KB

Versions: 4

Compression:

Stored size: 1.99 KB

Contents

require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")

describe ActsAsArchive::Base::Table do
  
  before(:all) do
    establish_test_db
    Article.create_archive_table
  end
  
  describe 'create_archive_table' do
    
    before(:all) do
      @article_columns = connection.columns("articles").collect(&:name)
      @archive_columns = connection.columns("archived_articles").collect(&:name)
    end
    
    it "should create an archive table" do
      connection.table_exists?("archived_articles").should == true
    end
    
    it "should create an archive table with the same structure as the original table" do
      @article_columns.each do |col|
        @archive_columns.include?(col).should == true
      end
    end
    
    it "should add a deleted_at column to the archive table" do
      (@archive_columns - @article_columns).should == [ 'deleted_at' ]
    end
  end
  
  describe 'create_archive_indexes' do
    
    before(:all) do
      Article.create_archive_indexes
    end
    
    it "should create archive indexes" do
      indexes.should == [ "id", "deleted_at" ]
    end
    
    it "should destroy archive indexes" do
      Article.class_eval { acts_as_archive }
      Article.create_archive_indexes
      indexes.should == []
    end
  end
  
  describe 'migrate_from_acts_as_paranoid' do
    
    before(:all) do
      connection.add_column(:articles, :deleted_at, :datetime)
      Article.reset_column_information
    end
    
    before(:each) do
      connection.execute("DELETE FROM #{Article::Archive.table_name}")
    end
    
    it "should move deleted records to the archive" do
      create_records(Article, :deleted_at => Time.now.utc)
      Article.migrate_from_acts_as_paranoid
      Article.count.should == 0
      Article::Archive.count.should == 5
    end
    
    it "should not move non-deleted records to the archive" do
      create_records
      Article.migrate_from_acts_as_paranoid
      Article.count.should == 5
      Article::Archive.count.should == 0
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
acts_as_archive-0.2.1 spec/acts_as_archive/base/table_spec.rb
acts_as_archive-0.2.0 spec/acts_as_archive/base/table_spec.rb
acts_as_archive-0.1.6 spec/acts_as_archive/base/table_spec.rb
acts_as_archive-0.1.4 spec/acts_as_archive/base/table_spec.rb