acts_as_span 0.0.6 → 1.0.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 +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: []
|