Sha256: 3096fc0b951dd9ec554adb4f704902a55f1460964118da1f319c36f0c940c092

Contents?: true

Size: 1.49 KB

Versions: 5

Compression:

Stored size: 1.49 KB

Contents

require 'rubygems'
require 'test/unit'
require 'shoulda'
begin
  require 'redgreen'
rescue LoadError
end

require 'active_support'
require 'active_record'

$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'bitmask-attribute'
require File.dirname(__FILE__) + '/../rails/init'

# ActiveRecord::Base.logger = Logger.new(STDOUT)

ActiveRecord::Base.establish_connection(
  :adapter  => 'sqlite3',
  :database => ':memory:'
)

ActiveRecord::Schema.define do 
  create_table :campaigns do |t|
    t.integer :company_id
    t.integer :medium, :misc, :Legacy
  end
  create_table :companies do |t|
    t.string :name
  end
end

class Company < ActiveRecord::Base
  has_many :campaigns
end

# Pseudo model for testing purposes
class Campaign < ActiveRecord::Base
  belongs_to :company
  bitmask :medium, :as => [:web, :print, :email, :phone]
  bitmask :misc, :as => %w(some useless values) do
    def worked?
      true
    end
  end
  bitmask :Legacy, :as => [:upper, :case]
end

class Test::Unit::TestCase
  
  def assert_unsupported(&block)
    assert_raises(ArgumentError, &block)
  end
  
  def assert_stored(record, *values)
    values.each do |value|
      assert record.medium.any? { |v| v.to_s == value.to_s }, "Values #{record.medium.inspect} does not include #{value.inspect}"
    end
    full_mask = values.inject(0) do |mask, value|
      mask | Campaign.bitmasks[:medium][value]
    end
    assert_equal full_mask, record.medium.to_i
  end
  
end

Version data entries

5 entries across 5 versions & 3 rubygems

Version Path
gabrielhase-bitmask-attribute-1.0.2 test/test_helper.rb
gabrielhase-bitmask-attribute-1.0.1 test/test_helper.rb
gabrielhase-bitmask-attribute-0.0.0 test/test_helper.rb
r3trofitted-bitmask-attribute-1.1.0 test/test_helper.rb
bitmask-attribute-1.1.0 test/test_helper.rb