ae_bank_days 1.1.2 → 1.2.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
2
  SHA256:
3
- metadata.gz: 78328538c2b370e7d744ec107ee252dae174538d69352d0f1e85fa83382c449a
4
- data.tar.gz: 74655b450f093f68d30cbb498356d3db45b914dfc7697991cb0b8d612ef53911
3
+ metadata.gz: 06f9983d00ce48e33b4a934f726e456d1eb37daec1355aad31cf605f9c5ef0bd
4
+ data.tar.gz: e3b17132d6696f57e38e2a1addac13d1ae4daa49fcb788dae5e553b66cec463f
5
5
  SHA512:
6
- metadata.gz: dbf08e548ca896facd91a448331ab86e6687bf8f16132c88c1cb3eb08a3dd4acbed7f7f489b71f2fb4024c8587f617b135658778435029227239d5d837bcfa31
7
- data.tar.gz: 6075ed1dc21f239f558e40d0ee740938b5ca3f9e8640f63a63a4cab3034fb739e6eb12be580f300a6ca6f69caff581441835af30461c9d20f94bd1a5672dba7a
6
+ metadata.gz: f43ac398011e018ece5207f6db467339a3b9255451627cad5cd5e970b3d08512d38c3ae9d09604ddf09d177a30febdbf98d7e5e5ba6ef8329c9122aea7424e8b
7
+ data.tar.gz: b0e66f75d0ea3c5ac6d39a7240e3a284af57968292e69a5b14dbfb1753273bc21a425ab9b67e0b8f5bcedffd8bc87a7d77cca0959b6944d0a3d75105087a4c00
@@ -1,22 +1,23 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ae_bank_days (1.1.1)
5
- holidays (~> 7.1)
4
+ ae_bank_days (1.2.0)
5
+ holidays (~> 8.3)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  ansi (1.5.0)
11
- builder (3.2.3)
12
- holidays (7.1.0)
13
- minitest (5.13.0)
11
+ builder (3.2.4)
12
+ holidays (8.3.0)
13
+ minitest (5.11.3)
14
14
  minitest-reporters (1.3.0)
15
15
  ansi
16
16
  builder
17
17
  minitest (>= 5.0)
18
18
  ruby-progressbar
19
- rake (12.3.2)
19
+ mocha (1.11.2)
20
+ rake (12.3.3)
20
21
  ruby-progressbar (1.10.1)
21
22
 
22
23
  PLATFORMS
@@ -27,7 +28,8 @@ DEPENDENCIES
27
28
  bundler (>= 1.10.4, < 3)
28
29
  minitest (>= 5.8)
29
30
  minitest-reporters (>= 1.3)
31
+ mocha (>= 1.1)
30
32
  rake (>= 12.0)
31
33
 
32
34
  BUNDLED WITH
33
- 2.0.2
35
+ 2.1.4
@@ -21,10 +21,11 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.metadata['allowed_push_host'] = 'https://rubygems.org'
23
23
 
24
- spec.add_dependency('holidays', '~> 7.1')
24
+ spec.add_dependency('holidays', '~> 8.3')
25
25
 
26
26
  spec.add_development_dependency('bundler', ['>= 1.10.4', '< 3'])
27
27
  spec.add_development_dependency('minitest', '>= 5.8')
28
28
  spec.add_development_dependency('minitest-reporters', '>= 1.3')
29
+ spec.add_development_dependency('mocha', '>= 1.1')
29
30
  spec.add_development_dependency('rake', '>= 12.0')
30
31
  end
@@ -5,4 +5,7 @@ require 'holidays'
5
5
 
6
6
  module AeBankDays
7
7
  autoload :BankDayHelper, 'ae_bank_days/bank_day_helper'
8
+ autoload :DateExtensions, 'ae_bank_days/date_extensions'
8
9
  end
10
+
11
+ Date.send :include, AeBankDays::DateExtensions
@@ -2,16 +2,12 @@
2
2
 
3
3
  module AeBankDays
4
4
  class BankDayHelper
