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 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: []