mongoid-time_range 0.3.0 → 0.4.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.
- data/CHANGELOG.md +10 -0
- data/README.md +1 -4
- data/lib/mongoid/time_range/version.rb +1 -1
- data/lib/mongoid/time_range.rb +10 -12
- data/mongoid-time_range.gemspec +1 -1
- data/spec/integration_spec.rb +16 -6
- data/spec/support/document.rb +8 -2
- data/spec/time_range_spec.rb +24 -0
- metadata +3 -3
data/CHANGELOG.md
CHANGED
@@ -1,2 +1,12 @@
|
|
1
|
+
# 0.3.0 (January 05, 2013)
|
2
|
+
* TimeRange is now based on Hash.
|
3
|
+
|
4
|
+
# 0.2.0 (January 04, 2013)
|
5
|
+
* TimeRange does not extend Struct anymore.
|
6
|
+
|
7
|
+
# 0.1.0 (January 03, 2013)
|
8
|
+
* Added integration specs.
|
9
|
+
* Mongoid::TimeRange is now available as ::TimeRange too.
|
10
|
+
|
1
11
|
# 0.0.1 (January 01, 2013)
|
2
12
|
* First version.
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# mongoid-time_range
|
2
2
|
|
3
|
-
Mongoid::TimeRange defines a
|
3
|
+
`Mongoid::TimeRange` defines a time range type for your Mongoid apps, which is stored internally as a hash with `from` and `to` keys.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -21,9 +21,6 @@ end
|
|
21
21
|
```
|
22
22
|
|
23
23
|
```ruby
|
24
|
-
document = Document.create
|
25
|
-
document.range # => { from: 2013-01-01 00:00:00 +0100, to: nil }
|
26
|
-
|
27
24
|
year2013 = Document.create(range: { from: Time.now.at_beginning_of_year, to: Time.now.end_of_year })
|
28
25
|
year2013.range # => { from: 2013-01-01 00:00:00 +0100, to: 2013-12-31 23:59:59 +0100 }
|
29
26
|
```
|
data/lib/mongoid/time_range.rb
CHANGED
@@ -8,24 +8,22 @@ module Mongoid
|
|
8
8
|
merge!(from: from, to: to)
|
9
9
|
end
|
10
10
|
|
11
|
+
[:from, :to].each do |key|
|
12
|
+
define_method key do
|
13
|
+
self[key]
|
14
|
+
end
|
15
|
+
|
16
|
+
define_method :"#{key}=" do |value|
|
17
|
+
self[key] = value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
11
21
|
alias_method :to_a, :values
|
12
22
|
|
13
23
|
def mongoize
|
14
24
|
self.class.mongoize(self)
|
15
25
|
end
|
16
26
|
|
17
|
-
def to_h
|
18
|
-
self
|
19
|
-
end
|
20
|
-
|
21
|
-
def from
|
22
|
-
self[:from]
|
23
|
-
end
|
24
|
-
|
25
|
-
def to
|
26
|
-
self[:to]
|
27
|
-
end
|
28
|
-
|
29
27
|
class << self
|
30
28
|
def mongoize(object)
|
31
29
|
[:from, :to].associate { |key| Time.mongoize(object[key]) }
|
data/mongoid-time_range.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.authors = 'Mario Uher'
|
8
8
|
gem.email = 'uher.mario@gmail.com'
|
9
9
|
gem.homepage = 'https://github.com/haihappen/mongoid-time_range'
|
10
|
-
gem.summary = '
|
10
|
+
gem.summary = 'Time range type for Mongoid.'
|
11
11
|
gem.description = 'Mongoid::TimeRange defines a TimeRange type for your Mongoid apps.'
|
12
12
|
|
13
13
|
gem.files = `git ls-files`.split("\n")
|
data/spec/integration_spec.rb
CHANGED
@@ -13,12 +13,22 @@ describe 'Mongoid::TimeRange integration' do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
|
-
describe 'when default is set to
|
17
|
-
subject {
|
16
|
+
describe 'when default is set to from: Time.now }' do
|
17
|
+
subject { DocumentWithImplicitDefault.create }
|
18
18
|
|
19
19
|
|
20
|
-
it 'sets from to current time and to to
|
21
|
-
subject.range.
|
20
|
+
it 'sets from to current time and to to ni' do
|
21
|
+
subject.range.must_equal from: Time.now, to: nil
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
|
26
|
+
describe 'when default is set to ->{ Mongoid::TimeRange.new(from: Time.now) }' do
|
27
|
+
subject { DocumentWithExplicitDefault.create }
|
28
|
+
|
29
|
+
|
30
|
+
it 'sets from to current time and to to ni' do
|
31
|
+
subject.range.must_equal from: Time.now, to: nil
|
22
32
|
end
|
23
33
|
end
|
24
34
|
end
|
@@ -29,7 +39,7 @@ describe 'Mongoid::TimeRange integration' do
|
|
29
39
|
|
30
40
|
|
31
41
|
it 'sets from to given time and to to nil' do
|
32
|
-
subject.range.
|
42
|
+
subject.range.must_equal from: Time.now.beginning_of_year, to: nil
|
33
43
|
end
|
34
44
|
end
|
35
45
|
|
@@ -39,7 +49,7 @@ describe 'Mongoid::TimeRange integration' do
|
|
39
49
|
|
40
50
|
|
41
51
|
it 'sets from and to to given time' do
|
42
|
-
subject.range.
|
52
|
+
subject.range.must_equal from: Time.now.beginning_of_year, to: Time.now.end_of_year
|
43
53
|
end
|
44
54
|
end
|
45
55
|
|
data/spec/support/document.rb
CHANGED
@@ -4,8 +4,14 @@ class Document
|
|
4
4
|
field :range, type: Mongoid::TimeRange
|
5
5
|
end
|
6
6
|
|
7
|
-
class
|
7
|
+
class DocumentWithImplicitDefault
|
8
8
|
include Mongoid::Document
|
9
9
|
|
10
|
-
field :range, type: Mongoid::TimeRange, default: ->{
|
10
|
+
field :range, type: Mongoid::TimeRange, default: ->{ { from: Time.now } }
|
11
|
+
end
|
12
|
+
|
13
|
+
class DocumentWithExplicitDefault
|
14
|
+
include Mongoid::Document
|
15
|
+
|
16
|
+
field :range, type: Mongoid::TimeRange, default: -> { Mongoid::TimeRange.new(Time.now) }
|
11
17
|
end
|
data/spec/time_range_spec.rb
CHANGED
@@ -54,6 +54,30 @@ describe Mongoid::TimeRange do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
|
57
|
+
describe 'getters' do
|
58
|
+
it 'responds to from' do
|
59
|
+
subject.must_respond_to :from
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
it 'responds to to' do
|
64
|
+
subject.must_respond_to :to
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
describe 'setters' do
|
70
|
+
it 'responds to from=' do
|
71
|
+
subject.must_respond_to :from=
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
it 'responds to to=' do
|
76
|
+
subject.must_respond_to :to=
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
|
57
81
|
describe :mongoize do
|
58
82
|
let(:value) { subject.mongoize }
|
59
83
|
|
metadata
CHANGED
@@ -2,14 +2,14 @@
|
|
2
2
|
name: mongoid-time_range
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.4.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mario Uher
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-01-
|
12
|
+
date: 2013-01-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -90,5 +90,5 @@ rubyforge_project:
|
|
90
90
|
rubygems_version: 1.8.23
|
91
91
|
signing_key:
|
92
92
|
specification_version: 3
|
93
|
-
summary:
|
93
|
+
summary: Time range type for Mongoid.
|
94
94
|
test_files: []
|