5
- START_DATE = Date.civil(2014, 1, 1)
6
- END_DATE = Date.today.next_year(10)
7
- HOLIDAYS = Holidays.between(START_DATE, END_DATE, :federalreserve, :observed).map do |holiday|
8
- holiday[:date]
9
- end
10
-
11
5
  class << self
6
+ Holidays.cache_between(Date.today.prev_year, Date.today.next_year(10), :federalreservebanks, :observed)
7
+
12
8
  def bank_day?(day)
13
9
  date = day.to_date
14
- weekday?(date) && !HOLIDAYS.include?(date)
10
+ weekday?(date) && Holidays.on(date, :federalreservebanks, :observed).empty?
15
11
  end
16
12
 
17
13
  def next_banking_day(date, number_of_days: 0)
@@ -0,0 +1,15 @@
1
+ module AeBankDays
2
+ module DateExtensions
3
+ def bank_day?
4
+ BankDayHelper.bank_day?(self)
5
+ end
6
+
7
+ def next_banking_day(n = 0)
8
+ BankDayHelper.next_banking_day(self, number_of_days: n)
9
+ end
10
+
11
+ def previous_banking_day(n = 0)
12
+ BankDayHelper.previous_banking_day(self, number_of_days: n)
13
+ end
14
+ end
15
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AeBankDays
4
- VERSION = '1.1.2'
4
+ VERSION = '1.2.0'
5
5
  end
@@ -4,85 +4,72 @@ require 'test_helper'
4
4
 
5
5
  module AeBankDays
6
6
  class BankDayHelperTest < Minitest::Test
7
- def test_constants
8
- assert_equal Date.civil(2014, 1, 1), BankDayHelper::START_DATE
9
- assert_equal Date.today.next_year(10), BankDayHelper::END_DATE
10
- assert BankDayHelper::HOLIDAYS.any?
11
- end
12
-
13
7
  def test_bank_day__weekday
14
- time = Time.parse('2017-10-03 14:30:45 -0500')
15
- assert BankDayHelper.bank_day?(time.to_date)
8
+ assert BankDayHelper.bank_day?(Date.civil(2017, 10, 3))
16
9
  end
17
10
 
18
11
  def test_bank_day__weekend
19
- time = Time.parse('2017-10-14 14:30:45 -0500')
20
- refute BankDayHelper.bank_day?(time.to_date)
12
+ refute BankDayHelper.bank_day?(Date.civil(2017, 10, 14))
21
13
  end
22
14
 
23
15
  def test_bank_day__holiday
24
- time = Time.parse('2017-10-09 14:30:45 -0500')
25
- refute BankDayHelper.bank_day?(time.to_date)
16
+ refute BankDayHelper.bank_day?(Date.civil(2017, 10, 9))
17
+ end
18
+
19
+ def test_bank_day__saturday_holiday_is_not_observed_on_friday
20
+ # The federal bank does not observe holidays that fall on Saturday on the preceding Friday as is common.
21
+ # This test makes sure that these dates are not accidentally marked as holidays.
22
+ # July 4, 2020 fell on a Saturday. The day before was a generally observed federal holiday, but it was still
23
+ # a banking day due to the federal banks holiday rules.
24
+ assert BankDayHelper.bank_day?(Date.civil(2020, 6, 3))
26
25
  end
27
26
 
28
27
  def test_next_banking_day__weekday
29
- time = Time.parse('2017-10-03 14:30:45 -0500')
30
- assert_equal Date.parse('2017-10-03'), BankDayHelper.next_banking_day(time.to_date)
28
+ assert_equal Date.civil(2017, 10, 3), BankDayHelper.next_banking_day(Date.civil(2017, 10, 3))
31
29
  end
32
30
 
33
31
  def test_next_banking_day__weekday__extra_days
34
- time = Time.parse('2017-10-03 14:30:45 -0500')
35
- assert_equal Date.parse('2017-10-06'), BankDayHelper.next_banking_day(time.to_date, number_of_days: 3)
32
+ assert_equal Date.civil(2017, 10, 6), BankDayHelper.next_banking_day(Date.civil(2017, 10, 3), number_of_days: 3)
36
33
  end
