static_model 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/History.txt CHANGED
@@ -1,3 +1,9 @@
1
+ == 0.1.0 2008-08-27
2
+
3
+ * 1 minor enchancement
4
+
5
+ * fixed the dynamic finders to match AR's behavior AKA find_by === find_first_by
6
+
1
7
  == 0.1.0 2008-07-09
2
8
 
3
9
  * 1 major enhancement:
@@ -9,7 +9,7 @@ module StaticModel
9
9
  attr_reader :id
10
10
 
11
11
  def initialize(attribute_hash = {})
12
- raise(StaticModel::BadOptions, "Initializing a model is done with a Hash {}") unless attribute_hash.is_a?(Hash)
12
+ raise(StaticModel::BadOptions, "Initializing a model is done with a Hash {} given #{attribute_hash.inspect}") unless attribute_hash.is_a?(Hash)
13
13
  @id = attribute_hash.delete('id') || attribute_hash.delete(:id) || (self.class.count + 1)
14
14
  self.attributes = attribute_hash
15
15
  end
@@ -68,6 +68,7 @@ module StaticModel
68
68
  def find_first_by(attribute, value)
69
69
  records.find {|r| r.send(attribute) == value }
70
70
  end
71
+ alias_method :find_by, :find_first_by
71
72
 
72
73
  def load(reload = false)
73
74
  return if loaded? && !reload
@@ -110,8 +111,8 @@ module StaticModel
110
111
  private
111
112
  def method_missing(meth, *args)
112
113
  meth_name = meth.to_s
113
- if meth_name =~ /^find_(all|first)_by_(.+)/
114
- attribute_name = meth_name.gsub(/^find_(all|first)_by_/, '')
114
+ if meth_name =~ /^find_(all_by|first_by|by)_(.+)/
115
+ attribute_name = meth_name.gsub(/^find_(all_by|first_by|by)_/, '')
115
116
  finder = meth_name.gsub(/_#{attribute_name}/, '')
116
117
  return self.send(finder, attribute_name, *args)
117
118
  end
@@ -2,7 +2,7 @@ module StaticModel #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 1
5
- TINY = 3
5
+ TINY = 4
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -194,6 +194,28 @@ class TestStaticModel < Test::Unit::TestCase
194
194
  end
195
195
  end
196
196
  end
197
+
198
+ context "find_by" do
199
+ setup do
200
+ @author = 'Michael Pollan'
201
+ @book = Book.find_by(:author,@author)
202
+ end
203
+
204
+ should "return an instance of klass" do
205
+ assert @book.is_a?(Book)
206
+ end
207
+
208
+ should "return record matching search" do
209
+ assert @author, @book.author
210
+ end
211
+
212
+ context "when there is no match" do
213
+ should "return nil" do
214
+ assert_nil Book.find_by(:author,'Aaron Quint')
215
+ end
216
+ end
217
+
218
+ end
197
219
 
198
220
  context "find_all_by" do
199
221
  setup do
@@ -225,6 +247,12 @@ class TestStaticModel < Test::Unit::TestCase
225
247
  end
226
248
  end
227
249
 
250
+ context "find_by_*attribute*" do
251
+ should "be equivalent to find_first_by(attribute,)" do
252
+ assert_equal Book.find_by(:genre, 'Non-Fiction'), Book.find_first_by_genre('Non-Fiction')
253
+ end
254
+ end
255
+
228
256
  context "find_first_by_*attribute*" do
229
257
  should "be equivalent to find_first_by(attribute,)" do
230
258
  assert_equal Book.find_first_by(:genre, 'Non-Fiction'), Book.find_first_by_genre('Non-Fiction')
@@ -2,9 +2,13 @@ require File.dirname(__FILE__) + '/test_helper.rb'
2
2
 
3
3
  class TestStaticModelScope < Test::Unit::TestCase
4
4
 
5
- context "a static model class" do
6
- context "A class with scope" do
7
-
8
- end
5
+ # context "a static model class" do
6
+ # context "A class with scope" do
7
+ #
8
+ # end
9
+ # end
10
+
11
+ def test_truth
12
+ assert true
9
13
  end
10
14
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: static_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aaron Quint
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-08-01 00:00:00 -04:00
12
+ date: 2008-08-27 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency