Skip to content

Commit

Permalink
added minitest tests, added 2 entities in order to handle compability…
Browse files Browse the repository at this point in the history
… between rails versions
  • Loading branch information
acnalesso committed Jul 12, 2013
1 parent 558340a commit b05aa79
Show file tree
Hide file tree
Showing 10 changed files with 136 additions and 74 deletions.
5 changes: 3 additions & 2 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ end
# Rake libs default is lib
# libs << path to load test_helper, etc..
Rake::TestTask.new do |t|
t.libs << 'tests/spec'
t.pattern = FileList['tests/spec/*_spec.rb']
t.libs << "tests/spec"
t.pattern = "tests/spec/**/*_spec.rb"
t.test_files = FileList["tests/spec/**/*_spec.rb"]
t.verbose = true
end
2 changes: 1 addition & 1 deletion impressionist.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Gem::Specification.new do |s|
# Capybara has dropped support for Ruby 1.8.7 onwards version 2.0.3
s.add_development_dependency 'capybara', '>= 2.0.3'
s.add_development_dependency 'rake', '>= 0.9'
s.add_development_dependency 'rails', '3.1.12'
s.add_development_dependency 'rails', '3.2.12'
s.add_development_dependency 'rdoc', '>= 2.4.2'
s.add_development_dependency 'rspec-rails'
s.add_development_dependency 'simplecov'
Expand Down
11 changes: 5 additions & 6 deletions lib/impressionist/load.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
require "impressionist/engine"
require 'impressionist/engine'

require "impressionist/set_up_association"
require 'impressionist/setup_association'

require "impressionist/counter_cache"
require 'impressionist/counter_cache'

require "impressionist/update_counters"

require "impressionist/rails_toggle"
require 'impressionist/update_counters'

require 'impressionist/rails_toggle'
7 changes: 5 additions & 2 deletions lib/impressionist/models/active_record/impression.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
# Responsability
## See CounterCache TODO: extract it into a class
# * be able to update_counters
# * log an error if imps_id and imps_type can not be found
# asks updatable? whether it may or may not be updated
# * asks updatable? whether it may or may not be updated
# FIX exeception raising when no imps_id is found

class Impression < ActiveRecord::Base

include Impressionist::CounterCache
include Impressionist::SetUpAssociation
# sets belongs_to and attr_accessible
Impressionist::SetupAssociation.new(self).set

after_save :impressionable_counter_cache_updatable?

Expand Down
22 changes: 9 additions & 13 deletions lib/impressionist/rails_toggle.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,21 @@ module Impressionist
# Responsability
# Toggles between rails > 3.1 < 4
# In order to make attr_accessible available in a rails app < 4
class RailsToggle

attr_reader :r_version

def initialize(version)
@r_version = version.to_s
end

# if Rails 4, it does not include attr_accessible
# and it returns false
def valid?
greater_than_4? ? false : true
class RailsToggle
# decides where or not to include attr_accessible
def should_include?
ask_rails || false
end

private

def greater_than_4?
r_version == "4" ? true : false
# returns false if rails >= 4
# true if rails < 4
def ask_rails
::Rails::VERSION::MAJOR.to_i >= 4 ? false : true
end

end

end
28 changes: 0 additions & 28 deletions lib/impressionist/set_up_association.rb

This file was deleted.

48 changes: 48 additions & 0 deletions lib/impressionist/setup_association.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
module Impressionist
# Impressionist::SetupAssociation.new(entity).set
class SetupAssociation
def initialize(receiver)
@receiver = receiver
end

# True or False
# Note toggle returns false if rails >= 4
def include_attr_acc?
toggle && make_accessible
end

def define_belongs_to
receiver.belongs_to(:impressionable, :polymorphic => true)
end

# returns done if thruthy
def set
:done if (include_attr_acc? && define_belongs_to)
end

private
attr_reader :receiver, :toggle

def make_accessible
receiver.
attr_accessible(:impressionable_type,
:impressionable_id,
:controller_name,
:request_hash,
:session_hash,
:action_name,
:ip_address,
:view_name,
:referrer,
:message,
:user_id)
end

def toggle
t = RailsToggle.new
t.should_include?
end
end
end


File renamed without changes.
32 changes: 10 additions & 22 deletions tests/spec/rails_toggle_spec.rb
Original file line number Diff line number Diff line change
@@ -1,38 +1,26 @@
# Responsability
# Test whether rails version > 4
# includes attr_accessible if < 4
require 'test_helper.rb'
require 'minitest_helper'
require 'impressionist/rails_toggle'

module Impressionist
describe RailsToggle do

describe "Rails 4" do
before do
@toggle = RailsToggle.new("4")
end

it "return current rails version" do
@toggle.r_version.must_equal "4"
end

it "must not load attr_accessible" do
@toggle.valid?.must_equal false
end
before {
@toggle = RailsToggle.new
}

end

describe "Rails 3.1.x" do
describe "Rails 4" do

before do
@toggle = RailsToggle.new("3")
# see your_minitest_path/lib/minitest/mock.rb
it "must not include attr_accessible" do
@toggle.stub :ask_rails, false do
refute @toggle.should_include?
end
end

it "includes" do
@toggle.valid?.must_equal true
end
end

end

end
55 changes: 55 additions & 0 deletions tests/spec/setup_association_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
require 'minitest_helper'
require 'impressionist/setup_association'

module Impressionist
describe SetupAssociation do

let(:mock) { Minitest::Mock.new }
let(:set_up) { SetupAssociation.new(mock) }

before do
# expects attr_accessible to return true
# and pass 11 arguments
mock.
expect(:attr_accessible, true) do |args|
args.size == 11
end

end

describe "attr_accessible" do

it "includes" do
set_up.stub :toggle, true do
set_up.include_attr_acc?.must_equal true

mock.verify
end
end

end

describe "belongs_to" do

it "active_record" do
mock.expect(:belongs_to, true, [Symbol, Hash])
set_up.define_belongs_to.must_equal true
end

end

describe "#set" do

it "sets an association" do
def set_up.include_attr_acc?; true; end

set_up.stub(:define_belongs_to, true) {
set_up.set.must_equal :done
}

end

end

end
end

0 comments on commit b05aa79

Please sign in to comment.