acts_as_span 0.0.6 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -2
- data/acts_as_span.gemspec +2 -2
- data/lib/acts_as_span.rb +11 -0
- data/lib/acts_as_span/version.rb +2 -2
- data/spec/lib/acts_as_span_spec.rb +21 -0
- data/spec/spec_models.rb +9 -0
- metadata +11 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: d1b2bd958d53e10e1816b39bbb073c8b9d21b105ab20b7bdd1d0f11048f2adf7
|
4
|
+
data.tar.gz: 9f211ee95efdcbad216591259729983fbf31fc26f6ce91d39fdd03be258d0c0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa5735e3051308f569cee93a81b13b833c33c1611feaacc0cfc2b985f1938dbaac923676bcd5e0fc75ed91f428651a3b2e10ff2a4ed48981e6191acc60494bd1
|
7
|
+
data.tar.gz: 2fc6f890b396e9829559aa063f6bdd6dfb21b1afc0806a83dc1114acbc736af6ce0cf6dec2c319a259ad1adfdbd52657f81c2adc439b32a3d05c4844f179b7f5
|
data/.travis.yml
CHANGED
data/acts_as_span.gemspec
CHANGED
@@ -26,10 +26,10 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
27
27
|
s.require_paths = ["lib"]
|
28
28
|
|
29
|
-
s.add_development_dependency "bundler", "~> 1
|
29
|
+
s.add_development_dependency "bundler", "~> 2.0.1"
|
30
30
|
s.add_development_dependency "rake", "~> 10.0"
|
31
31
|
s.add_development_dependency "rspec", "~> 3.0"
|
32
|
-
s.add_development_dependency "sqlite3"
|
32
|
+
s.add_development_dependency "sqlite3", "~> 1.3.6"
|
33
33
|
s.add_development_dependency "has_siblings", "~> 0.2.7"
|
34
34
|
s.add_development_dependency "temping"
|
35
35
|
s.add_development_dependency "pry-byebug"
|
data/lib/acts_as_span.rb
CHANGED
@@ -13,6 +13,8 @@ require 'active_record'
|
|
13
13
|
module ActsAsSpan
|
14
14
|
extend ActiveSupport::Concern
|
15
15
|
|
16
|
+
OPTIONS = %i[start_field end_field name].freeze
|
17
|
+
|
16
18
|
class << self
|
17
19
|
def options
|
18
20
|
@options ||= {
|
@@ -32,8 +34,17 @@ module ActsAsSpan
|
|
32
34
|
self.send(:extend, ActsAsSpan::ExtendedClassMethods)
|
33
35
|
self.send(:include, ActsAsSpan::IncludedInstanceMethods)
|
34
36
|
|
37
|
+
# TODO: There's some refactoring that could be done here using keyword args (or the more standard old hash arg pattern)
|
35
38
|
options = OpenStruct.new(args.last.is_a?(Hash) ? ActsAsSpan.options.merge(args.pop) : ActsAsSpan.options)
|
36
39
|
|
40
|
+
unsupported_options =
|
41
|
+
options.to_h.keys.reject { |opt| OPTIONS.include? opt }
|
42
|
+
unless unsupported_options.empty?
|
43
|
+
raise ArgumentError,
|
44
|
+
'Unsupported option(s): ' <<
|
45
|
+
unsupported_options.map { |o| "'#{o}'" }.join(', ')
|
46
|
+
end
|
47
|
+
|
37
48
|
acts_as_span_definitions[options.name] = options
|
38
49
|
|
39
50
|
# TODO add tests that check delegation of all methos in span
|
data/lib/acts_as_span/version.rb
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
RSpec.describe "acts_as_span" do
|
4
|
+
it 'raises an ArgumentError when unsupported arguments are passed' do
|
5
|
+
expect do
|
6
|
+
SpannableModel.acts_as_span(
|
7
|
+
start_field: :starting_date,
|
8
|
+
end_field: :ending_date,
|
9
|
+
span_overlap_scope: [:unique_by_date_range]
|
10
|
+
)
|
11
|
+
end.to raise_error(
|
12
|
+
ArgumentError, "Unsupported option(s): 'span_overlap_scope'"
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "doesn't raise an ArgumentError when valid arguments are passed" do
|
17
|
+
expect do
|
18
|
+
SpannableModel.acts_as_span(
|
19
|
+
start_field: :starting_date,
|
20
|
+
end_field: :ending_date
|
21
|
+
)
|
22
|
+
end.not_to raise_error
|
23
|
+
end
|
24
|
+
|
4
25
|
context "ClassMethods" do
|
5
26
|
it "should have 1 acts_as_span_definition" do
|
6
27
|
expect(SpanModel.acts_as_span_definitions.size).to eq(1)
|
data/spec/spec_models.rb
CHANGED
@@ -4,6 +4,15 @@ require 'has_siblings'
|
|
4
4
|
ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:')
|
5
5
|
ActiveRecord::Base.logger = Logger.new(STDOUT) if ENV["DEBUG"]
|
6
6
|
|
7
|
+
Temping.create :spannable_model do
|
8
|
+
with_columns do |t|
|
9
|
+
t.date :starting_date
|
10
|
+
t.date :ending_date
|
11
|
+
|
12
|
+
t.integer :unique_by_date_range
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
7
16
|
Temping.create :span_model do
|
8
17
|
with_columns do |t|
|
9
18
|
t.date :start_date
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_span
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Sullivan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 2.0.1
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 2.0.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,16 +56,16 @@ dependencies:
|
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.3.6
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 1.3.6
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: has_siblings
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -193,20 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
version: '0'
|
194
194
|
requirements: []
|
195
195
|
rubyforge_project:
|
196
|
-
rubygems_version: 2.6
|
196
|
+
rubygems_version: 2.7.6
|
197
197
|
signing_key:
|
198
198
|
specification_version: 4
|
199
|
-
summary: acts_as_span 0.0
|
200
|
-
test_files:
|
201
|
-
- spec/lib/acts_as_span_spec.rb
|
202
|
-
- spec/lib/delegation_spec.rb
|
203
|
-
- spec/lib/no_overlap_validator_spec.rb
|
204
|
-
- spec/lib/span_instance/named_scopes_on_spec.rb
|
205
|
-
- spec/lib/span_instance/named_scopes_spec.rb
|
206
|
-
- spec/lib/span_instance/overlap_spec.rb
|
207
|
-
- spec/lib/span_instance/status_spec.rb
|
208
|
-
- spec/lib/span_instance/validations_spec.rb
|
209
|
-
- spec/lib/span_instance_spec.rb
|
210
|
-
- spec/lib/within_parent_date_span_validator_spec.rb
|
211
|
-
- spec/spec_helper.rb
|
212
|
-
- spec/spec_models.rb
|
199
|
+
summary: acts_as_span 1.0.0
|
200
|
+
test_files: []
|