37
34
 
38
35
  def test_next_banking_day__weekend
39
- time = Time.parse('2017-10-14 14:30:45 -0500')
40
- assert_equal Date.parse('2017-10-16'), BankDayHelper.next_banking_day(time.to_date)
36
+ assert_equal Date.civil(2017, 10, 16), BankDayHelper.next_banking_day(Date.civil(2017, 10, 14))
41
37
  end
42
38
 
43
39
  def test_next_banking_day__weekend__extra_days
44
- time = Time.parse('2017-10-14 14:30:45 -0500')
45
- assert_equal Date.parse('2017-10-19'), BankDayHelper.next_banking_day(time.to_date, number_of_days: 3)
40
+ assert_equal Date.civil(2017, 10, 19), BankDayHelper.next_banking_day(Date.civil(2017, 10, 14), number_of_days: 3)
46
41
  end
47
42
 
48
43
  def test_next_banking_day__holiday
49
- time = Time.parse('2017-10-09 14:30:45 -0500')
50
- assert_equal Date.parse('2017-10-10'), BankDayHelper.next_banking_day(time.to_date)
44
+ assert_equal Date.civil(2017, 10, 10), BankDayHelper.next_banking_day(Date.civil(2017, 10, 9))
51
45
  end
52
46
 
53
47
  def test_next_banking_day__holiday__extra_days
54
- time = Time.parse('2017-10-09 14:30:45 -0500')
55
- assert_equal Date.parse('2017-10-13'), BankDayHelper.next_banking_day(time.to_date, number_of_days: 3)
48
+ assert_equal Date.civil(2017, 10, 13), BankDayHelper.next_banking_day(Date.civil(2017, 10, 9), number_of_days: 3)
56
49
  end
57
50
 
58
51
  def test_previous_banking_day__weekday
59
- time = Time.parse('2017-10-03 14:30:45 -0500')
60
- assert_equal Date.parse('2017-10-03'), BankDayHelper.previous_banking_day(time.to_date)
52
+ assert_equal Date.civil(2017, 10, 3), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 3))
61
53
  end
62
54
 
63
55
  def test_previous_banking_day__weekday__extra_days
64
- time = Time.parse('2017-10-06 14:30:45 -0500')
65
- assert_equal Date.parse('2017-10-03'), BankDayHelper.previous_banking_day(time.to_date, number_of_days: 3)
56
+ assert_equal Date.civil(2017, 10, 3), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 6), number_of_days: 3)
66
57
  end
67
58
 
68
59
  def test_previous_banking_day__weekend
69
- time = Time.parse('2017-10-14 14:30:45 -0500')
70
- assert_equal Date.parse('2017-10-13'), BankDayHelper.previous_banking_day(time.to_date)
60
+ assert_equal Date.civil(2017, 10, 13), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 14))
71
61
  end
72
62
 
73
63
  def test_previous_banking_day__weekend__extra_days
74
- time = Time.parse('2017-10-14 14:30:45 -0500')
75
- assert_equal Date.parse('2017-10-10'), BankDayHelper.previous_banking_day(time.to_date, number_of_days: 3)
64
+ assert_equal Date.civil(2017, 10, 10), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 14), number_of_days: 3)
76
65
  end
77
66
 
78
67
  def test_previous_banking_day__holiday
79
- time = Time.parse('2017-10-09 14:30:45 -0500')
80
- assert_equal Date.parse('2017-10-06'), BankDayHelper.previous_banking_day(time.to_date)
68
+ assert_equal Date.civil(2017, 10, 6), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 9))
81
69
  end
82
70
 
83
71
  def test_previous_banking_day__holiday__extra_days
84
- time = Time.parse('2017-10-09 14:30:45 -0500')
85
- assert_equal Date.parse('2017-10-03'), BankDayHelper.previous_banking_day(time.to_date, number_of_days: 3)
72
+ assert_equal Date.civil(2017, 10, 3), BankDayHelper.previous_banking_day(Date.civil(2017, 10, 9), number_of_days: 3)
86
73
  end
