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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9ed7f152ad93220467d76ca831763a2a4dbd02ba
4
- data.tar.gz: eaf693675a0aa764b8d85a77464b9897787993be
2
+ SHA256:
3
+ metadata.gz: d1b2bd958d53e10e1816b39bbb073c8b9d21b105ab20b7bdd1d0f11048f2adf7
4
+ data.tar.gz: 9f211ee95efdcbad216591259729983fbf31fc26f6ce91d39fdd03be258d0c0e
5
5
  SHA512:
6
- metadata.gz: 686a48328384d0e29b0aba18af0d957cc06d0e8ab4fd051d72a33a8515c23115eca337427424f0e920edbf5970abb3605d12b582fa9df37799a0ed911624d8de
7
- data.tar.gz: a35877b8ff3c5748a921fb095dd925791e1212246dc0442835a5e3e5c77cbdc30ec659a69d56cc55fbc0e4eee154f53babf7a70a26ee194674a9ad59e4cb0cdb
6
+ metadata.gz: aa5735e3051308f569cee93a81b13b833c33c1611feaacc0cfc2b985f1938dbaac923676bcd5e0fc75ed91f428651a3b2e10ff2a4ed48981e6191acc60494bd1
7
+ data.tar.gz: 2fc6f890b396e9829559aa063f6bdd6dfb21b1afc0806a83dc1114acbc736af6ce0cf6dec2c319a259ad1adfdbd52657f81c2adc439b32a3d05c4844f179b7f5
@@ -1,6 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.8
4
- - 2.3.5
3
+ - 2.4.5
4
+ - 2.5.3
5
+ - 2.6.1
6
+ before_install: gem install bundler
5
7
  notifications:
6
8
  email: false
@@ -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.15"
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"
@@ -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
@@ -1,8 +1,8 @@
1
1
  module ActsAsSpan
2
2
  module VERSION
3
- MAJOR = 0
3
+ MAJOR = 1
4
4
  MINOR = 0
5
- TINY = 6
5
+ TINY = 0
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -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)
@@ -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.6
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: 2018-07-23 00:00:00.000000000 Z
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: '1.15'
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: '1.15'
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: '0'
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: '0'
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.14
196
+ rubygems_version: 2.7.6
197
197
  signing_key:
198
198
  specification_version: 4
199
- summary: acts_as_span 0.0.6
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: []