acts_as_acts_as 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -1,5 +1,15 @@
1
1
  module ActsAsActsAs
2
2
  module ActsAsShortcuts
3
+
4
+ def require_parameters(options, *options_list)
5
+ missing_options = (options_list - options.keys) # would convert to_s here, but people may not convert which would just hide bugs
6
+ if missing_options.blank?
7
+ true
8
+ else
9
+ raise "Model #{self.to_s} must pass options that include #{missing_options.inspect}"
10
+ end
11
+ end
12
+
3
13
  def require_methods(*method_list)
4
14
  method_list.each do |required_method|
5
15
  unless instance_methods.include?(required_method.to_s)
@@ -44,8 +44,10 @@ module ActsAsActsAs::Macros
44
44
  uid = t.to_i.to_s + t.usec.to_s
45
45
  table_name = "temp_table_#{uid}"
46
46
  ActiveRecord::Base.connection.create_table(table_name) do |t|
47
- model_opts[:columns].each do |name, type|
48
- t.send(type, name)
47
+ model_opts[:columns].each do |args|
48
+ (name, type, options) = args
49
+ options = {} if options.nil?
50
+ t.send(type, name, options)
49
51
  end
50
52
  end
51
53
 
@@ -54,9 +56,11 @@ module ActsAsActsAs::Macros
54
56
  newclass.set_table_name table_name
55
57
  newclass.reset_column_information
56
58
 
57
- newclass.class_eval do
58
- model_opts[:methods].each do |m|
59
- attr_accessor m
59
+ if model_opts[:methods]
60
+ newclass.class_eval do
61
+ model_opts[:methods].each do |m|
62
+ attr_accessor m
63
+ end
60
64
  end
61
65
  end
62
66
 
@@ -38,7 +38,7 @@ class ActsAsActsAs::Requirements::Collector
38
38
  end
39
39
 
40
40
  module Context
41
- [:require_methods, :require_class_methods, :require_columns, :define_methods, :define_class_methods].each do |x|
41
+ [:require_methods, :require_class_methods, :require_columns, :require_parameters, :define_methods, :define_class_methods].each do |x|
42
42
  define_method(x) { |*args| [x, args] }
43
43
  end
44
44
  end
@@ -57,6 +57,26 @@ class ActsAsActsAs::Requirements::Verifier
57
57
  end
58
58
  end
59
59
 
60
+ def require_parameters(options, reqs, *parameters)
61
+ verifier = self
62
+ acts_as_method = @acts_as_method
63
+ describe 'required methods' do
64
+ parameters.each do |parameter|
65
+ it "#{parameter} must be passed in the #{acts_as_method} options hash " do
66
+ mod = verifier.tableless_model(
67
+ :columns => reqs[:require_columns]
68
+ )
69
+
70
+ passing_options = parameters.inject({}) {|h, param| h[param] = :foo ; h}
71
+ passing_options.merge!(options)
72
+ passing_options.delete(parameter)
73
+
74
+ lambda { mod.send(acts_as_method, passing_options) }.should raise_error(/#{parameter}/)
75
+ end
76
+ end
77
+ end
78
+ end
79
+
60
80
  def require_columns(options, reqs, *columns)
61
81
  verifier = self
62
82
  acts_as_method = @acts_as_method
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_acts_as
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - phinze
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-26 00:00:00 -06:00
12
+ date: 2010-03-05 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency