seanhussey-woulda 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +2 -2
- data/lib/woulda.rb +8 -0
- data/lib/woulda/acts_as_ferret.rb +6 -0
- data/lib/woulda/acts_as_ferret/macros.rb +23 -0
- data/lib/woulda/acts_as_list.rb +6 -0
- data/lib/woulda/acts_as_list/macros.rb +19 -0
- data/lib/woulda/acts_as_paranoid.rb +6 -0
- data/lib/woulda/acts_as_paranoid/macros.rb +39 -0
- data/lib/woulda/acts_as_taggable_on_steroids.rb +6 -0
- data/lib/woulda/acts_as_taggable_on_steroids/macros.rb +17 -0
- data/lib/woulda/attachment_fu.rb +6 -0
- data/lib/woulda/attachment_fu/macros.rb +27 -0
- data/lib/woulda/enumerations_mixin.rb +6 -0
- data/lib/woulda/enumerations_mixin/macros.rb +26 -0
- data/lib/woulda/paperclip.rb +6 -0
- data/lib/woulda/paperclip/macros.rb +21 -0
- data/lib/woulda/will_paginate.rb +6 -0
- data/lib/woulda/will_paginate/macros.rb +18 -0
- data/shoulda_macros/woulda_macros.rb +1 -0
- metadata +28 -2
- data/shoulda_macros/should_act_as_paranoid.rb +0 -1
data/Rakefile
CHANGED
@@ -5,12 +5,12 @@ require 'rake/gempackagetask'
|
|
5
5
|
|
6
6
|
spec = Gem::Specification.new do |s|
|
7
7
|
s.name = "woulda"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
s.summary = "woulda is a home for shoulda macros that don't belong in the main shoulda library"
|
10
10
|
s.homepage = "http://github.com/seanhussey/woulda"
|
11
11
|
s.rubyforge_project = "woulda"
|
12
12
|
|
13
|
-
s.files = FileList["[A-Z]*", "{shoulda_macros}/**/*"]
|
13
|
+
s.files = FileList["[A-Z]*", "{shoulda_macros}/**/*", "lib/**/*"]
|
14
14
|
|
15
15
|
# s.has_rdoc = true
|
16
16
|
# s.extra_rdoc_files = ["README.rdoc", "CONTRIBUTION_GUIDELINES.rdoc"]
|
data/lib/woulda.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
require 'woulda/acts_as_ferret' if defined? ActsAsFerret
|
2
|
+
require 'woulda/acts_as_list' if defined? ActiveRecord::Acts::List
|
3
|
+
require 'woulda/acts_as_paranoid' if defined? Caboose::Acts::Paranoid
|
4
|
+
require 'woulda/acts_as_taggable_on_steroids' if defined? ActiveRecord::Acts::Taggable
|
5
|
+
require 'woulda/attachment_fu' if defined? Technoweenie::AttachmentFu
|
6
|
+
require 'woulda/enumerations_mixin' if defined? ActiveRecord::Acts::Enumerated
|
7
|
+
require 'woulda/paperclip' if defined? Paperclip
|
8
|
+
require 'woulda/will_paginate' if defined? WillPaginate
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Woulda
|
2
|
+
module ActsAsFerret
|
3
|
+
module Macros
|
4
|
+
# should_act_as_ferret :any, :fields, :i_may, :have, :specified
|
5
|
+
def should_act_as_ferret(*fields)
|
6
|
+
klass = self.name.gsub(/Test$/, '').constantize
|
7
|
+
|
8
|
+
should "include ActsAsFerret methods" do
|
9
|
+
assert klass.extended_by.include?(ActsAsFerret::ClassMethods)
|
10
|
+
assert klass.include?(ActsAsFerret::InstanceMethods)
|
11
|
+
assert klass.include?(ActsAsFerret::MoreLikeThis::InstanceMethods)
|
12
|
+
assert klass.include?(ActsAsFerret::ResultAttributes)
|
13
|
+
end
|
14
|
+
|
15
|
+
fields.each do |f|
|
16
|
+
should "create an index for field named #{f}" do
|
17
|
+
assert klass.aaf_configuration[:fields].include?(f)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Woulda
|
2
|
+
module ActsAsList
|
3
|
+
module Macros
|
4
|
+
def should_act_as_list
|
5
|
+
klass = self.name.gsub(/Test$/, '').constantize
|
6
|
+
|
7
|
+
context "To support acts_as_list" do
|
8
|
+
should_have_db_column('position', :type => :integer)
|
9
|
+
end
|
10
|
+
|
11
|
+
should "include ActsAsList methods" do
|
12
|
+
assert klass.include?(ActiveRecord::Acts::List::InstanceMethods)
|
13
|
+
end
|
14
|
+
|
15
|
+
should_have_instance_methods :acts_as_list_class, :position_column, :scope_condition
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Woulda
|
2
|
+
module ActsAsParanoid
|
3
|
+
module Macros
|
4
|
+
def should_act_as_paranoid
|
5
|
+
klass = model_class
|
6
|
+
should_have_db_column :deleted_at
|
7
|
+
|
8
|
+
context "A #{klass.name}" do
|
9
|
+
should "be paranoid (it will not be deleted from the database)" do
|
10
|
+
assert klass.paranoid?
|
11
|
+
assert klass.included_modules.include?(Caboose::Acts::Paranoid)
|
12
|
+
end
|
13
|
+
|
14
|
+
should "not have a value for deleted_at" do
|
15
|
+
assert object = klass.find(:first)
|
16
|
+
assert_nil object.deleted_at
|
17
|
+
end
|
18
|
+
|
19
|
+
context "when destroyed" do
|
20
|
+
setup do
|
21
|
+
assert object = klass.find(:first), "This context requires there to be an existing #{klass}"
|
22
|
+
@deleted_id = object.id
|
23
|
+
object.destroy
|
24
|
+
end
|
25
|
+
|
26
|
+
should "not be found" do
|
27
|
+
assert_raise(ActiveRecord::RecordNotFound) { klass.find(@deleted_id) }
|
28
|
+
end
|
29
|
+
|
30
|
+
should "still exist in the database" do
|
31
|
+
deleted_object = klass.find_with_deleted(@deleted_id)
|
32
|
+
assert_not_nil deleted_object.deleted_at
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Woulda
|
2
|
+
module ActsAsTaggableOnSteroids
|
3
|
+
module Macros
|
4
|
+
def should_act_as_taggable_on_steroids
|
5
|
+
klass = self.name.gsub(/Test$/, '').constantize
|
6
|
+
|
7
|
+
should "include ActsAsTaggableOnSteroids methods" do
|
8
|
+
assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::ClassMethods)
|
9
|
+
assert klass.extended_by.include?(ActiveRecord::Acts::Taggable::SingletonMethods)
|
10
|
+
assert klass.include?(ActiveRecord::Acts::Taggable::InstanceMethods)
|
11
|
+
end
|
12
|
+
|
13
|
+
should_have_many :taggings, :tags
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Woulda
|
2
|
+
module AttachmentFu
|
3
|
+
module Macros
|
4
|
+
def should_have_attachment(options = {})
|
5
|
+
klass = model_class
|
6
|
+
|
7
|
+
should_have_db_columns :size, :content_type, :filename
|
8
|
+
if options[:content_type] == :image
|
9
|
+
should_have_db_columns :height, :width
|
10
|
+
end
|
11
|
+
|
12
|
+
should "define AttachmentFu class methods" do
|
13
|
+
# breakpoint
|
14
|
+
class_modules = (class << klass; included_modules; end)
|
15
|
+
assert class_modules.include?(Technoweenie::AttachmentFu::ClassMethods),
|
16
|
+
"#{klass} doesn't define AttachmentFu class methods"
|
17
|
+
end
|
18
|
+
|
19
|
+
should "define AttachmentFu instance methods" do
|
20
|
+
instance_modules = klass.included_modules
|
21
|
+
assert instance_modules.include?(Technoweenie::AttachmentFu::InstanceMethods),
|
22
|
+
"#{klass} doesn't define AttachmentFu instance methods"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Woulda
|
2
|
+
module EnumerationsMixin
|
3
|
+
module Macros
|
4
|
+
def should_act_as_enumerated(options = {})
|
5
|
+
klass = model_class
|
6
|
+
|
7
|
+
should_have_db_columns :name
|
8
|
+
|
9
|
+
should "define Enumerated macro methods" do
|
10
|
+
class_modules = (class << klass; included_modules; end)
|
11
|
+
assert class_modules.include?(ActiveRecord::Acts::Enumerated::MacroMethods), "#{klass} doesn't define Enumerated macro methods"
|
12
|
+
end
|
13
|
+
|
14
|
+
should "define Enumerated class methods" do
|
15
|
+
class_modules = (class << klass; included_modules; end)
|
16
|
+
assert class_modules.include?(ActiveRecord::Acts::Enumerated::ClassMethods), "#{klass} doesn't define Enumerated class methods"
|
17
|
+
end
|
18
|
+
|
19
|
+
should "define Enumerated instance methods" do
|
20
|
+
instance_modules = klass.included_modules
|
21
|
+
assert instance_modules.include?(ActiveRecord::Acts::Enumerated::InstanceMethods), "#{klass} doesn't define Enumerated instance methods"
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Woulda
|
2
|
+
module Paperclip
|
3
|
+
module Macros
|
4
|
+
def should_have_attached_file(attachment)
|
5
|
+
klass = self.name.gsub(/Test$/, '').constantize
|
6
|
+
|
7
|
+
context "To support a paperclip attachment named #{attachment}, #{klass}" do
|
8
|
+
should_have_db_column("#{attachment}_file_name", :type => :string)
|
9
|
+
should_have_db_column("#{attachment}_content_type", :type => :string)
|
10
|
+
should_have_db_column("#{attachment}_file_size", :type => :integer)
|
11
|
+
end
|
12
|
+
|
13
|
+
should "have a paperclip attachment named ##{attachment}" do
|
14
|
+
assert klass.new.respond_to?(attachment.to_sym),
|
15
|
+
"@#{klass.name.underscore} doesn't have a paperclip field named #{attachment}"
|
16
|
+
assert_equal Paperclip::Attachment, klass.new.send(attachment.to_sym).class
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Woulda
|
2
|
+
module WillPaginate
|
3
|
+
module Macros
|
4
|
+
def should_have_per_page(count)
|
5
|
+
klass = self.name.gsub(/Test$/, '').constantize
|
6
|
+
context "#{klass}" do
|
7
|
+
should "respond to per_page" do
|
8
|
+
assert klass.respond_to?(:per_page), "#{klass} does not respond to :per_page"
|
9
|
+
end
|
10
|
+
|
11
|
+
should "have #{count} per page" do
|
12
|
+
assert_equal count, klass.per_page
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'woulda'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seanhussey-woulda
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sean Hussey
|
@@ -36,7 +36,33 @@ files:
|
|
36
36
|
- LICENSE
|
37
37
|
- Rakefile
|
38
38
|
- README.textile
|
39
|
-
- shoulda_macros/
|
39
|
+
- shoulda_macros/woulda_macros.rb
|
40
|
+
- lib/woulda
|
41
|
+
- lib/woulda/acts_as_ferret
|
42
|
+
- lib/woulda/acts_as_ferret/macros.rb
|
43
|
+
- lib/woulda/acts_as_ferret.rb
|
44
|
+
- lib/woulda/acts_as_list
|
45
|
+
- lib/woulda/acts_as_list/macros.rb
|
46
|
+
- lib/woulda/acts_as_list.rb
|
47
|
+
- lib/woulda/acts_as_paranoid
|
48
|
+
- lib/woulda/acts_as_paranoid/macros.rb
|
49
|
+
- lib/woulda/acts_as_paranoid.rb
|
50
|
+
- lib/woulda/acts_as_taggable_on_steroids
|
51
|
+
- lib/woulda/acts_as_taggable_on_steroids/macros.rb
|
52
|
+
- lib/woulda/acts_as_taggable_on_steroids.rb
|
53
|
+
- lib/woulda/attachment_fu
|
54
|
+
- lib/woulda/attachment_fu/macros.rb
|
55
|
+
- lib/woulda/attachment_fu.rb
|
56
|
+
- lib/woulda/enumerations_mixin
|
57
|
+
- lib/woulda/enumerations_mixin/macros.rb
|
58
|
+
- lib/woulda/enumerations_mixin.rb
|
59
|
+
- lib/woulda/paperclip
|
60
|
+
- lib/woulda/paperclip/macros.rb
|
61
|
+
- lib/woulda/paperclip.rb
|
62
|
+
- lib/woulda/will_paginate
|
63
|
+
- lib/woulda/will_paginate/macros.rb
|
64
|
+
- lib/woulda/will_paginate.rb
|
65
|
+
- lib/woulda.rb
|
40
66
|
has_rdoc: false
|
41
67
|
homepage: http://github.com/seanhussey/woulda
|
42
68
|
post_install_message:
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'woulda/acts_as_paranoid' if defined? Caboose::Acts::Paranoid
|