omise 0.5.1 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|