omise 0.5.1 → 0.6.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/circle.yml +3 -0
- data/lib/omise/all.rb +2 -0
- data/lib/omise/charge.rb +5 -0
- data/lib/omise/charge_list.rb +1 -1
- data/lib/omise/occurrence.rb +23 -0
- data/lib/omise/occurrence_list.rb +10 -0
- data/lib/omise/schedule.rb +29 -0
- data/lib/omise/scheduler.rb +149 -0
- data/lib/omise/search_scope.rb +7 -9
- data/lib/omise/transfer.rb +4 -0
- data/lib/omise/version.rb +1 -1
- data/test/fixtures/api.omise.co/occurrences/occu_test_57s33hmja9t3fs4wmop-get.json +6 -0
- data/test/fixtures/api.omise.co/schedules-get.json +10 -0
- data/test/fixtures/api.omise.co/schedules-post.json +5 -0
- data/test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-delete.json +6 -0
- data/test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-get.json +20 -0
- data/test/omise/test_charge.rb +5 -0
- data/test/omise/test_occurrence.rb +29 -0
- data/test/omise/test_schedule.rb +49 -0
- data/test/omise/test_scheduler.rb +179 -0
- data/test/omise/test_transfer.rb +10 -0
- metadata +24 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6b2f56981a89d8705862e3a3649803458ed8ba8
|
4
|
+
data.tar.gz: eeecbe3fced3152b59b4fc7956c89ea0800021df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a9b3226f8a0db71ef9f6b47569aee173d6e0aecb437d142552cee6a16af9348e5b4664ccf26901e0a080f1d63c2900cbfe003c723e9e02262c7b08a22ec12e9
|
7
|
+
data.tar.gz: b4e0cffe3356323389e2421df5a97a38ab60542b25e75f31d47b11094ae137359c96b372e433d0cd8c89dcf70384a970f8a49aaf997c2dc1760514e015a9d19d
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,10 @@ An [unreleased] version is not available on rubygems and is subject to changes a
|
|
4
4
|
|
5
5
|
## [unreleased]
|
6
6
|
|
7
|
+
- [Added] Schedule and Occurence
|
8
|
+
|
9
|
+
## [0.5.1] 2017-04-16
|
10
|
+
|
7
11
|
- [Added] Support to log HTTP requests and responses.
|
8
12
|
- [Added] Rename keys with better names while supporting old methods
|
9
13
|
- [Fix] Avoid circular require warnings when running tests
|
data/circle.yml
ADDED
data/lib/omise/all.rb
CHANGED
@@ -8,9 +8,11 @@ require "omise/dispute"
|
|
8
8
|
require "omise/document"
|
9
9
|
require "omise/event"
|
10
10
|
require "omise/link"
|
11
|
+
require "omise/occurrence"
|
11
12
|
require "omise/recipient"
|
12
13
|
require "omise/refund"
|
13
14
|
require "omise/search"
|
15
|
+
require "omise/schedule"
|
14
16
|
require "omise/token"
|
15
17
|
require "omise/transaction"
|
16
18
|
require "omise/transfer"
|
data/lib/omise/charge.rb
CHANGED
@@ -2,6 +2,7 @@ require "omise/object"
|
|
2
2
|
require "omise/list"
|
3
3
|
require "omise/refund_list"
|
4
4
|
require "omise/search_scope"
|
5
|
+
require "omise/scheduler"
|
5
6
|
|
6
7
|
module Omise
|
7
8
|
class Charge < OmiseObject
|
@@ -11,6 +12,10 @@ module Omise
|
|
11
12
|
SearchScope.new(:charge)
|
12
13
|
end
|
13
14
|
|
15
|
+
def self.schedule(attributes = {})
|
16
|
+
Scheduler.new(:charge, attributes)
|
17
|
+
end
|
18
|
+
|
14
19
|
def self.retrieve(id, attributes = {})
|
15
20
|
new resource(location(id), attributes).get(attributes)
|
16
21
|
end
|
data/lib/omise/charge_list.rb
CHANGED
@@ -0,0 +1,23 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
|
3
|
+
module Omise
|
4
|
+
class Occurrence < OmiseObject
|
5
|
+
self.endpoint = "/occurrences"
|
6
|
+
|
7
|
+
def self.retrieve(id, attributes = {})
|
8
|
+
new resource(location(id), attributes).get(attributes)
|
9
|
+
end
|
10
|
+
|
11
|
+
def schedule(options = {})
|
12
|
+
if !defined?(Schedule)
|
13
|
+
require "omise/schedule"
|
14
|
+
end
|
15
|
+
|
16
|
+
expand_attribute Schedule, "schedule", options
|
17
|
+
end
|
18
|
+
|
19
|
+
def reload(attributes = {})
|
20
|
+
assign_attributes resource(attributes).get(attributes)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "omise/object"
|
2
|
+
require "omise/list"
|
3
|
+
require "omise/occurrence_list"
|
4
|
+
|
5
|
+
module Omise
|
6
|
+
class Schedule < OmiseObject
|
7
|
+
self.endpoint = "/schedules"
|
8
|
+
|
9
|
+
def self.list(attributes = {})
|
10
|
+
List.new resource(location, attributes).get(attributes)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.retrieve(id, attributes = {})
|
14
|
+
new resource(location(id), attributes).get(attributes)
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.create(attributes = {})
|
18
|
+
new resource(location, attributes).post(attributes)
|
19
|
+
end
|
20
|
+
|
21
|
+
def occurrences
|
22
|
+
list_attribute OccurrenceList, "occurrences"
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy(attributes = {})
|
26
|
+
assign_attributes resource(attributes).delete
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,149 @@
|
|
1
|
+
require "date"
|
2
|
+
|
3
|
+
require "omise/schedule"
|
4
|
+
|
5
|
+
module Omise
|
6
|
+
class Scheduler
|
7
|
+
WEEKDAYS = Date::DAYNAMES.map(&:downcase).freeze
|
8
|
+
MONTH_WEEKDAYS = %w[first second third fourth last]
|
9
|
+
.product(WEEKDAYS)
|
10
|
+
.map { |d| d.join("_") }
|
11
|
+
.freeze
|
12
|
+
|
13
|
+
def initialize(type, attributes = {}, options = {})
|
14
|
+
@type = type
|
15
|
+
@attributes = attributes
|
16
|
+
@every = options[:every]
|
17
|
+
@period = options[:period]
|
18
|
+
@on = options[:on]
|
19
|
+
@end_date = options[:end_date]
|
20
|
+
end
|
21
|
+
|
22
|
+
def type
|
23
|
+
@type.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def every(n = 1)
|
27
|
+
unless n.is_a?(Integer)
|
28
|
+
raise TypeError, "#{n} is not an Integer"
|
29
|
+
end
|
30
|
+
|
31
|
+
renew(every: n)
|
32
|
+
end
|
33
|
+
|
34
|
+
def days
|
35
|
+
renew(period: "day", on: nil)
|
36
|
+
end
|
37
|
+
alias_method :day, :days
|
38
|
+
|
39
|
+
def weeks(on:)
|
40
|
+
on.each do |day|
|
41
|
+
unless WEEKDAYS.include?(day)
|
42
|
+
raise "#{day} is not one of #{WEEKDAYS}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
renew(period: "week", on: { weekdays: on })
|
47
|
+
end
|
48
|
+
alias_method :week, :weeks
|
49
|
+
|
50
|
+
def months(on:)
|
51
|
+
case on
|
52
|
+
when Array
|
53
|
+
month_with_days(on)
|
54
|
+
when String
|
55
|
+
month_with_weekday(on)
|
56
|
+
else
|
57
|
+
raise TypeError, "#{on.inspect} must be an Array or a String, not a #{on.class}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
alias_method :month, :months
|
61
|
+
|
62
|
+
def end_date(date)
|
63
|
+
date = Date.parse(date.to_s)
|
64
|
+
renew(end_date: date.iso8601)
|
65
|
+
end
|
66
|
+
|
67
|
+
def parse(str)
|
68
|
+
str = str.downcase
|
69
|
+
.gsub(/ +/, " ")
|
70
|
+
.gsub("every ", "")
|
71
|
+
.gsub("the ", "")
|
72
|
+
.gsub(" and ", ",")
|
73
|
+
.gsub(/,+/, ",")
|
74
|
+
.gsub(/ ?, ?/, ",")
|
75
|
+
.gsub(",", " ")
|
76
|
+
|
77
|
+
leftover, end_date = str.split(" until ", 2)
|
78
|
+
period, on = leftover.split(" on ", 2)
|
79
|
+
on = on.to_s.strip.split(" ")
|
80
|
+
every = period.to_i
|
81
|
+
every = 1 if every.zero?
|
82
|
+
month_weekday = on.join("_")
|
83
|
+
month_days = on.map { |d| d.to_i }
|
84
|
+
|
85
|
+
schedule = self.end_date(end_date).every(every)
|
86
|
+
|
87
|
+
if period.include?("day")
|
88
|
+
return schedule.days
|
89
|
+
end
|
90
|
+
|
91
|
+
if period.include?("week")
|
92
|
+
return schedule.weeks(on: on.uniq)
|
93
|
+
end
|
94
|
+
|
95
|
+
if period.include?("month") && MONTH_WEEKDAYS.include?(month_weekday)
|
96
|
+
return schedule.months(on: month_weekday)
|
97
|
+
end
|
98
|
+
|
99
|
+
if period.include?("month")
|
100
|
+
return schedule.months(on: month_days.uniq)
|
101
|
+
end
|
102
|
+
|
103
|
+
raise ArgumentError, "invalid schedule: #{src}"
|
104
|
+
end
|
105
|
+
|
106
|
+
def start
|
107
|
+
Schedule.create(to_attributes)
|
108
|
+
end
|
109
|
+
|
110
|
+
def to_attributes
|
111
|
+
{}.tap do |a|
|
112
|
+
a[@type] = @attributes
|
113
|
+
a[:every] = @every if @every
|
114
|
+
a[:period] = @period if @period
|
115
|
+
a[:on] = @on if @on
|
116
|
+
a[:end_date] = @end_date if @end_date
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
private
|
121
|
+
|
122
|
+
def month_with_days(days)
|
123
|
+
days.each do |day|
|
124
|
+
unless day.is_a?(Integer)
|
125
|
+
raise TypeError, "#{day.inspect} must be an Integer, not a #{day.class}"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
renew(period: "month", on: { days_of_month: days })
|
130
|
+
end
|
131
|
+
|
132
|
+
def month_with_weekday(day)
|
133
|
+
unless MONTH_WEEKDAYS.include?(day)
|
134
|
+
raise "#{day} does not match #{WEEKDAY_OF_MONTH.inspect}"
|
135
|
+
end
|
136
|
+
|
137
|
+
renew(period: "month", on: { weekday_of_month: day })
|
138
|
+
end
|
139
|
+
|
140
|
+
def renew(attributes)
|
141
|
+
self.class.new(@type, @attributes, {
|
142
|
+
every: @every,
|
143
|
+
period: @period,
|
144
|
+
on: @on,
|
145
|
+
end_date: @end_date,
|
146
|
+
}.merge(attributes))
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
data/lib/omise/search_scope.rb
CHANGED
@@ -34,15 +34,13 @@ module Omise
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def to_attributes
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
attributes
|
37
|
+
{}.tap do |a|
|
38
|
+
a[:scope] = @scope
|
39
|
+
a[:filters] = @filters if @filters.any?
|
40
|
+
a[:query] = @query if @query
|
41
|
+
a[:order] = @order if @order
|
42
|
+
a[:page] = @page if @page
|
43
|
+
end
|
46
44
|
end
|
47
45
|
|
48
46
|
private
|
data/lib/omise/transfer.rb
CHANGED
data/lib/omise/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"object": "schedule",
|
3
|
+
"location": "/schedules/schd_test_4yq7duw15p9hdrjp8oq",
|
4
|
+
"id": "schd_test_4yq7duw15p9hdrjp8oq",
|
5
|
+
"occurrences": {
|
6
|
+
"object": "list",
|
7
|
+
"from": "1970-01-01T00:00:00+00:00",
|
8
|
+
"to": "2015-01-15T05:04:30+00:00",
|
9
|
+
"offset": 0,
|
10
|
+
"limit": 20,
|
11
|
+
"total": 1,
|
12
|
+
"data": [
|
13
|
+
{
|
14
|
+
"object": "occurrence",
|
15
|
+
"location": "/occurrences/occu_test_57s33hmja9t3fs4wmop",
|
16
|
+
"id": "occu_test_57s33hmja9t3fs4wmop"
|
17
|
+
}
|
18
|
+
]
|
19
|
+
}
|
20
|
+
}
|
data/test/omise/test_charge.rb
CHANGED
@@ -115,4 +115,9 @@ class TestCharge < Omise::Test
|
|
115
115
|
assert_instance_of Omise::SearchScope, Omise::Charge.search
|
116
116
|
assert_equal "charge", Omise::Charge.search.scope
|
117
117
|
end
|
118
|
+
|
119
|
+
def test_that_schedule_returns_a_scheduler
|
120
|
+
assert_instance_of Omise::Scheduler, Omise::Charge.schedule
|
121
|
+
assert_equal "charge", Omise::Charge.schedule.type
|
122
|
+
end
|
118
123
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "support"
|
2
|
+
|
3
|
+
class TestOccurrence < Omise::Test
|
4
|
+
setup do
|
5
|
+
@schedule = Omise::Schedule.retrieve("schd_test_4yq7duw15p9hdrjp8oq")
|
6
|
+
@occurrence = Omise::Occurrence.retrieve("occu_test_57s33hmja9t3fs4wmop")
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_that_we_can_retrieve_an_occurrence
|
10
|
+
occurrence = Omise::Occurrence.retrieve("occu_test_57s33hmja9t3fs4wmop")
|
11
|
+
|
12
|
+
assert_instance_of Omise::Occurrence, occurrence
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_that_we_can_reload_an_occurrence
|
16
|
+
occurrence = Omise::Occurrence.retrieve("occu_test_57s33hmja9t3fs4wmop")
|
17
|
+
|
18
|
+
occurrence.reload
|
19
|
+
|
20
|
+
assert_instance_of Omise::Occurrence, occurrence
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_that_we_can_expand_a_schedule
|
24
|
+
occurrence = Omise::Occurrence.retrieve("occu_test_57s33hmja9t3fs4wmop")
|
25
|
+
schedule = occurrence.schedule
|
26
|
+
|
27
|
+
assert_instance_of Omise::Schedule, schedule
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "support"
|
2
|
+
|
3
|
+
class TestSchedule < Omise::Test
|
4
|
+
setup do
|
5
|
+
@schedule = Omise::Schedule.retrieve("schd_test_4yq7duw15p9hdrjp8oq")
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_that_we_can_list_all_schedules
|
9
|
+
schedules = Omise::Schedule.list
|
10
|
+
|
11
|
+
assert_instance_of Omise::List, schedules
|
12
|
+
assert_instance_of Omise::Schedule, schedules.first
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_that_we_can_retrieve_a_schedule
|
16
|
+
assert_instance_of Omise::Schedule, @schedule
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_that_we_can_create_a_schedule
|
20
|
+
schedule = Omise::Schedule.create({
|
21
|
+
every: 1,
|
22
|
+
period: "month",
|
23
|
+
start_date: "2017-05-01",
|
24
|
+
end_date: "2018-05-01",
|
25
|
+
on: {
|
26
|
+
days_of_month: [1],
|
27
|
+
},
|
28
|
+
charge: {
|
29
|
+
customer: "cust_test_57m2wcnfx96k634rkqq",
|
30
|
+
amount: "100000",
|
31
|
+
},
|
32
|
+
})
|
33
|
+
|
34
|
+
assert_instance_of Omise::Schedule, schedule
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_that_we_can_destroy_a_schedule
|
38
|
+
@schedule.destroy
|
39
|
+
|
40
|
+
assert @schedule.destroyed?
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_that_we_can_list_occurences
|
44
|
+
occurrences = @schedule.occurrences
|
45
|
+
|
46
|
+
assert_instance_of Omise::OccurrenceList, occurrences
|
47
|
+
assert_instance_of Omise::Occurrence, occurrences.first
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,179 @@
|
|
1
|
+
require "support"
|
2
|
+
|
3
|
+
class TestScheduler < Omise::Test
|
4
|
+
setup do
|
5
|
+
@scheduler = Omise::Charge.schedule
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_that_a_scheduler_has_a_type
|
9
|
+
assert_equal "charge", @scheduler.type
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_we_can_set_every
|
13
|
+
scheduler = @scheduler.every(1)
|
14
|
+
|
15
|
+
assert_scheduler_attributes(@scheduler)
|
16
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
17
|
+
assert_equal 1, scheduler.to_attributes[:every]
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_we_can_set_day
|
21
|
+
scheduler = @scheduler.every(1).day
|
22
|
+
|
23
|
+
assert_scheduler_attributes(@scheduler)
|
24
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
25
|
+
assert_equal 1, scheduler.to_attributes[:every]
|
26
|
+
assert_equal "day", scheduler.to_attributes[:period]
|
27
|
+
assert_nil scheduler.to_attributes[:on]
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_we_can_set_days
|
31
|
+
scheduler = @scheduler.every(10).days
|
32
|
+
|
33
|
+
assert_scheduler_attributes(@scheduler)
|
34
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
35
|
+
assert_equal 10, scheduler.to_attributes[:every]
|
36
|
+
assert_equal "day", scheduler.to_attributes[:period]
|
37
|
+
assert_nil scheduler.to_attributes[:on]
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_we_can_set_week
|
41
|
+
scheduler = @scheduler.every(1).week(on: ["monday"])
|
42
|
+
|
43
|
+
assert_scheduler_attributes(@scheduler)
|
44
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
45
|
+
assert_equal 1, scheduler.to_attributes[:every]
|
46
|
+
assert_equal "week", scheduler.to_attributes[:period]
|
47
|
+
assert_equal ["monday"], scheduler.to_attributes[:on][:weekdays]
|
48
|
+
end
|
49
|
+
|
50
|
+
def test_we_can_set_weeks
|
51
|
+
scheduler = @scheduler.every(2).weeks(on: ["monday"])
|
52
|
+
|
53
|
+
assert_scheduler_attributes(@scheduler)
|
54
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
55
|
+
assert_equal 2, scheduler.to_attributes[:every]
|
56
|
+
assert_equal "week", scheduler.to_attributes[:period]
|
57
|
+
assert_equal ["monday"], scheduler.to_attributes[:on][:weekdays]
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_we_can_set_month_with_days
|
61
|
+
scheduler = @scheduler.every(1).month(on: [1, 10, 20])
|
62
|
+
|
63
|
+
assert_scheduler_attributes(@scheduler)
|
64
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
65
|
+
assert_equal 1, scheduler.to_attributes[:every]
|
66
|
+
assert_equal "month", scheduler.to_attributes[:period]
|
67
|
+
assert_equal [1, 10, 20], scheduler.to_attributes[:on][:days_of_month]
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_we_can_set_months_with_days
|
71
|
+
scheduler = @scheduler.every(3).months(on: [1])
|
72
|
+
|
73
|
+
assert_scheduler_attributes(@scheduler)
|
74
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
75
|
+
assert_equal 3, scheduler.to_attributes[:every]
|
76
|
+
assert_equal "month", scheduler.to_attributes[:period]
|
77
|
+
assert_equal [1], scheduler.to_attributes[:on][:days_of_month]
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_we_can_set_month_with_weekday
|
81
|
+
scheduler = @scheduler.every(1).month(on: "first_monday")
|
82
|
+
|
83
|
+
assert_scheduler_attributes(@scheduler)
|
84
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
85
|
+
assert_equal 1, scheduler.to_attributes[:every]
|
86
|
+
assert_equal "month", scheduler.to_attributes[:period]
|
87
|
+
assert_equal "first_monday", scheduler.to_attributes[:on][:weekday_of_month]
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_we_can_set_months_with_weekday
|
91
|
+
scheduler = @scheduler.every(3).months(on: "last_friday")
|
92
|
+
|
93
|
+
assert_scheduler_attributes(@scheduler)
|
94
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
95
|
+
assert_equal 3, scheduler.to_attributes[:every]
|
96
|
+
assert_equal "month", scheduler.to_attributes[:period]
|
97
|
+
assert_equal "last_friday", scheduler.to_attributes[:on][:weekday_of_month]
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_we_can_set_end_date
|
101
|
+
scheduler = @scheduler.end_date("2018-01-01")
|
102
|
+
|
103
|
+
assert_scheduler_attributes(@scheduler)
|
104
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
105
|
+
assert_equal "2018-01-01", scheduler.to_attributes[:end_date]
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_we_can_set_end_date_in_other_formats
|
109
|
+
scheduler = @scheduler.end_date("1st January 2018")
|
110
|
+
|
111
|
+
assert_scheduler_attributes(@scheduler)
|
112
|
+
refute_equal scheduler.object_id, @scheduler.object_id
|
113
|
+
assert_equal "2018-01-01", scheduler.to_attributes[:end_date]
|
114
|
+
end
|
115
|
+
|
116
|
+
def that_we_can_parse_it_all_in_one
|
117
|
+
scheduler = @scheduler.parse("every 1 month on the 28th until May 1st, 2018")
|
118
|
+
|
119
|
+
assert_scheduler_attributes(@scheduler)
|
120
|
+
assert_scheduler_attributes(scheduler, 1, "month", "2018-05-01", days_of_month: [28])
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_a_bunch_of_other_values_to_be_parsed
|
124
|
+
scheduler = @scheduler.parse("every day until 03/04/2018")
|
125
|
+
assert_scheduler_attributes(scheduler, 1, "day", "2018-04-03")
|
126
|
+
|
127
|
+
scheduler = @scheduler.parse("every 10 days until 03/04/2018")
|
128
|
+
assert_scheduler_attributes(scheduler, 10, "day", "2018-04-03")
|
129
|
+
|
130
|
+
scheduler = @scheduler.parse("every 2 weeks on monday and friday until 2018-12-12")
|
131
|
+
assert_scheduler_attributes(scheduler, 2, "week", "2018-12-12", weekdays: ["monday", "friday"])
|
132
|
+
|
133
|
+
scheduler = @scheduler.parse("every 1 week on monday, tuesday, wednesday, thursday, friday until 2018-12-12")
|
134
|
+
assert_scheduler_attributes(scheduler, 1, "week", "2018-12-12", weekdays: ["monday", "tuesday", "wednesday", "thursday", "friday"])
|
135
|
+
|
136
|
+
scheduler = @scheduler.parse("every 2 weeks on monday and monday until 2018-12-12")
|
137
|
+
assert_scheduler_attributes(scheduler, 2, "week", "2018-12-12", weekdays: ["monday"])
|
138
|
+
|
139
|
+
scheduler = @scheduler.parse("every month on the third Thursday until January 1st 2020")
|
140
|
+
assert_scheduler_attributes(scheduler, 1, "month", "2020-01-01", weekday_of_month: "third_thursday")
|
141
|
+
|
142
|
+
scheduler = @scheduler.parse("every 3 months on 1, 2 and 3 until January 1st 2020")
|
143
|
+
assert_scheduler_attributes(scheduler, 3, "month", "2020-01-01", days_of_month: [1, 2, 3])
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_that_we_can_start_the_schedule
|
147
|
+
schedule = @scheduler.parse("every 1 month on the 28th until May 1st, 2018").start
|
148
|
+
|
149
|
+
assert_instance_of Omise::Schedule, schedule
|
150
|
+
end
|
151
|
+
|
152
|
+
private
|
153
|
+
|
154
|
+
def assert_scheduler_attributes(scheduler, every = nil, period = nil, end_date = nil, on = nil)
|
155
|
+
if every
|
156
|
+
assert_equal every, scheduler.to_attributes[:every]
|
157
|
+
else
|
158
|
+
assert_nil every
|
159
|
+
end
|
160
|
+
|
161
|
+
if period
|
162
|
+
assert_equal period, scheduler.to_attributes[:period]
|
163
|
+
else
|
164
|
+
assert_nil period
|
165
|
+
end
|
166
|
+
|
167
|
+
if end_date
|
168
|
+
assert_equal end_date, scheduler.to_attributes[:end_date]
|
169
|
+
else
|
170
|
+
assert_nil end_date
|
171
|
+
end
|
172
|
+
|
173
|
+
if on
|
174
|
+
assert_equal on, scheduler.to_attributes[:on]
|
175
|
+
else
|
176
|
+
assert_nil on
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
data/test/omise/test_transfer.rb
CHANGED
@@ -42,4 +42,14 @@ class TestTransfer < Omise::Test
|
|
42
42
|
def test_that_a_transfer_has_a_bank_account
|
43
43
|
assert_instance_of Omise::BankAccount, @transfer.bank_account
|
44
44
|
end
|
45
|
+
|
46
|
+
def test_that_search_returns_a_scoped_search
|
47
|
+
assert_instance_of Omise::SearchScope, Omise::Transfer.search
|
48
|
+
assert_equal "transfer", Omise::Transfer.search.scope
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_that_schedule_returns_a_scheduler
|
52
|
+
assert_instance_of Omise::Scheduler, Omise::Transfer.schedule
|
53
|
+
assert_equal "transfer", Omise::Transfer.schedule.type
|
54
|
+
end
|
45
55
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omise
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robin Clart
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-05-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- Rakefile
|
110
110
|
- bin/console
|
111
111
|
- bin/rake
|
112
|
+
- circle.yml
|
112
113
|
- data/ca_certificates.pem
|
113
114
|
- lib/omise.rb
|
114
115
|
- lib/omise/account.rb
|
@@ -131,10 +132,14 @@ files:
|
|
131
132
|
- lib/omise/link.rb
|
132
133
|
- lib/omise/list.rb
|
133
134
|
- lib/omise/object.rb
|
135
|
+
- lib/omise/occurrence.rb
|
136
|
+
- lib/omise/occurrence_list.rb
|
134
137
|
- lib/omise/recipient.rb
|
135
138
|
- lib/omise/refund.rb
|
136
139
|
- lib/omise/refund_list.rb
|
137
140
|
- lib/omise/resource.rb
|
141
|
+
- lib/omise/schedule.rb
|
142
|
+
- lib/omise/scheduler.rb
|
138
143
|
- lib/omise/search.rb
|
139
144
|
- lib/omise/search_scope.rb
|
140
145
|
- lib/omise/singleton_resource.rb
|
@@ -188,11 +193,16 @@ files:
|
|
188
193
|
- test/fixtures/api.omise.co/links-get.json
|
189
194
|
- test/fixtures/api.omise.co/links-post.json
|
190
195
|
- test/fixtures/api.omise.co/links/link_test_55pcclmznvrv9lc7r9s-get.json
|
196
|
+
- test/fixtures/api.omise.co/occurrences/occu_test_57s33hmja9t3fs4wmop-get.json
|
191
197
|
- test/fixtures/api.omise.co/recipients-get.json
|
192
198
|
- test/fixtures/api.omise.co/recipients-post.json
|
193
199
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-delete.json
|
194
200
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-get.json
|
195
201
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-patch.json
|
202
|
+
- test/fixtures/api.omise.co/schedules-get.json
|
203
|
+
- test/fixtures/api.omise.co/schedules-post.json
|
204
|
+
- test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-delete.json
|
205
|
+
- test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-get.json
|
196
206
|
- test/fixtures/api.omise.co/search-get-scope-charge.json
|
197
207
|
- test/fixtures/api.omise.co/transactions-get.json
|
198
208
|
- test/fixtures/api.omise.co/transactions/trxn_test_4yq7duwb9jts1vxgqua-get.json
|
@@ -218,9 +228,12 @@ files:
|
|
218
228
|
- test/omise/test_http_logger.rb
|
219
229
|
- test/omise/test_link.rb
|
220
230
|
- test/omise/test_list.rb
|
231
|
+
- test/omise/test_occurrence.rb
|
221
232
|
- test/omise/test_recipient.rb
|
222
233
|
- test/omise/test_refund.rb
|
223
234
|
- test/omise/test_resource.rb
|
235
|
+
- test/omise/test_schedule.rb
|
236
|
+
- test/omise/test_scheduler.rb
|
224
237
|
- test/omise/test_search.rb
|
225
238
|
- test/omise/test_search_scope.rb
|
226
239
|
- test/omise/test_token.rb
|
@@ -248,7 +261,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
248
261
|
version: '0'
|
249
262
|
requirements: []
|
250
263
|
rubyforge_project:
|
251
|
-
rubygems_version: 2.6.
|
264
|
+
rubygems_version: 2.6.11
|
252
265
|
signing_key:
|
253
266
|
specification_version: 4
|
254
267
|
summary: Omise Ruby client
|
@@ -295,11 +308,16 @@ test_files:
|
|
295
308
|
- test/fixtures/api.omise.co/links-get.json
|
296
309
|
- test/fixtures/api.omise.co/links-post.json
|
297
310
|
- test/fixtures/api.omise.co/links/link_test_55pcclmznvrv9lc7r9s-get.json
|
311
|
+
- test/fixtures/api.omise.co/occurrences/occu_test_57s33hmja9t3fs4wmop-get.json
|
298
312
|
- test/fixtures/api.omise.co/recipients-get.json
|
299
313
|
- test/fixtures/api.omise.co/recipients-post.json
|
300
314
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-delete.json
|
301
315
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-get.json
|
302
316
|
- test/fixtures/api.omise.co/recipients/recp_test_50894vc13y8z4v51iuc-patch.json
|
317
|
+
- test/fixtures/api.omise.co/schedules-get.json
|
318
|
+
- test/fixtures/api.omise.co/schedules-post.json
|
319
|
+
- test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-delete.json
|
320
|
+
- test/fixtures/api.omise.co/schedules/schd_test_4yq7duw15p9hdrjp8oq-get.json
|
303
321
|
- test/fixtures/api.omise.co/search-get-scope-charge.json
|
304
322
|
- test/fixtures/api.omise.co/transactions-get.json
|
305
323
|
- test/fixtures/api.omise.co/transactions/trxn_test_4yq7duwb9jts1vxgqua-get.json
|
@@ -325,9 +343,12 @@ test_files:
|
|
325
343
|
- test/omise/test_http_logger.rb
|
326
344
|
- test/omise/test_link.rb
|
327
345
|
- test/omise/test_list.rb
|
346
|
+
- test/omise/test_occurrence.rb
|
328
347
|
- test/omise/test_recipient.rb
|
329
348
|
- test/omise/test_refund.rb
|
330
349
|
- test/omise/test_resource.rb
|
350
|
+
- test/omise/test_schedule.rb
|
351
|
+
- test/omise/test_scheduler.rb
|
331
352
|
- test/omise/test_search.rb
|
332
353
|
- test/omise/test_search_scope.rb
|
333
354
|
- test/omise/test_token.rb
|