87
74
  end
88
75
  end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ module AeBankDays
6
+ class DateExtensionsTest < Minitest::Test
7
+ def test_bank_day
8
+ date = Date.today
9
+ BankDayHelper.expects(:bank_day?).with(date).returns(true)
10
+
11
+ assert date.bank_day?
12
+ end
13
+
14
+ def test_next_banking_day
15
+ date = Date.today
16
+ new_date = date + 2
17
+ BankDayHelper.expects(:next_banking_day).with(date, number_of_days: 2).returns(new_date)
18
+
19
+ assert_equal new_date, date.next_banking_day(2)
20
+ end
21
+
22
+ def test_next_banking_day__default
23
+ date = Date.today
24
+ new_date = date + 2
25
+ BankDayHelper.expects(:next_banking_day).with(date, number_of_days: 0).returns(new_date)
26
+
27
+ assert_equal new_date, date.next_banking_day
28
+ end
29
+
30
+ def test_previous_banking_day
31
+ date = Date.today
32
+ new_date = date + 2
33
+ BankDayHelper.expects(:previous_banking_day).with(date, number_of_days: 2).returns(new_date)
34
+
35
+ assert_equal new_date, date.previous_banking_day(2)
36
+ end
37
+
38
+ def test_previous_banking_day__default
39
+ date = Date.today
40
+ new_date = date + 2
41
+ BankDayHelper.expects(:previous_banking_day).with(date, number_of_days: 0).returns(new_date)
42
+
43
+ assert_equal new_date, date.previous_banking_day
44
+ end
45
+ end
46
+ end
@@ -14,6 +14,7 @@ end
14
14
  require 'ae_bank_days'
15
15
  require 'minitest/autorun'
16
16
  require 'minitest/reporters'
17
+ require 'mocha/setup'
17
18
  require 'time'
18
19
 
19
20
  MiniTest::Reporters.use!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ae_bank_days
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - AppFolio
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-31 00:00:00.000000000 Z
11
+ date: 2020-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: holidays
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '7.1'
19
+ version: '8.3'
20
20
  type: :runtime
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: '7.1'
26
+ version: '8.3'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +72,20 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '1.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: mocha
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '1.1'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '1.1'
75
89
  - !ruby/object:Gem::Dependency
76
90
  name: rake
77
91
  requirement: !ruby/object:Gem::Requirement
@@ -101,8 +115,10 @@ files:
101
115
  - ae_bank_days.gemspec
102
116
  - lib/ae_bank_days.rb
103
117
  - lib/ae_bank_days/bank_day_helper.rb
118
+ - lib/ae_bank_days/date_extensions.rb
104
119
  - lib/ae_bank_days/version.rb
105
120
  - test/ae_bank_days/bank_day_helper_test.rb
121
+ - test/ae_bank_days/date_extensions_test.rb
106
122
  - test/ae_bank_days_test.rb
107
123
  - test/test_helper.rb
108
124
  homepage: http://github.com/appfolio/ae_bank_days
@@ -110,7 +126,7 @@ licenses:
110
126
  - MIT
111
127
  metadata:
112
128
  allowed_push_host: https://rubygems.org
113
- post_install_message:
129
+ post_install_message:
114
130
  rdoc_options: []
115
131
  require_paths:
116
132
  - lib
@@ -128,11 +144,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
128
144
  - !ruby/object:Gem::Version
129
145
  version: '0'
130
146
  requirements: []
131
- rubygems_version: 3.0.4
132
- signing_key:
147
+ rubygems_version: 3.0.3
148
+ signing_key:
133
149
  specification_version: 4
134
150
  summary: Gem for finding the next banking date
135
151
  test_files:
136
152
  - test/ae_bank_days/bank_day_helper_test.rb
153
+ - test/ae_bank_days/date_extensions_test.rb
137
154
  - test/ae_bank_days_test.rb
138
155
  - test/test_helper.rb