date_supercharger 0.0.2 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e74bb40da956266672fdb1ac7524311ba3cf7d01
4
- data.tar.gz: a37b5cb86f7ba85931acdf7a666ac2d960fe121f
3
+ metadata.gz: 9cbde5991d41f650cdea7c806ad19374ab489464
4
+ data.tar.gz: 7feaee3da4b2d798efb969ddec64a168f05128cb
5
5
  SHA512:
6
- metadata.gz: 1050ca6e2de7883260f75cc97af51453685d4ed5a7b2fe625a7f542ee162aa443cccc7715b03c2c7f742c5e91c9f064a95c435465b7d31a051c169e2b7cf9750
7
- data.tar.gz: b2e15e021452eb57748dcf90f7bc75dc975abb30768312c40fda784d19d576ec88b444b811e00fc4ed61012e321093787e8a4cac5d967c176dca9e8a3d5bcf4d
6
+ metadata.gz: cabbb1d6e0f9e892ed56c15fd03424b3717a5c746c815e1c620d15f45692b06007ccc1cb296d730b28a7f6b5fa9d86afd8eb5956047ebd6255d82986c99455b0
7
+ data.tar.gz: bd635957f1bcf9a25c5eeaf32501781837c3256701704d0eee68d8ab7754e1d09cb282925f7d2658f4f38ba6e8ec2237952baa4f452b70fa6bbaf1e62d4f5f3c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.1.0
2
+
3
+ - Add `between` and `between_incluve` methods
4
+
1
5
  ## 0.0.2
2
6
 
3
7
  - Raise ArgumentError when date methods receives wrong number of parameters
@@ -10,10 +10,25 @@ module DateSupercharger
10
10
  match = ModelDateExtensionMatch.new(self,method_sym)
11
11
 
12
12
  if match.match?
13
- operators = { after: ">", before: "<", before_or_at: "<=", after_or_at: ">=" }
14
- singleton_class.class_eval do
15
- define_method("#{match.attribute}_#{match.suffix}") do |date|
16
- where("#{match.attribute} #{operators[match.suffix]} ?", date)
13
+ case match.suffix
14
+ when :after,:before,:before_or_at,:after_or_at
15
+ operators = { after: ">", before: "<", before_or_at: "<=", after_or_at: ">=" }
16
+ singleton_class.class_eval do
17
+ define_method("#{match.attribute}_#{match.suffix}") do |date|
18
+ where("#{match.attribute} #{operators[match.suffix]} ?", date)
19
+ end
20
+ end
21
+ when :between
22
+ singleton_class.class_eval do
23
+ define_method("#{match.attribute}_#{match.suffix}") do |from,to|
24
+ send("#{match.attribute}_after_or_at",from).send("#{match.attribute}_before",to)
25
+ end
26
+ end
27
+ when :between_inclusive
28
+ singleton_class.class_eval do
29
+ define_method("#{match.attribute}_#{match.suffix}") do |from,to|
30
+ send("#{match.attribute}_after_or_at",from).send("#{match.attribute}_before_or_at",to)
31
+ end
17
32
  end
18
33
  end
19
34
  send(method_sym, *arguments)
@@ -38,7 +53,7 @@ module DateSupercharger
38
53
 
39
54
  def initialize(model,method_sym)
40
55
  #TODO: implement between and between_inclusive
41
- if method_sym.to_s =~ /^(.+)_(before|after|before_or_at|after_or_at)$/
56
+ if method_sym.to_s =~ /^(.+)_(before|after|before_or_at|after_or_at|between|between_inclusive)$/
42
57
  date_columns = model.columns_hash.keys.select { |c| [:datetime,:date].include? model.columns_hash[c].type }.map(&:to_sym)
43
58
  if date_columns.include? $1.to_sym
44
59
  @attribute = $1.to_sym
@@ -1,3 +1,3 @@
1
1
  module DateSupercharger
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -54,6 +54,26 @@ class TestDateSupercharger < Minitest::Test
54
54
  end
55
55
  end
56
56
 
57
+ describe "#_between" do
58
+ it "should include from but exclude to" do
59
+ assert_equal 6, Visit.visit_date_between(monday,sunday).count
60
+ end
61
+ end
62
+
63
+ describe "#_between_inclusive" do
64
+ it "should include from but exclude to" do
65
+ assert_equal 7, Visit.visit_date_between_inclusive(monday,sunday).count
66
+ end
67
+ end
68
+
69
+ describe "#respond_to?" do
70
+ it "should respond_to date supercharger methods" do
71
+ supercharger_methods = [:before,:after,:before_or_at,:after_or_at,:between,:between_inclusive]
72
+ supercharger_methods.each do |method|
73
+ assert_equal true, Visit.respond_to?("visit_date_#{method}")
74
+ end
75
+ end
76
+ end
57
77
 
58
78
  end
59
79
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: date_supercharger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simon Soriano