Skip to content

Commit

Permalink
Some renaming and rdoc to make things clearer. [#44]
Browse files Browse the repository at this point in the history
  • Loading branch information
marnen committed Oct 22, 2009
1 parent ddfcf81 commit 1f0d2d8
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 24 deletions.
6 changes: 4 additions & 2 deletions vendor/plugins/acts_as_addressed/lib/acts_as_addressed.rb
Expand Up @@ -2,17 +2,19 @@
module Acts #:nodoc:
module Addressed #:nodoc:
def self.included(base)
base.extend ClassMethods
base.extend SingletonMethods
end

module ClassMethods
# These methods extend ActiveRecord::Base.
module SingletonMethods
# Includes the acts_as_addressed structure in the model it's called on.
def acts_as_addressed
composed_of :address, :mapping => %w(street street2 city state_id zip coords).collect{|x| [x, x.gsub(/_id$/, '')]}
include InstanceMethods
end
end

# These methods are available as instance methods on any model for which acts_as_addressed has been called.
module InstanceMethods
# Nil-safe country accessor.
def country
Expand Down
44 changes: 22 additions & 22 deletions vendor/plugins/acts_as_addressed/spec/acts_as_addressed_spec.rb
@@ -1,49 +1,49 @@
require File.dirname(__FILE__) + '/spec_helper'

describe Acts::Addressed, "inclusion" do
it "should extend ClassMethods when module is included" do
@class = Class.new
@class.should_receive(:extend).with(Acts::Addressed::ClassMethods)
@class.send :include, Acts::Addressed
it "should extend SingletonMethods when module is included" do
@active_record = Class.new
@active_record.should_receive(:extend).with(Acts::Addressed::SingletonMethods)
@active_record.send :include, Acts::Addressed
end
end

describe Acts::Addressed::ClassMethods do
describe Acts::Addressed::SingletonMethods do
describe "acts_as_addressed" do
it "should be a valid method" do
Acts::Addressed::ClassMethods.instance_method(:acts_as_addressed).should_not be_nil
Acts::Addressed::SingletonMethods.instance_method(:acts_as_addressed).should_not be_nil
end

describe "effects on model" do
before :each do
@base = Class.new
@base.send :include, Acts::Addressed
@class = Class.new @base
@class.stub!(:composed_of)
@active_record = Class.new
@active_record.send :include, Acts::Addressed
@model = Class.new @active_record
@model.stub!(:composed_of)
end

it "should create an Address aggregation" do
@class.should_receive(:composed_of).with(:address, :mapping => %w(street street2 city state_id zip coords).collect{|x| [x, x.gsub(/_id$/, '')]})
@class.acts_as_addressed
@model.should_receive(:composed_of).with(:address, :mapping => %w(street street2 city state_id zip coords).collect{|x| [x, x.gsub(/_id$/, '')]})
@model.acts_as_addressed
end

it "should include InstanceMethods in the model" do
im = Acts::Addressed::InstanceMethods
@class.should_receive(:include).with(im)
@class.acts_as_addressed
@model.should_receive(:include).with(im)
@model.acts_as_addressed
end
end
end
end

describe Acts::Addressed::InstanceMethods do
before :each do
@base = Class.new
@base.send :include, Acts::Addressed
@class = Class.new @base
@class.stub!(:composed_of)
@class.acts_as_addressed
@model = @class.new
@active_record = Class.new
@active_record.send :include, Acts::Addressed
@model = Class.new @active_record
@model.stub!(:composed_of)
@model.acts_as_addressed
@instance = @model.new
end

describe "country" do
Expand All @@ -54,8 +54,8 @@
it "should proxy from address" do
@address = mock 'Address'
@address.should_receive :country
@model.should_receive(:address).and_return(@address)
@model.country
@instance.should_receive(:address).and_return(@address)
@instance.country
end
end
end

0 comments on commit 1f0d2d8

Please sign in to comment.