gratitude 0.0.4 → 0.0.5
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/.gitignore +2 -1
- data/README.md +107 -1
- data/lib/gratitude/payday.rb +67 -0
- data/lib/gratitude/profile.rb +8 -1
- data/lib/gratitude/version.rb +1 -1
- data/lib/gratitude.rb +1 -0
- data/spec/cassettes/paydays.json +62 -0
- data/spec/gratitude/payday_spec.rb +269 -0
- data/spec/gratitude/profile_spec.rb +34 -10
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 148bd163e7811cecc2493f24c51e4772a24c524b
|
4
|
+
data.tar.gz: ab43ed1358db95ddccc6c4b7228a110622ef7850
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 490727f1acb43db4bb2d4abd38b7c705ab84c600717ad86f210658b5c814d67e3d843b4d12b8c99c67fb4faf6180788ad4cd45be363b10ff38c79979647822e2
|
7
|
+
data.tar.gz: 1440052a9d147e69b8f621209dfa536e912250761d4535531be9d520c74cba159ace19ba095043b3ea757aab82a6381e983a3a1c7cd65b48e3d1f9fc0d350965
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -7,12 +7,118 @@ gratitude
|
|
7
7
|
[](https://coveralls.io/r/JohnKellyFerguson/gratitude)
|
8
8
|
|
9
9
|
|
10
|
-
A simple Ruby wrapper for the Gittip API.
|
10
|
+
A simple Ruby wrapper for the [Gittip API](https://github.com/gittip/www.gittip.com#api).
|
11
11
|
|
12
12
|
**Note**: This gem is currently under development and is not ready for use in a production environment. A stable version is planned for v0.1.0. Please follow the [Changelog](CHANGELOG.md) to check the status of the project.
|
13
13
|
|
14
|
+
|
15
|
+
# Installation
|
16
|
+
--------------
|
17
|
+
gem install gratitude
|
18
|
+
|
19
|
+
# Usage
|
20
|
+
-------
|
21
|
+
The gratitude gem has four different components that interact with different aspects of the Gittip API. They are as follows:
|
22
|
+
|
23
|
+
* [Paydays](#paydays-source-code)
|
24
|
+
* [Statistics](#statistics)
|
25
|
+
* [Profile](#profile-source-code)
|
26
|
+
* [Tips](#tips)
|
27
|
+
|
28
|
+
When using gratitude to retrieve data from the Gittip API, please note that many of the JSON key names have been wrapped in more naturally sounding method names. However, all of the original JSON key names have also been maintained as aliases so as to maitain consistency with the original [Gittip API documentation](https://github.com/gittip/www.gittip.com#api).
|
29
|
+
|
30
|
+
##Paydays ([source code](https://github.com/JohnKellyFerguson/gratitude/blob/master/lib/gratitude/payday.rb))
|
31
|
+
|
32
|
+
The Gittip API provides access to the historical data of all its paydays. To retrieve this information, simply use the following command:
|
33
|
+
|
34
|
+
Gratitude::Payday.all
|
35
|
+
|
36
|
+
The above will return an array of Payday objects. Each Payday object responds to the following methods:
|
37
|
+
|
38
|
+
* `ach_fees_volume`
|
39
|
+
* `ach_volume`
|
40
|
+
* `charge_fees_volume`
|
41
|
+
* `charge_volume`
|
42
|
+
* `number_of_achs`
|
43
|
+
* `number_active`
|
44
|
+
* `number_of_failing_credit_cards`
|
45
|
+
* `number_of_missing_credit_cards`
|
46
|
+
* `number_of_charges`
|
47
|
+
* `number_of_participants`
|
48
|
+
* `number_of_tippers`
|
49
|
+
* `number_of_transfers`
|
50
|
+
* `transfer_volume`
|
51
|
+
* `ts_end`
|
52
|
+
* `ts_start`
|
53
|
+
|
54
|
+
You can then iterate through this array of payday objects to persist them to a database or get whatever information you need.
|
55
|
+
|
56
|
+
paydays = Gratitude::Payday.all
|
57
|
+
paydays.each do |payday|
|
58
|
+
# get whatever information you want from the payday object
|
59
|
+
# using the above mentioned methods.
|
60
|
+
end
|
61
|
+
|
62
|
+
Finally, if you just want to get the most recent payday, you can do so by using:
|
63
|
+
|
64
|
+
Gratitude::Payday.most_recent
|
65
|
+
|
66
|
+
##Statistics
|
67
|
+
* **TODO:** Implement Gittip's Statistics API into gratitude.
|
68
|
+
|
69
|
+
##Profile ([source code](https://github.com/JohnKellyFerguson/gratitude/blob/master/lib/gratitude/profile.rb))
|
70
|
+
|
71
|
+
The Profile aspect of the Gittip API allows you to get the public profile information of any Gittip user. To do so, just pass their username as an initialization argument to the `Gratitude::Profile` class.
|
72
|
+
|
73
|
+
Gratitude::Profile.new("johnkellyferguson")
|
74
|
+
|
75
|
+
The following will retrieve the public profile of the above user. You can then access all of the different information with the following methods:
|
76
|
+
|
77
|
+
* `avatar_url`
|
78
|
+
* `bitbucket_api_url`
|
79
|
+
* returns the user's bitbucket api url if they have connected a bitbucket account.
|
80
|
+
* otherwise, returns `nil`.
|
81
|
+
* `bitbucket_username`
|
82
|
+
* returns the user's bitbucket username if they have connected a bitbucket account.
|
83
|
+
* otherwise, returns `nil`.
|
84
|
+
* `bountysource_api_url`
|
85
|
+
* returns the user's bountysource api url if they have connected a bountysource account.
|
86
|
+
* otherwise, returns `nil`.
|
87
|
+
* `bountysource_username`
|
88
|
+
* returns the user's bountysource username if they have connected a bountysource account.
|
89
|
+
* otherwise, returns `nil`.
|
90
|
+
* `github_api_url`
|
91
|
+
* returns the user's github api url if they have connected a github account.
|
92
|
+
* otherwise, returns `nil`.
|
93
|
+
* `github_username`
|
94
|
+
* returns the user's github username if they have connected a github account.
|
95
|
+
* otherwise, returns `nil`.
|
96
|
+
* `twitter_api_url`
|
97
|
+
* returns the user's twitter api url if they have connected a twitter account.
|
98
|
+
* otherwise, returns `nil`.
|
99
|
+
* `amount_giving`
|
100
|
+
* returns the amount (as a float) the user has pledged to give this week.
|
101
|
+
* `amount_receiving`
|
102
|
+
* returns an estimate as a float of what the given user is expected to receive this week.
|
103
|
+
* `goal`
|
104
|
+
* returns the amount (as a float) that the user would like to receive weekly if the user set such a goal.
|
105
|
+
* returns `nil` if the user has defined themselves as a patron or has not set a specific monetary goal.
|
106
|
+
* `number`
|
107
|
+
* returns either `'singular'` or `'plural'` representing the type of account the user has.
|
108
|
+
* `id`
|
109
|
+
* the id of the user.
|
110
|
+
|
111
|
+
**TODO:** Implement the `my_tip` method into the Profile section once client authentication is finished.
|
112
|
+
|
113
|
+
##Tips
|
114
|
+
* **TODO:** Implement Gittip's Statistics API into gratitude.
|
115
|
+
|
116
|
+
|
14
117
|
#### Copyright and License
|
15
118
|
|
16
119
|
Copyright John Kelly Ferguson and Contributors, 2013
|
17
120
|
|
18
121
|
[MIT Licence](LICENSE.txt)
|
122
|
+
|
123
|
+
|
124
|
+
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Gratitude
|
2
|
+
class Payday
|
3
|
+
include HTTParty
|
4
|
+
base_uri "https://www.gittip.com/about/paydays.json"
|
5
|
+
PAYDAYS = []
|
6
|
+
|
7
|
+
attr_reader :ach_fees_volume, :ach_volume, :charge_fees_volume,
|
8
|
+
:charge_volume, :number_of_achs, :number_active,
|
9
|
+
:number_of_failing_credit_cards, :number_of_missing_credit_cards,
|
10
|
+
:number_of_charges, :number_of_participants, :number_of_tippers,
|
11
|
+
:number_of_transfers, :transfer_volume, :ts_end, :ts_start
|
12
|
+
|
13
|
+
# Provide aliases so all methods can correspond to the original Gittip API names.
|
14
|
+
alias :nachs :number_of_achs
|
15
|
+
alias :nactive :number_active
|
16
|
+
alias :ncc_failing :number_of_failing_credit_cards
|
17
|
+
alias :ncc_missing :number_of_missing_credit_cards
|
18
|
+
alias :ncharges :number_of_charges
|
19
|
+
alias :nparticipants :number_of_participants
|
20
|
+
alias :ntippers :number_of_tippers
|
21
|
+
alias :ntransfers :number_of_transfers
|
22
|
+
|
23
|
+
def initialize(options = {})
|
24
|
+
@ach_fees_volume = options["ach_fees_volume"]
|
25
|
+
@ach_volume = options["ach_volume"]
|
26
|
+
@charge_fees_volume = options["charge_fees_volume"]
|
27
|
+
@charge_volume = options["charge_volume"]
|
28
|
+
@number_of_achs = options["nachs"]
|
29
|
+
@number_active = options["nactive"]
|
30
|
+
@number_of_failing_credit_cards = options["ncc_failing"]
|
31
|
+
@number_of_missing_credit_cards = options["ncc_missing"]
|
32
|
+
@number_of_charges = options["ncharges"]
|
33
|
+
@number_of_participants = options["nparticipants"]
|
34
|
+
@number_of_tippers = options["ntippers"]
|
35
|
+
@number_of_transfers = options["ntransfers"]
|
36
|
+
@transfer_volume = options["transfer_volume"]
|
37
|
+
@ts_end = DateTime.parse(options["ts_end"])
|
38
|
+
@ts_start = DateTime.parse(options["ts_start"])
|
39
|
+
PAYDAYS << self
|
40
|
+
end
|
41
|
+
|
42
|
+
# Class Methods
|
43
|
+
def self.all
|
44
|
+
collect_paydays if PAYDAYS.empty?
|
45
|
+
PAYDAYS
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.most_recent
|
49
|
+
sort_by_ts_end.first
|
50
|
+
end
|
51
|
+
|
52
|
+
def self.sort_by_ts_end
|
53
|
+
all.sort_by { |p| p.ts_end }.reverse
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.get_paydays_from_gittip
|
57
|
+
get(base_uri).to_a
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.collect_paydays
|
61
|
+
get_paydays_from_gittip.each do |payday_hash|
|
62
|
+
Payday.new(payday_hash)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end # Payday
|
67
|
+
end # Gratitude
|
data/lib/gratitude/profile.rb
CHANGED
@@ -14,10 +14,12 @@ module Gratitude
|
|
14
14
|
def avatar_url
|
15
15
|
response["avatar"]
|
16
16
|
end
|
17
|
+
alias :avatar :avatar_url
|
17
18
|
|
18
19
|
def bitbucket_api_url
|
19
20
|
response["elsewhere"]["bitbucket"]
|
20
21
|
end
|
22
|
+
alias :bitbucket :bitbucket_api_url
|
21
23
|
|
22
24
|
def bitbucket_username
|
23
25
|
bitbucket_api_url.gsub("https://bitbucket.org/api/1.0/users/", "") if bitbucket_api_url
|
@@ -26,6 +28,7 @@ module Gratitude
|
|
26
28
|
def bountysource_api_url
|
27
29
|
response["elsewhere"]["bountysource"]
|
28
30
|
end
|
31
|
+
alias :bountysource :bountysource_api_url
|
29
32
|
|
30
33
|
def bountysource_username
|
31
34
|
bountysource_api_url.gsub("https://api.bountysource.com/users/", "") if bountysource_api_url
|
@@ -34,6 +37,7 @@ module Gratitude
|
|
34
37
|
def github_api_url
|
35
38
|
response["elsewhere"]["github"]
|
36
39
|
end
|
40
|
+
alias :github :github_api_url
|
37
41
|
|
38
42
|
def github_username
|
39
43
|
github_api_url.gsub("https://api.github.com/users/", "") if github_api_url
|
@@ -42,6 +46,7 @@ module Gratitude
|
|
42
46
|
def twitter_api_url
|
43
47
|
response["elsewhere"]["twitter"]
|
44
48
|
end
|
49
|
+
alias :twitter :twitter_api_url
|
45
50
|
|
46
51
|
def twitter_username
|
47
52
|
nil
|
@@ -50,10 +55,12 @@ module Gratitude
|
|
50
55
|
def amount_giving
|
51
56
|
response["giving"].to_f
|
52
57
|
end
|
58
|
+
alias :giving :amount_giving
|
53
59
|
|
54
60
|
def amount_receiving
|
55
61
|
response["receiving"].to_f
|
56
62
|
end
|
63
|
+
alias :receiving :amount_receiving
|
57
64
|
|
58
65
|
def goal
|
59
66
|
response["goal"].to_f if response["goal"]
|
@@ -66,6 +73,6 @@ module Gratitude
|
|
66
73
|
def id
|
67
74
|
response["id"]
|
68
75
|
end
|
69
|
-
|
76
|
+
|
70
77
|
end # Profile
|
71
78
|
end # Gratitude
|
data/lib/gratitude/version.rb
CHANGED
data/lib/gratitude.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
{
|
2
|
+
"http_interactions": [
|
3
|
+
{
|
4
|
+
"request": {
|
5
|
+
"method": "get",
|
6
|
+
"uri": "https://www.gittip.com/about/paydays.json",
|
7
|
+
"body": {
|
8
|
+
"encoding": "US-ASCII",
|
9
|
+
"string": ""
|
10
|
+
},
|
11
|
+
"headers": {
|
12
|
+
|
13
|
+
}
|
14
|
+
},
|
15
|
+
"response": {
|
16
|
+
"status": {
|
17
|
+
"code": 200,
|
18
|
+
"message": "OK"
|
19
|
+
},
|
20
|
+
"headers": {
|
21
|
+
"Access-Control-Allow-Origin": [
|
22
|
+
"*"
|
23
|
+
],
|
24
|
+
"Content-Type": [
|
25
|
+
"application/json"
|
26
|
+
],
|
27
|
+
"Date": [
|
28
|
+
"Mon, 16 Sep 2013 02:36:08 GMT"
|
29
|
+
],
|
30
|
+
"Server": [
|
31
|
+
"Aspen! Cheroot!"
|
32
|
+
],
|
33
|
+
"Set-Cookie": [
|
34
|
+
"csrf_token=P3qyOIxwiFSL41CerOQ4FCV6xe4ANQxA; expires=Mon, 15 Sep 2014 02:36:08 GMT; Path=/"
|
35
|
+
],
|
36
|
+
"Vary": [
|
37
|
+
"Cookie"
|
38
|
+
],
|
39
|
+
"X-Frame-Options": [
|
40
|
+
"SAMEORIGIN"
|
41
|
+
],
|
42
|
+
"X-Gittip-Version": [
|
43
|
+
"10.1.20"
|
44
|
+
],
|
45
|
+
"Transfer-Encoding": [
|
46
|
+
"chunked"
|
47
|
+
],
|
48
|
+
"Connection": [
|
49
|
+
"keep-alive"
|
50
|
+
]
|
51
|
+
},
|
52
|
+
"body": {
|
53
|
+
"encoding": "UTF-8",
|
54
|
+
"string": "[\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -2246.96,\n \"charge_fees_volume\": 216.09,\n \"charge_volume\": 4583.22,\n \"nachs\": 53,\n \"nactive\": 1719,\n \"ncc_failing\": 178,\n \"ncc_missing\": 1222,\n \"ncharges\": 276,\n \"nparticipants\": 19567,\n \"ntippers\": 1105,\n \"ntransfers\": 3309,\n \"transfer_volume\": 5464.38,\n \"ts_end\": \"2013-09-12T14:01:41.848587+00:00\",\n \"ts_start\": \"2013-09-12T12:36:52.967371+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -2176.68,\n \"charge_fees_volume\": 225.87,\n \"charge_volume\": 4972.77,\n \"nachs\": 46,\n \"nactive\": 1709,\n \"ncc_failing\": 179,\n \"ncc_missing\": 1225,\n \"ncharges\": 271,\n \"nparticipants\": 19224,\n \"ntippers\": 1088,\n \"ntransfers\": 3260,\n \"transfer_volume\": 5768.64,\n \"ts_end\": \"2013-09-05T18:38:26.802180+00:00\",\n \"ts_start\": \"2013-09-05T15:45:31.565974+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -2909.46,\n \"charge_fees_volume\": 218.37,\n \"charge_volume\": 4580.12,\n \"nachs\": 46,\n \"nactive\": 1668,\n \"ncc_failing\": 177,\n \"ncc_missing\": 1225,\n \"ncharges\": 284,\n \"nparticipants\": 18853,\n \"ntippers\": 1075,\n \"ntransfers\": 3174,\n \"transfer_volume\": 5197.81,\n \"ts_end\": \"2013-08-29T20:24:29.958827+00:00\",\n \"ts_start\": \"2013-08-29T19:10:14.523243+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -2152.78,\n \"charge_fees_volume\": 223.16,\n \"charge_volume\": 4818.22,\n \"nachs\": 48,\n \"nactive\": 1608,\n \"ncc_failing\": 172,\n \"ncc_missing\": 1223,\n \"ncharges\": 277,\n \"nparticipants\": 18466,\n \"ntippers\": 1033,\n \"ntransfers\": 3066,\n \"transfer_volume\": 5322.65,\n \"ts_end\": \"2013-08-22T13:11:52.149845+00:00\",\n \"ts_start\": \"2013-08-22T12:06:37.143034+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -2083.57,\n \"charge_fees_volume\": 225.97,\n \"charge_volume\": 4885.14,\n \"nachs\": 44,\n \"nactive\": 1564,\n \"ncc_failing\": 170,\n \"ncc_missing\": 1225,\n \"ncharges\": 280,\n \"nparticipants\": 18219,\n \"ntippers\": 996,\n \"ntransfers\": 2994,\n \"transfer_volume\": 5225.07,\n \"ts_end\": \"2013-08-15T14:29:33.631587+00:00\",\n \"ts_start\": \"2013-08-15T13:32:22.657493+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": -1825.88,\n \"charge_fees_volume\": 185.94,\n \"charge_volume\": 3910.39,\n \"nachs\": 39,\n \"nactive\": 1465,\n \"ncc_failing\": 157,\n \"ncc_missing\": 1210,\n \"ncharges\": 241,\n \"nparticipants\": 17679,\n \"ntippers\": 912,\n \"ntransfers\": 2824,\n \"transfer_volume\": 4358.61,\n \"ts_end\": \"2013-08-08T16:16:37.244010+00:00\",\n \"ts_start\": \"2013-08-08T15:19:40.258773+00:00\"\n },\n {\n \"ach_fees_volume\": 10.50,\n \"ach_volume\": -1928.64,\n \"charge_fees_volume\": 169.96,\n \"charge_volume\": 3690.53,\n \"nachs\": 42,\n \"nactive\": 1404,\n \"ncc_failing\": 157,\n \"ncc_missing\": 1199,\n \"ncharges\": 209,\n \"nparticipants\": 17297,\n \"ntippers\": 871,\n \"ntransfers\": 2734,\n \"transfer_volume\": 4425.03,\n \"ts_end\": \"2013-08-01T14:44:35.172297+00:00\",\n \"ts_start\": \"2013-08-01T13:56:13.208819+00:00\"\n },\n {\n \"ach_fees_volume\": 9.00,\n \"ach_volume\": -1885.84,\n \"charge_fees_volume\": 164.99,\n \"charge_volume\": 3591.77,\n \"nachs\": 36,\n \"nactive\": 1347,\n \"ncc_failing\": 153,\n \"ncc_missing\": 1196,\n \"ncharges\": 202,\n \"nparticipants\": 17024,\n \"ntippers\": 863,\n \"ntransfers\": 2626,\n \"transfer_volume\": 4427.93,\n \"ts_end\": \"2013-07-25T14:58:43.736802+00:00\",\n \"ts_start\": \"2013-07-25T13:49:13.980449+00:00\"\n },\n {\n \"ach_fees_volume\": 11.75,\n \"ach_volume\": -2095.21,\n \"charge_fees_volume\": 176.26,\n \"charge_volume\": 3733.98,\n \"nachs\": 47,\n \"nactive\": 1331,\n \"ncc_failing\": 150,\n \"ncc_missing\": 1196,\n \"ncharges\": 226,\n \"nparticipants\": 16679,\n \"ntippers\": 845,\n \"ntransfers\": 2579,\n \"transfer_volume\": 4219.47,\n \"ts_end\": \"2013-07-18T12:21:48.248953+00:00\",\n \"ts_start\": \"2013-07-18T11:34:20.576994+00:00\"\n },\n {\n \"ach_fees_volume\": 8.75,\n \"ach_volume\": -1809.39,\n \"charge_fees_volume\": 159.21,\n \"charge_volume\": 3404.34,\n \"nachs\": 35,\n \"nactive\": 1281,\n \"ncc_failing\": 140,\n \"ncc_missing\": 1152,\n \"ncharges\": 201,\n \"nparticipants\": 15826,\n \"ntippers\": 818,\n \"ntransfers\": 2515,\n \"transfer_volume\": 4213.72,\n \"ts_end\": \"2013-07-11T15:27:22.939452+00:00\",\n \"ts_start\": \"2013-07-11T14:45:52.088502+00:00\"\n },\n {\n \"ach_fees_volume\": 9.75,\n \"ach_volume\": -1849.21,\n \"charge_fees_volume\": 146.14,\n \"charge_volume\": 3119.29,\n \"nachs\": 39,\n \"nactive\": 1273,\n \"ncc_failing\": 148,\n \"ncc_missing\": 1233,\n \"ncharges\": 185,\n \"nparticipants\": 15425,\n \"ntippers\": 803,\n \"ntransfers\": 2467,\n \"transfer_volume\": 4127.63,\n \"ts_end\": \"2013-07-04T14:00:39.702630+00:00\",\n \"ts_start\": \"2013-07-04T11:37:41.489635+00:00\"\n },\n {\n \"ach_fees_volume\": 9.25,\n \"ach_volume\": -1944.99,\n \"charge_fees_volume\": 159.15,\n \"charge_volume\": 3298.75,\n \"nachs\": 37,\n \"nactive\": 1254,\n \"ncc_failing\": 131,\n \"ncc_missing\": 1108,\n \"ncharges\": 211,\n \"nparticipants\": 15183,\n \"ntippers\": 790,\n \"ntransfers\": 2438,\n \"transfer_volume\": 4110.90,\n \"ts_end\": \"2013-06-27T21:23:45.017715+00:00\",\n \"ts_start\": \"2013-06-27T18:24:27.898532+00:00\"\n },\n {\n \"ach_fees_volume\": 11.00,\n \"ach_volume\": -1885.73,\n \"charge_fees_volume\": 167.59,\n \"charge_volume\": 3516.74,\n \"nachs\": 44,\n \"nactive\": 1211,\n \"ncc_failing\": 129,\n \"ncc_missing\": 1087,\n \"ncharges\": 218,\n \"nparticipants\": 14855,\n \"ntippers\": 771,\n \"ntransfers\": 2387,\n \"transfer_volume\": 4148.37,\n \"ts_end\": \"2013-06-20T13:48:44.073362+00:00\",\n \"ts_start\": \"2013-06-20T12:12:53.292609+00:00\"\n },\n {\n \"ach_fees_volume\": 11.10,\n \"ach_volume\": -1451.13,\n \"charge_fees_volume\": 164.34,\n \"charge_volume\": 2829.78,\n \"nachs\": 37,\n \"nactive\": 1200,\n \"ncc_failing\": 126,\n \"ncc_missing\": 1070,\n \"ncharges\": 191,\n \"nparticipants\": 14588,\n \"ntippers\": 748,\n \"ntransfers\": 2336,\n \"transfer_volume\": 3584.21,\n \"ts_end\": \"2013-06-13T16:37:05.531308+00:00\",\n \"ts_start\": \"2013-06-13T13:52:39.362970+00:00\"\n },\n {\n \"ach_fees_volume\": 11.70,\n \"ach_volume\": -1673.18,\n \"charge_fees_volume\": 152.21,\n \"charge_volume\": 2677.06,\n \"nachs\": 39,\n \"nactive\": 1181,\n \"ncc_failing\": 123,\n \"ncc_missing\": 1043,\n \"ncharges\": 170,\n \"nparticipants\": 14224,\n \"ntippers\": 735,\n \"ntransfers\": 2328,\n \"transfer_volume\": 3659.21,\n \"ts_end\": \"2013-06-06T13:27:32.567105+00:00\",\n \"ts_start\": \"2013-06-06T12:00:07.350250+00:00\"\n },\n {\n \"ach_fees_volume\": 10.20,\n \"ach_volume\": -1332.61,\n \"charge_fees_volume\": 166.96,\n \"charge_volume\": 2931.48,\n \"nachs\": 34,\n \"nactive\": 1146,\n \"ncc_failing\": 125,\n \"ncc_missing\": 967,\n \"ncharges\": 187,\n \"nparticipants\": 13887,\n \"ntippers\": 713,\n \"ntransfers\": 2277,\n \"transfer_volume\": 3391.71,\n \"ts_end\": \"2013-05-30T13:34:13.226248+00:00\",\n \"ts_start\": \"2013-05-30T12:09:40.641417+00:00\"\n },\n {\n \"ach_fees_volume\": 10.80,\n \"ach_volume\": -1471.32,\n \"charge_fees_volume\": 160.32,\n \"charge_volume\": 2844.15,\n \"nachs\": 36,\n \"nactive\": 1118,\n \"ncc_failing\": 121,\n \"ncc_missing\": 929,\n \"ncharges\": 176,\n \"nparticipants\": 13508,\n \"ntippers\": 697,\n \"ntransfers\": 2229,\n \"transfer_volume\": 3449.21,\n \"ts_end\": \"2013-05-23T13:10:53.424416+00:00\",\n \"ts_start\": \"2013-05-23T11:48:32.981663+00:00\"\n },\n {\n \"ach_fees_volume\": 10.20,\n \"ach_volume\": -2002.82,\n \"charge_fees_volume\": 186.24,\n \"charge_volume\": 3258.74,\n \"nachs\": 34,\n \"nactive\": 1092,\n \"ncc_failing\": 108,\n \"ncc_missing\": 898,\n \"ncharges\": 210,\n \"nparticipants\": 12970,\n \"ntippers\": 671,\n \"ntransfers\": 2127,\n \"transfer_volume\": 3371.13,\n \"ts_end\": \"2013-05-16T14:14:34.113852+00:00\",\n \"ts_start\": \"2013-05-16T12:36:57.041446+00:00\"\n },\n {\n \"ach_fees_volume\": 9.60,\n \"ach_volume\": -1295.46,\n \"charge_fees_volume\": 144.04,\n \"charge_volume\": 2515.20,\n \"nachs\": 32,\n \"nactive\": 1000,\n \"ncc_failing\": 109,\n \"ncc_missing\": 841,\n \"ncharges\": 163,\n \"nparticipants\": 11723,\n \"ntippers\": 598,\n \"ntransfers\": 1914,\n \"transfer_volume\": 2881.62,\n \"ts_end\": \"2013-05-09T13:38:39.260356+00:00\",\n \"ts_start\": \"2013-05-09T12:24:11.591705+00:00\"\n },\n {\n \"ach_fees_volume\": 8.70,\n \"ach_volume\": -1418.33,\n \"charge_fees_volume\": 127.64,\n \"charge_volume\": 2224.54,\n \"nachs\": 29,\n \"nactive\": 955,\n \"ncc_failing\": 103,\n \"ncc_missing\": 796,\n \"ncharges\": 145,\n \"nparticipants\": 11305,\n \"ntippers\": 580,\n \"ntransfers\": 1843,\n \"transfer_volume\": 2731.37,\n \"ts_end\": \"2013-05-02T13:05:55.862292+00:00\",\n \"ts_start\": \"2013-05-02T11:56:44.052716+00:00\"\n },\n {\n \"ach_fees_volume\": 7.50,\n \"ach_volume\": -1311.13,\n \"charge_fees_volume\": 140.03,\n \"charge_volume\": 2457.44,\n \"nachs\": 25,\n \"nactive\": 923,\n \"ncc_failing\": 91,\n \"ncc_missing\": 768,\n \"ncharges\": 157,\n \"nparticipants\": 10985,\n \"ntippers\": 578,\n \"ntransfers\": 1821,\n \"transfer_volume\": 2896.12,\n \"ts_end\": \"2013-04-25T14:26:33.863180+00:00\",\n \"ts_start\": \"2013-04-25T13:11:45.729977+00:00\"\n },\n {\n \"ach_fees_volume\": 9.30,\n \"ach_volume\": -1315.96,\n \"charge_fees_volume\": 154.85,\n \"charge_volume\": 2649.20,\n \"nachs\": 31,\n \"nactive\": 873,\n \"ncc_failing\": 92,\n \"ncc_missing\": 736,\n \"ncharges\": 182,\n \"nparticipants\": 10647,\n \"ntippers\": 544,\n \"ntransfers\": 1736,\n \"transfer_volume\": 2716.05,\n \"ts_end\": \"2013-04-18T14:47:13.441234+00:00\",\n \"ts_start\": \"2013-04-18T14:11:24.158947+00:00\"\n },\n {\n \"ach_fees_volume\": 7.80,\n \"ach_volume\": -1083.94,\n \"charge_fees_volume\": 124.54,\n \"charge_volume\": 2084.76,\n \"nachs\": 26,\n \"nactive\": 762,\n \"ncc_failing\": 86,\n \"ncc_missing\": 638,\n \"ncharges\": 152,\n \"nparticipants\": 9722,\n \"ntippers\": 482,\n \"ntransfers\": 1502,\n \"transfer_volume\": 2234.39,\n \"ts_end\": \"2013-04-11T12:50:22.697402+00:00\",\n \"ts_start\": \"2013-04-11T11:47:12.931720+00:00\"\n },\n {\n \"ach_fees_volume\": 7.50,\n \"ach_volume\": -1160.06,\n \"charge_fees_volume\": 108.48,\n \"charge_volume\": 1884.47,\n \"nachs\": 25,\n \"nactive\": 740,\n \"ncc_failing\": 74,\n \"ncc_missing\": 620,\n \"ncharges\": 124,\n \"nparticipants\": 9514,\n \"ntippers\": 473,\n \"ntransfers\": 1474,\n \"transfer_volume\": 2342.39,\n \"ts_end\": \"2013-04-04T12:25:00.995681+00:00\",\n \"ts_start\": \"2013-04-04T11:39:18.681291+00:00\"\n },\n {\n \"ach_fees_volume\": 9.00,\n \"ach_volume\": -1365.47,\n \"charge_fees_volume\": 130.30,\n \"charge_volume\": 2271.08,\n \"nachs\": 30,\n \"nactive\": 695,\n \"ncc_failing\": 69,\n \"ncc_missing\": 606,\n \"ncharges\": 148,\n \"nparticipants\": 9297,\n \"ntippers\": 459,\n \"ntransfers\": 1376,\n \"transfer_volume\": 2393.89,\n \"ts_end\": \"2013-03-28T14:17:06.515475+00:00\",\n \"ts_start\": \"2013-03-28T13:05:23.740132+00:00\"\n },\n {\n \"ach_fees_volume\": 9.00,\n \"ach_volume\": -1359.50,\n \"charge_fees_volume\": 115.88,\n \"charge_volume\": 2032.42,\n \"nachs\": 30,\n \"nactive\": 640,\n \"ncc_failing\": 67,\n \"ncc_missing\": 579,\n \"ncharges\": 130,\n \"nparticipants\": 9059,\n \"ntippers\": 417,\n \"ntransfers\": 1253,\n \"transfer_volume\": 2212.39,\n \"ts_end\": \"2013-03-22T12:57:04.105470+00:00\",\n \"ts_start\": \"2013-03-22T12:11:45.041410+00:00\"\n },\n {\n \"ach_fees_volume\": 6.90,\n \"ach_volume\": -990.24,\n \"charge_fees_volume\": 97.76,\n \"charge_volume\": 1728.46,\n \"nachs\": 23,\n \"nactive\": 602,\n \"ncc_failing\": 66,\n \"ncc_missing\": 555,\n \"ncharges\": 108,\n \"nparticipants\": 8829,\n \"ntippers\": 388,\n \"ntransfers\": 1171,\n \"transfer_volume\": 2021.14,\n \"ts_end\": \"2013-03-14T20:48:02.670819+00:00\",\n \"ts_start\": \"2013-03-14T19:44:55.774744+00:00\"\n },\n {\n \"ach_fees_volume\": 7.80,\n \"ach_volume\": -896.71,\n \"charge_fees_volume\": 98.94,\n \"charge_volume\": 1711.26,\n \"nachs\": 26,\n \"nactive\": 583,\n \"ncc_failing\": 63,\n \"ncc_missing\": 542,\n \"ncharges\": 114,\n \"nparticipants\": 8632,\n \"ntippers\": 369,\n \"ntransfers\": 1120,\n \"transfer_volume\": 1933.14,\n \"ts_end\": \"2013-03-07T13:42:02.099630+00:00\",\n \"ts_start\": \"2013-03-07T13:00:08.405623+00:00\"\n },\n {\n \"ach_fees_volume\": 5.70,\n \"ach_volume\": -2975.45,\n \"charge_fees_volume\": 87.59,\n \"charge_volume\": 1538.96,\n \"nachs\": 19,\n \"nactive\": 558,\n \"ncc_failing\": 63,\n \"ncc_missing\": 528,\n \"ncharges\": 98,\n \"nparticipants\": 8465,\n \"ntippers\": 347,\n \"ntransfers\": 1070,\n \"transfer_volume\": 1843.98,\n \"ts_end\": \"2013-02-28T18:21:18.214478+00:00\",\n \"ts_start\": \"2013-02-28T17:11:06.449708+00:00\"\n },\n {\n \"ach_fees_volume\": 4.50,\n \"ach_volume\": -562.23,\n \"charge_fees_volume\": 79.07,\n \"charge_volume\": 1360.48,\n \"nachs\": 15,\n \"nactive\": 533,\n \"ncc_failing\": 61,\n \"ncc_missing\": 519,\n \"ncharges\": 92,\n \"nparticipants\": 8270,\n \"ntippers\": 330,\n \"ntransfers\": 1020,\n \"transfer_volume\": 1678.48,\n \"ts_end\": \"2013-02-21T17:29:19.708366+00:00\",\n \"ts_start\": \"2013-02-21T17:08:55.242202+00:00\"\n },\n {\n \"ach_fees_volume\": 5.40,\n \"ach_volume\": -2004.37,\n \"charge_fees_volume\": 86.50,\n \"charge_volume\": 1493.25,\n \"nachs\": 18,\n \"nactive\": 515,\n \"ncc_failing\": 57,\n \"ncc_missing\": 512,\n \"ncharges\": 100,\n \"nparticipants\": 8138,\n \"ntippers\": 326,\n \"ntransfers\": 980,\n \"transfer_volume\": 1730.06,\n \"ts_end\": \"2013-02-14T14:37:23.950795+00:00\",\n \"ts_start\": \"2013-02-14T13:38:08.967383+00:00\"\n },\n {\n \"ach_fees_volume\": 3.90,\n \"ach_volume\": -1021.08,\n \"charge_fees_volume\": 86.45,\n \"charge_volume\": 1483.76,\n \"nachs\": 13,\n \"nactive\": 457,\n \"ncc_failing\": 53,\n \"ncc_missing\": 491,\n \"ncharges\": 101,\n \"nparticipants\": 7818,\n \"ntippers\": 292,\n \"ntransfers\": 865,\n \"transfer_volume\": 1623.88,\n \"ts_end\": \"2013-02-07T12:38:05.201953+00:00\",\n \"ts_start\": \"2013-02-07T12:00:20.239147+00:00\"\n },\n {\n \"ach_fees_volume\": 3.60,\n \"ach_volume\": -590.64,\n \"charge_fees_volume\": 77.26,\n \"charge_volume\": 1320.61,\n \"nachs\": 12,\n \"nactive\": 455,\n \"ncc_failing\": 72,\n \"ncc_missing\": 697,\n \"ncharges\": 91,\n \"nparticipants\": 7716,\n \"ntippers\": 297,\n \"ntransfers\": 829,\n \"transfer_volume\": 1542.88,\n \"ts_end\": \"2013-01-31T15:16:08.473804+00:00\",\n \"ts_start\": \"2013-01-31T14:21:29.964045+00:00\"\n },\n {\n \"ach_fees_volume\": 3.60,\n \"ach_volume\": -562.50,\n \"charge_fees_volume\": 69.90,\n \"charge_volume\": 1238.02,\n \"nachs\": 12,\n \"nactive\": 458,\n \"ncc_failing\": 44,\n \"ncc_missing\": 496,\n \"ncharges\": 77,\n \"nparticipants\": 7623,\n \"ntippers\": 294,\n \"ntransfers\": 835,\n \"transfer_volume\": 1551.95,\n \"ts_end\": \"2013-01-24T14:59:46.558362+00:00\",\n \"ts_start\": \"2013-01-24T14:15:23.073011+00:00\"\n },\n {\n \"ach_fees_volume\": 3.30,\n \"ach_volume\": -602.69,\n \"charge_fees_volume\": 85.89,\n \"charge_volume\": 1477.38,\n \"nachs\": 11,\n \"nactive\": 456,\n \"ncc_failing\": 47,\n \"ncc_missing\": 463,\n \"ncharges\": 100,\n \"nparticipants\": 7500,\n \"ntippers\": 288,\n \"ntransfers\": 797,\n \"transfer_volume\": 1506.70,\n \"ts_end\": \"2013-01-17T14:40:26.395489+00:00\",\n \"ts_start\": \"2013-01-17T14:05:01.620168+00:00\"\n },\n {\n \"ach_fees_volume\": 3.30,\n \"ach_volume\": -563.51,\n \"charge_fees_volume\": 74.93,\n \"charge_volume\": 1298.85,\n \"nachs\": 11,\n \"nactive\": 443,\n \"ncc_failing\": 68,\n \"ncc_missing\": 721,\n \"ncharges\": 86,\n \"nparticipants\": 7319,\n \"ntippers\": 282,\n \"ntransfers\": 772,\n \"transfer_volume\": 1471.19,\n \"ts_end\": \"2013-01-10T13:34:52.077455+00:00\",\n \"ts_start\": \"2013-01-10T12:32:05.299853+00:00\"\n },\n {\n \"ach_fees_volume\": 2.40,\n \"ach_volume\": -526.02,\n \"charge_fees_volume\": 71.26,\n \"charge_volume\": 1241.60,\n \"nachs\": 8,\n \"nactive\": 432,\n \"ncc_failing\": 43,\n \"ncc_missing\": 450,\n \"ncharges\": 81,\n \"nparticipants\": 7155,\n \"ntippers\": 279,\n \"ntransfers\": 765,\n \"transfer_volume\": 1425.24,\n \"ts_end\": \"2013-01-03T15:06:40.714021+00:00\",\n \"ts_start\": \"2013-01-03T13:41:18.062207+00:00\"\n },\n {\n \"ach_fees_volume\": 3.60,\n \"ach_volume\": -559.07,\n \"charge_fees_volume\": 73.08,\n \"charge_volume\": 1282.19,\n \"nachs\": 12,\n \"nactive\": 423,\n \"ncc_failing\": 44,\n \"ncc_missing\": 447,\n \"ncharges\": 82,\n \"nparticipants\": 7069,\n \"ntippers\": 274,\n \"ntransfers\": 753,\n \"transfer_volume\": 1447.74,\n \"ts_end\": \"2012-12-27T13:04:35.707600+00:00\",\n \"ts_start\": \"2012-12-27T12:32:21.391256+00:00\"\n },\n {\n \"ach_fees_volume\": 3.00,\n \"ach_volume\": -529.42,\n \"charge_fees_volume\": 78.08,\n \"charge_volume\": 1350.72,\n \"nachs\": 10,\n \"nactive\": 429,\n \"ncc_failing\": 41,\n \"ncc_missing\": 438,\n \"ncharges\": 90,\n \"nparticipants\": 6997,\n \"ntippers\": 274,\n \"ntransfers\": 757,\n \"transfer_volume\": 1457.02,\n \"ts_end\": \"2012-12-20T13:22:16.494733+00:00\",\n \"ts_start\": \"2012-12-20T12:51:36.881051+00:00\"\n },\n {\n \"ach_fees_volume\": 3.30,\n \"ach_volume\": -496.60,\n \"charge_fees_volume\": 69.48,\n \"charge_volume\": 1219.30,\n \"nachs\": 11,\n \"nactive\": 423,\n \"ncc_failing\": 43,\n \"ncc_missing\": 433,\n \"ncharges\": 78,\n \"nparticipants\": 6863,\n \"ntippers\": 268,\n \"ntransfers\": 752,\n \"transfer_volume\": 1426.53,\n \"ts_end\": \"2012-12-13T14:24:43.914858+00:00\",\n \"ts_start\": \"2012-12-13T13:09:06.330355+00:00\"\n },\n {\n \"ach_fees_volume\": 3.00,\n \"ach_volume\": -305.03,\n \"charge_fees_volume\": 73.94,\n \"charge_volume\": 1272.94,\n \"nachs\": 10,\n \"nactive\": 419,\n \"ncc_failing\": 55,\n \"ncc_missing\": 572,\n \"ncharges\": 86,\n \"nparticipants\": 6790,\n \"ntippers\": 265,\n \"ntransfers\": 751,\n \"transfer_volume\": 1372.61,\n \"ts_end\": \"2012-12-06T14:07:47.257937+00:00\",\n \"ts_start\": \"2012-12-06T13:27:27.158125+00:00\"\n },\n {\n \"ach_fees_volume\": 3.30,\n \"ach_volume\": -641.62,\n \"charge_fees_volume\": 93.58,\n \"charge_volume\": 1576.84,\n \"nachs\": 11,\n \"nactive\": 424,\n \"ncc_failing\": 37,\n \"ncc_missing\": 424,\n \"ncharges\": 113,\n \"nparticipants\": 6641,\n \"ntippers\": 271,\n \"ntransfers\": 762,\n \"transfer_volume\": 1464.39,\n \"ts_end\": \"2012-11-29T13:16:06.900440+00:00\",\n \"ts_start\": \"2012-11-29T12:45:18.180298+00:00\"\n },\n {\n \"ach_fees_volume\": 3.60,\n \"ach_volume\": -606.30,\n \"charge_fees_volume\": 68.15,\n \"charge_volume\": 1207.69,\n \"nachs\": 12,\n \"nactive\": 431,\n \"ncc_failing\": 33,\n \"ncc_missing\": 410,\n \"ncharges\": 75,\n \"nparticipants\": 6500,\n \"ntippers\": 273,\n \"ntransfers\": 765,\n \"transfer_volume\": 1491.89,\n \"ts_end\": \"2012-11-22T16:06:00.629991+00:00\",\n \"ts_start\": \"2012-11-22T15:37:59.390225+00:00\"\n },\n {\n \"ach_fees_volume\": 3.00,\n \"ach_volume\": -456.67,\n \"charge_fees_volume\": 72.07,\n \"charge_volume\": 1255.17,\n \"nachs\": 10,\n \"nactive\": 427,\n \"ncc_failing\": 35,\n \"ncc_missing\": 407,\n \"ncharges\": 82,\n \"nparticipants\": 6408,\n \"ntippers\": 274,\n \"ntransfers\": 765,\n \"transfer_volume\": 1512.89,\n \"ts_end\": \"2012-11-15T15:06:05.173137+00:00\",\n \"ts_start\": \"2012-11-15T14:37:56.650669+00:00\"\n },\n {\n \"ach_fees_volume\": 2.40,\n \"ach_volume\": -429.02,\n \"charge_fees_volume\": 79.41,\n \"charge_volume\": 1385.79,\n \"nachs\": 8,\n \"nactive\": 429,\n \"ncc_failing\": 29,\n \"ncc_missing\": 400,\n \"ncharges\": 90,\n \"nparticipants\": 6286,\n \"ntippers\": 273,\n \"ntransfers\": 771,\n \"transfer_volume\": 1529.61,\n \"ts_end\": \"2012-11-08T21:36:47.732642+00:00\",\n \"ts_start\": \"2012-11-08T20:47:52.767141+00:00\"\n },\n {\n \"ach_fees_volume\": 3.30,\n \"ach_volume\": -665.16,\n \"charge_fees_volume\": 70.62,\n \"charge_volume\": 1216.72,\n \"nachs\": 11,\n \"nactive\": 426,\n \"ncc_failing\": 39,\n \"ncc_missing\": 387,\n \"ncharges\": 82,\n \"nparticipants\": 6095,\n \"ntippers\": 270,\n \"ntransfers\": 771,\n \"transfer_volume\": 1407.14,\n \"ts_end\": \"2012-11-01T23:48:23.624102+00:00\",\n \"ts_start\": \"2012-11-01T23:07:31.044081+00:00\"\n },\n {\n \"ach_fees_volume\": 3.90,\n \"ach_volume\": -567.02,\n \"charge_fees_volume\": 79.23,\n \"charge_volume\": 1405.33,\n \"nachs\": 13,\n \"nactive\": 433,\n \"ncc_failing\": 36,\n \"ncc_missing\": 380,\n \"ncharges\": 87,\n \"nparticipants\": 6009,\n \"ntippers\": 274,\n \"ntransfers\": 777,\n \"transfer_volume\": 1602.72,\n \"ts_end\": \"2012-10-25T12:31:16.908494+00:00\",\n \"ts_start\": \"2012-10-25T12:02:52.010809+00:00\"\n },\n {\n \"ach_fees_volume\": 4.20,\n \"ach_volume\": -674.47,\n \"charge_fees_volume\": 81.26,\n \"charge_volume\": 1451.11,\n \"nachs\": 14,\n \"nactive\": 431,\n \"ncc_failing\": 29,\n \"ncc_missing\": 372,\n \"ncharges\": 88,\n \"nparticipants\": 5884,\n \"ntippers\": 274,\n \"ntransfers\": 794,\n \"transfer_volume\": 1663.72,\n \"ts_end\": \"2012-10-18T14:14:24.122195+00:00\",\n \"ts_start\": \"2012-10-18T13:45:51.045152+00:00\"\n },\n {\n \"ach_fees_volume\": 3.60,\n \"ach_volume\": -631.64,\n \"charge_fees_volume\": 77.14,\n \"charge_volume\": 1390.08,\n \"nachs\": 12,\n \"nactive\": 432,\n \"ncc_failing\": 23,\n \"ncc_missing\": 363,\n \"ncharges\": 82,\n \"nparticipants\": 5780,\n \"ntippers\": 275,\n \"ntransfers\": 791,\n \"transfer_volume\": 1667.59,\n \"ts_end\": \"2012-10-11T16:27:44.581458+00:00\",\n \"ts_start\": \"2012-10-11T16:00:55.171435+00:00\"\n },\n {\n \"ach_fees_volume\": 3.00,\n \"ach_volume\": -1236.98,\n \"charge_fees_volume\": 90.33,\n \"charge_volume\": 1546.83,\n \"nachs\": 10,\n \"nactive\": 428,\n \"ncc_failing\": 18,\n \"ncc_missing\": 350,\n \"ncharges\": 106,\n \"nparticipants\": 5659,\n \"ntippers\": 273,\n \"ntransfers\": 822,\n \"transfer_volume\": 1542.36,\n \"ts_end\": \"2012-10-04T13:49:40.950112+00:00\",\n \"ts_start\": \"2012-10-04T13:09:59.575767+00:00\"\n },\n {\n \"ach_fees_volume\": 2.10,\n \"ach_volume\": -370.14,\n \"charge_fees_volume\": 83.17,\n \"charge_volume\": 1404.85,\n \"nachs\": 7,\n \"nactive\": 402,\n \"ncc_failing\": 18,\n \"ncc_missing\": 331,\n \"ncharges\": 100,\n \"nparticipants\": 5313,\n \"ntippers\": 258,\n \"ntransfers\": 763,\n \"transfer_volume\": 1358.92,\n \"ts_end\": \"2012-09-27T15:40:38.948322+00:00\",\n \"ts_start\": \"2012-09-27T13:59:13.358022+00:00\"\n },\n {\n \"ach_fees_volume\": 1.50,\n \"ach_volume\": -307.90,\n \"charge_fees_volume\": 62.64,\n \"charge_volume\": 1109.73,\n \"nachs\": 5,\n \"nactive\": 370,\n \"ncc_failing\": 7,\n \"ncc_missing\": 292,\n \"ncharges\": 69,\n \"nparticipants\": 4744,\n \"ntippers\": 230,\n \"ntransfers\": 733,\n \"transfer_volume\": 1261.82,\n \"ts_end\": \"2012-09-20T13:08:07.296572+00:00\",\n \"ts_start\": \"2012-09-20T12:42:03.698033+00:00\"\n },\n {\n \"ach_fees_volume\": 1.50,\n \"ach_volume\": -491.81,\n \"charge_fees_volume\": 69.70,\n \"charge_volume\": 1208.16,\n \"nachs\": 5,\n \"nactive\": 361,\n \"ncc_failing\": 8,\n \"ncc_missing\": 288,\n \"ncharges\": 80,\n \"nparticipants\": 4642,\n \"ntippers\": 224,\n \"ntransfers\": 705,\n \"transfer_volume\": 1225.52,\n \"ts_end\": \"2012-09-13T07:01:02.417488+00:00\",\n \"ts_start\": \"2012-09-13T06:38:51.300291+00:00\"\n },\n {\n \"ach_fees_volume\": 1.50,\n \"ach_volume\": -309.34,\n \"charge_fees_volume\": 61.42,\n \"charge_volume\": 1084.32,\n \"nachs\": 5,\n \"nactive\": 343,\n \"ncc_failing\": 13,\n \"ncc_missing\": 768,\n \"ncharges\": 68,\n \"nparticipants\": 4515,\n \"ntippers\": 207,\n \"ntransfers\": 708,\n \"transfer_volume\": 1174.43,\n \"ts_end\": \"2012-09-06T23:29:56.276524+00:00\",\n \"ts_start\": \"2012-09-06T22:29:53.060895+00:00\"\n },\n {\n \"ach_fees_volume\": 1.50,\n \"ach_volume\": -931.37,\n \"charge_fees_volume\": 50.79,\n \"charge_volume\": 914.85,\n \"nachs\": 5,\n \"nactive\": 337,\n \"ncc_failing\": 5,\n \"ncc_missing\": 276,\n \"ncharges\": 54,\n \"nparticipants\": 4417,\n \"ntippers\": 203,\n \"ntransfers\": 693,\n \"transfer_volume\": 1127.43,\n \"ts_end\": \"2012-08-31T13:40:27.352876+00:00\",\n \"ts_start\": \"2012-08-31T12:53:04.080298+00:00\"\n },\n {\n \"ach_fees_volume\": 0.60,\n \"ach_volume\": -1147.50,\n \"charge_fees_volume\": 60.91,\n \"charge_volume\": 1054.66,\n \"nachs\": 2,\n \"nactive\": 322,\n \"ncc_failing\": 9,\n \"ncc_missing\": 518,\n \"ncharges\": 70,\n \"nparticipants\": 4179,\n \"ntippers\": 197,\n \"ntransfers\": 683,\n \"transfer_volume\": 1070.07,\n \"ts_end\": \"2012-08-24T13:47:17.406442+00:00\",\n \"ts_start\": \"2012-08-24T13:25:40.605212+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 54.78,\n \"charge_volume\": 964.40,\n \"nachs\": 0,\n \"nactive\": 313,\n \"ncc_failing\": 4,\n \"ncc_missing\": 258,\n \"ncharges\": 61,\n \"nparticipants\": 4070,\n \"ntippers\": 187,\n \"ntransfers\": 692,\n \"transfer_volume\": 1052.09,\n \"ts_end\": \"2012-08-17T18:55:12.464828+00:00\",\n \"ts_start\": \"2012-08-17T18:39:59.835695+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 47.75,\n \"charge_volume\": 857.89,\n \"nachs\": 0,\n \"nactive\": 298,\n \"ncc_failing\": 4,\n \"ncc_missing\": 248,\n \"ncharges\": 51,\n \"nparticipants\": 3974,\n \"ntippers\": 179,\n \"ntransfers\": 667,\n \"transfer_volume\": 1038.38,\n \"ts_end\": \"2012-08-10T19:19:40.404633+00:00\",\n \"ts_start\": \"2012-08-10T19:05:05.938610+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 45.27,\n \"charge_volume\": 986.37,\n \"nachs\": 0,\n \"nactive\": 286,\n \"ncc_failing\": 2,\n \"ncc_missing\": 235,\n \"ncharges\": 65,\n \"nparticipants\": 3802,\n \"ntippers\": 172,\n \"ntransfers\": 645,\n \"transfer_volume\": 997.27,\n \"ts_end\": \"2012-08-03T15:11:29.309878+00:00\",\n \"ts_start\": \"2012-08-03T14:57:42.935184+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 71.36,\n \"charge_volume\": 1623.21,\n \"nachs\": 0,\n \"nactive\": 261,\n \"ncc_failing\": 6,\n \"ncc_missing\": 226,\n \"ncharges\": 126,\n \"nparticipants\": 3539,\n \"ntippers\": 151,\n \"ntransfers\": 628,\n \"transfer_volume\": 955.53,\n \"ts_end\": \"2012-07-27T21:08:04.390366+00:00\",\n \"ts_start\": \"2012-07-27T20:51:21.754544+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 46.29,\n \"charge_volume\": 509.51,\n \"nachs\": 0,\n \"nactive\": 191,\n \"ncc_failing\": 1,\n \"ncc_missing\": 156,\n \"ncharges\": 89,\n \"nparticipants\": 1897,\n \"ntippers\": 110,\n \"ntransfers\": 509,\n \"transfer_volume\": 600.99,\n \"ts_end\": \"2012-07-20T20:59:44.915658+00:00\",\n \"ts_start\": \"2012-07-20T19:28:19.952586+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 46.14,\n \"charge_volume\": 555.27,\n \"nachs\": 0,\n \"nactive\": 176,\n \"ncc_failing\": 0,\n \"ncc_missing\": 143,\n \"ncharges\": 83,\n \"nparticipants\": 1698,\n \"ntippers\": 98,\n \"ntransfers\": 485,\n \"transfer_volume\": 615.66,\n \"ts_end\": \"2012-07-13T18:01:43.170725+00:00\",\n \"ts_start\": \"2012-07-13T17:49:02.299015+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 33.63,\n \"charge_volume\": 375.24,\n \"nachs\": 0,\n \"nactive\": 130,\n \"ncc_failing\": 0,\n \"ncc_missing\": 126,\n \"ncharges\": 64,\n \"nparticipants\": 1242,\n \"ntippers\": 71,\n \"ntransfers\": 343,\n \"transfer_volume\": 379.56,\n \"ts_end\": \"2012-07-06T18:46:29.486210+00:00\",\n \"ts_start\": \"2012-07-06T18:37:13.603400+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 15.76,\n \"charge_volume\": 111.00,\n \"nachs\": 0,\n \"nactive\": 95,\n \"ncc_failing\": 0,\n \"ncc_missing\": 84,\n \"ncharges\": 38,\n \"nparticipants\": 833,\n \"ntippers\": 44,\n \"ntransfers\": 241,\n \"transfer_volume\": 110.64,\n \"ts_end\": \"2012-06-29T17:10:08.981798+00:00\",\n \"ts_start\": \"2012-06-29T17:05:03.867698+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 4.62,\n \"charge_volume\": 25.29,\n \"nachs\": 0,\n \"nactive\": 50,\n \"ncc_failing\": 0,\n \"ncc_missing\": 52,\n \"ncharges\": 12,\n \"nparticipants\": 622,\n \"ntippers\": 19,\n \"ntransfers\": 83,\n \"transfer_volume\": 30.08,\n \"ts_end\": \"2012-06-22T15:34:22.371432+00:00\",\n \"ts_start\": \"2012-06-22T15:30:42.882306+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 0.69,\n \"charge_volume\": 2.05,\n \"nachs\": 0,\n \"nactive\": 25,\n \"ncc_failing\": 17,\n \"ncc_missing\": 26,\n \"ncharges\": 2,\n \"nparticipants\": 477,\n \"ntippers\": 7,\n \"ntransfers\": 25,\n \"transfer_volume\": 4.24,\n \"ts_end\": \"2012-06-15T11:10:41.612864+00:00\",\n \"ts_start\": \"2012-06-15T11:09:54.298416+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 2.11,\n \"charge_volume\": 25.28,\n \"nachs\": 0,\n \"nactive\": 25,\n \"ncc_failing\": 1,\n \"ncc_missing\": 18,\n \"ncharges\": 11,\n \"nparticipants\": 175,\n \"ntippers\": 12,\n \"ntransfers\": 49,\n \"transfer_volume\": 24.80,\n \"ts_end\": \"2012-06-08T12:03:19.889215+00:00\",\n \"ts_start\": \"2012-06-08T12:02:45.182409+00:00\"\n },\n {\n \"ach_fees_volume\": 0.00,\n \"ach_volume\": 0.00,\n \"charge_fees_volume\": 0.34,\n \"charge_volume\": 3.30,\n \"nachs\": 0,\n \"nactive\": 4,\n \"ncc_failing\": 0,\n \"ncc_missing\": 0,\n \"ncharges\": 2,\n \"nparticipants\": 2,\n \"ntippers\": 2,\n \"ntransfers\": 4,\n \"transfer_volume\": 2.96,\n \"ts_end\": \"2012-06-01T07:16:31.080825+00:00\",\n \"ts_start\": \"2012-06-01T07:01:13.376763+00:00\"\n }\n]"
|
55
|
+
},
|
56
|
+
"http_version": null
|
57
|
+
},
|
58
|
+
"recorded_at": "Mon, 16 Sep 2013 02:36:10 GMT"
|
59
|
+
}
|
60
|
+
],
|
61
|
+
"recorded_with": "VCR 2.5.0"
|
62
|
+
}
|
@@ -0,0 +1,269 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Gratitude::Payday do
|
4
|
+
|
5
|
+
describe "default attributes" do
|
6
|
+
|
7
|
+
it "should include httparty methods" do
|
8
|
+
Gratitude::Payday.should include(HTTParty)
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should have the base uri set to gittip's payday api endpoint" do
|
12
|
+
expect(Gratitude::Payday.base_uri).to eq("https://www.gittip.com/about/paydays.json")
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should have the PAYDAYS constant initially set to an empty array" do
|
16
|
+
expect(Gratitude::Payday::PAYDAYS).to eq([])
|
17
|
+
end
|
18
|
+
|
19
|
+
end # default attributes
|
20
|
+
|
21
|
+
describe "class methods" do
|
22
|
+
|
23
|
+
before do
|
24
|
+
VCR.insert_cassette "paydays"
|
25
|
+
end
|
26
|
+
|
27
|
+
after do
|
28
|
+
VCR.eject_cassette
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "#get_paydays_from_gittip" do
|
32
|
+
it "returns an array" do
|
33
|
+
expect(Gratitude::Payday.get_paydays_from_gittip.class).to be(Array)
|
34
|
+
end
|
35
|
+
|
36
|
+
it "returns the correct number of items in the array" do
|
37
|
+
expect(Gratitude::Payday.get_paydays_from_gittip.size).to eq(68)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
describe "#collect_paydays" do
|
42
|
+
it "creates all payday objects and puts them in the PAYDAYS constant" do
|
43
|
+
expect {
|
44
|
+
Gratitude::Payday.collect_paydays
|
45
|
+
}.to change { Gratitude::Payday::PAYDAYS.size }.from(0).to(68)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#all" do
|
50
|
+
before do
|
51
|
+
Gratitude::Payday::PAYDAYS = []
|
52
|
+
end
|
53
|
+
|
54
|
+
it "returns an array" do
|
55
|
+
expect(Gratitude::Payday.all.class).to be(Array)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "updates the PAYDAYS constant when it is empty" do
|
59
|
+
expect(Gratitude::Payday.all.size).to eq(68)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "its array should be comprised of Payday objects" do
|
63
|
+
expect(Gratitude::Payday.all.first.class).to be(Gratitude::Payday)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "#sort_by_ts_end" do
|
68
|
+
it "places the newest payday first" do
|
69
|
+
expect(Gratitude::Payday.sort_by_ts_end.first.ts_end.year).to eq(2013)
|
70
|
+
expect(Gratitude::Payday.sort_by_ts_end.first.ts_end.month).to eq(9)
|
71
|
+
expect(Gratitude::Payday.sort_by_ts_end.first.ts_end.day).to eq(12)
|
72
|
+
end
|
73
|
+
|
74
|
+
it "places the oldest item last" do
|
75
|
+
expect(Gratitude::Payday.sort_by_ts_end.last.ts_end.year).to eq(2012)
|
76
|
+
expect(Gratitude::Payday.sort_by_ts_end.last.ts_end.month).to eq(6)
|
77
|
+
expect(Gratitude::Payday.sort_by_ts_end.last.ts_end.day).to eq(1)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#most_recent" do
|
82
|
+
it "returns the most recent payday" do
|
83
|
+
expect(Gratitude::Payday.most_recent.ts_end.year).to eq(2013)
|
84
|
+
expect(Gratitude::Payday.most_recent.ts_end.month).to eq(9)
|
85
|
+
expect(Gratitude::Payday.most_recent.ts_end.day).to eq(12)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
end # class methods
|
90
|
+
|
91
|
+
describe "initialization and instance methods" do
|
92
|
+
|
93
|
+
it "should add the initialized object to the PAYDAYS constant" do
|
94
|
+
expect { Gratitude::Payday.new( {
|
95
|
+
'ts_end' => "2013-09-12T14:01:41.848587+00:00",
|
96
|
+
'ts_start' => "2013-09-12T12:36:52.967371+00:00"
|
97
|
+
} )
|
98
|
+
}.to change{ Gratitude::Payday::PAYDAYS.size }.by(1)
|
99
|
+
end
|
100
|
+
|
101
|
+
let(:payday) { Gratitude::Payday.new( {
|
102
|
+
'ach_fees_volume' => 0,
|
103
|
+
'ach_volume' => -2246.96,
|
104
|
+
'charge_fees_volume' => 216.09,
|
105
|
+
'charge_volume' => 4583.22,
|
106
|
+
'nachs' => 53,
|
107
|
+
'nactive' => 1719,
|
108
|
+
'ncc_failing' => 178,
|
109
|
+
'ncc_missing' => 1222,
|
110
|
+
'ncharges' => 276,
|
111
|
+
'nparticipants' => 19567,
|
112
|
+
'ntippers' => 1105,
|
113
|
+
'ntransfers' => 3309,
|
114
|
+
'transfer_volume' => 5464.38,
|
115
|
+
'ts_end' => "2013-09-12T14:01:41.848587+00:00",
|
116
|
+
'ts_start' => "2013-09-12T12:36:52.967371+00:00"
|
117
|
+
} )
|
118
|
+
}
|
119
|
+
|
120
|
+
describe "#ach_fees_volume" do
|
121
|
+
it "should return the correct ach fees volume" do
|
122
|
+
expect(payday.ach_fees_volume).to eq(0)
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
describe "#ach_volume" do
|
127
|
+
it "should return the correct ach volume" do
|
128
|
+
expect(payday.ach_volume).to eq(-2246.96)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "#charge_fees_volume" do
|
133
|
+
it "should return the correct charge fees volume" do
|
134
|
+
expect(payday.charge_fees_volume).to eq(216.09)
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "#charge_volume" do
|
139
|
+
it "should return the correct charge volume" do
|
140
|
+
expect(payday.charge_volume).to eq(4583.22)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
describe "#number_of_achs" do
|
145
|
+
it "should return the correct number of achs" do
|
146
|
+
expect(payday.number_of_achs).to eq(53)
|
147
|
+
end
|
148
|
+
|
149
|
+
|
150
|
+
it "should return the same value as #nachs" do
|
151
|
+
expect(payday.number_of_achs).to eq(payday.nachs)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
describe "#number_active" do
|
156
|
+
it "should return the correct number active" do
|
157
|
+
expect(payday.number_active).to eq(1719)
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should return the same value as #nactive" do
|
161
|
+
expect(payday.number_active).to eq(payday.nactive)
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
describe "#number_of_failing_credit_cards" do
|
166
|
+
it "should return the correct number of failing credit cards" do
|
167
|
+
expect(payday.number_of_failing_credit_cards).to eq(178)
|
168
|
+
end
|
169
|
+
|
170
|
+
it "should return the same value as #ncc_failing" do
|
171
|
+
expect(payday.number_of_failing_credit_cards).to eq(payday.ncc_failing)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
describe "#number_of_missing_credit_cards" do
|
176
|
+
it "should return the correct number of missing credit cards" do
|
177
|
+
expect(payday.number_of_missing_credit_cards).to eq(1222)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "should return the same value as #ncc_missing" do
|
181
|
+
expect(payday.number_of_missing_credit_cards).to eq(payday.ncc_missing)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe "#number_of_charges" do
|
186
|
+
it "should return the correct number of charges" do
|
187
|
+
expect(payday.number_of_charges).to eq(276)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should return the same value as #ncharges" do
|
191
|
+
expect(payday.number_of_charges).to eq(payday.ncharges)
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
describe "#number_of_participants" do
|
196
|
+
it "should return the correct number of participants" do
|
197
|
+
expect(payday.number_of_participants).to eq(19567)
|
198
|
+
end
|
199
|
+
|
200
|
+
it "should return the same value as #nparticipants" do
|
201
|
+
expect(payday.number_of_participants).to eq(payday.nparticipants)
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "#number_of_tippers" do
|
206
|
+
it "should respond to #number_of_tippers" do
|
207
|
+
expect(payday.number_of_tippers).to eq(1105)
|
208
|
+
end
|
209
|
+
|
210
|
+
it "should return the same value as #ntippers" do
|
211
|
+
expect(payday.number_of_tippers).to eq(payday.ntippers)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
describe "#number_of_transfers" do
|
216
|
+
it "should return the correct number of transfers" do
|
217
|
+
expect(payday.number_of_transfers).to eq(3309)
|
218
|
+
end
|
219
|
+
|
220
|
+
it "should return the same value as #ntransfers" do
|
221
|
+
expect(payday.number_of_transfers).to eq(payday.ntransfers)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
describe "#transfer_volume" do
|
226
|
+
it "should respond to #transfer_volume" do
|
227
|
+
expect(payday.transfer_volume).to eq(5464.38)
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
describe "#ts_end" do
|
232
|
+
it "should return a DateTime object" do
|
233
|
+
expect(payday.ts_end.class).to eq(DateTime)
|
234
|
+
end
|
235
|
+
|
236
|
+
it "should have the correct year" do
|
237
|
+
expect(payday.ts_end.year).to eq(2013)
|
238
|
+
end
|
239
|
+
|
240
|
+
it "should have the correct month" do
|
241
|
+
expect(payday.ts_end.month).to eq(9)
|
242
|
+
end
|
243
|
+
|
244
|
+
it "should have the correct date" do
|
245
|
+
expect(payday.ts_end.day).to eq(12)
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
describe "#ts_start" do
|
250
|
+
it "should return a DateTime object" do
|
251
|
+
expect(payday.ts_start.class).to eq(DateTime)
|
252
|
+
end
|
253
|
+
|
254
|
+
it "should have the correct year" do
|
255
|
+
expect(payday.ts_start.year).to eq(2013)
|
256
|
+
end
|
257
|
+
|
258
|
+
it "should have the correct month" do
|
259
|
+
expect(payday.ts_start.month).to eq(9)
|
260
|
+
end
|
261
|
+
|
262
|
+
it "should have the correct date" do
|
263
|
+
expect(payday.ts_start.day).to eq(12)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
|
267
|
+
end # initialization and instance methods
|
268
|
+
|
269
|
+
end
|
@@ -8,7 +8,7 @@ describe Gratitude::Profile do
|
|
8
8
|
Gratitude::Profile.should include(HTTParty)
|
9
9
|
end
|
10
10
|
|
11
|
-
it "should have the base
|
11
|
+
it "should have the base uri set to the API endpoint" do
|
12
12
|
expect(Gratitude::Profile.base_uri).to eq("https://www.gittip.com")
|
13
13
|
end
|
14
14
|
|
@@ -16,7 +16,7 @@ describe Gratitude::Profile do
|
|
16
16
|
expect(Gratitude::Profile::URI_SUFFIX).to eq("/public.json")
|
17
17
|
end
|
18
18
|
|
19
|
-
end
|
19
|
+
end # default attributes
|
20
20
|
|
21
21
|
describe "instance methods" do
|
22
22
|
|
@@ -32,6 +32,8 @@ describe Gratitude::Profile do
|
|
32
32
|
|
33
33
|
let(:complete_profile) { Gratitude::Profile.new("whit537") }
|
34
34
|
|
35
|
+
subject { :complete_profile }
|
36
|
+
|
35
37
|
it "should set the correct username" do
|
36
38
|
expect(complete_profile.username).to eq("whit537")
|
37
39
|
end
|
@@ -44,12 +46,20 @@ describe Gratitude::Profile do
|
|
44
46
|
it "should return the correct avatar url" do
|
45
47
|
expect(complete_profile.avatar_url).to eq("https://www.gravatar.com/avatar/fb054b407a6461e417ee6b6ae084da37.jpg?s=128")
|
46
48
|
end
|
49
|
+
|
50
|
+
it "should return the same value as #avatar" do
|
51
|
+
expect(complete_profile.avatar_url).to eq(complete_profile.avatar)
|
52
|
+
end
|
47
53
|
end
|
48
54
|
|
49
55
|
describe "#bitbucket_api_url" do
|
50
56
|
it "should return the correct bitbucket api url" do
|
51
57
|
expect(complete_profile.bitbucket_api_url).to eq("https://bitbucket.org/api/1.0/users/whit537")
|
52
58
|
end
|
59
|
+
|
60
|
+
it "should return the same value as #bitbucket" do
|
61
|
+
expect(complete_profile.bitbucket_api_url).to eq(complete_profile.bitbucket)
|
62
|
+
end
|
53
63
|
end
|
54
64
|
|
55
65
|
describe "#bitbucket_username" do
|
@@ -74,6 +84,10 @@ describe Gratitude::Profile do
|
|
74
84
|
it "should return the correct github api url" do
|
75
85
|
expect(complete_profile.github_api_url).to eq("https://api.github.com/users/whit537")
|
76
86
|
end
|
87
|
+
|
88
|
+
it "should return the same value as #github" do
|
89
|
+
expect(complete_profile.github_api_url).to eq(complete_profile.github)
|
90
|
+
end
|
77
91
|
end
|
78
92
|
|
79
93
|
describe "#github_username" do
|
@@ -86,8 +100,12 @@ describe Gratitude::Profile do
|
|
86
100
|
it "should return the correct twitter api url" do
|
87
101
|
expect(complete_profile.twitter_api_url).to eq("https://api.twitter.com/1.1/users/show.json?id=34175404&include_entities=1")
|
88
102
|
end
|
103
|
+
|
104
|
+
it "should return the same value as #twitter" do
|
105
|
+
expect(complete_profile.twitter_api_url).to eq(complete_profile.twitter)
|
106
|
+
end
|
89
107
|
end
|
90
|
-
|
108
|
+
|
91
109
|
describe "#twitter_username" do
|
92
110
|
it "should return nil" do
|
93
111
|
expect(complete_profile.twitter_username).to be(nil)
|
@@ -102,6 +120,10 @@ describe Gratitude::Profile do
|
|
102
120
|
it "should return the correct amount giving" do
|
103
121
|
expect(complete_profile.amount_giving).to eq(101.41)
|
104
122
|
end
|
123
|
+
|
124
|
+
it "should return the same value as #giving" do
|
125
|
+
expect(complete_profile.amount_giving).to eq(complete_profile.giving)
|
126
|
+
end
|
105
127
|
end
|
106
128
|
|
107
129
|
describe "#amount_receiving" do
|
@@ -112,6 +134,10 @@ describe Gratitude::Profile do
|
|
112
134
|
it "should return the correct amount amount receiving" do
|
113
135
|
expect(complete_profile.amount_receiving).to eq(434.25)
|
114
136
|
end
|
137
|
+
|
138
|
+
it "should return the same value as #receiving" do
|
139
|
+
expect(complete_profile.amount_receiving).to eq(complete_profile.receiving)
|
140
|
+
end
|
115
141
|
end
|
116
142
|
|
117
143
|
describe "#goal" do
|
@@ -136,10 +162,10 @@ describe Gratitude::Profile do
|
|
136
162
|
end
|
137
163
|
end
|
138
164
|
|
139
|
-
end
|
165
|
+
end # a fully completed profile
|
140
166
|
|
141
167
|
context "an account that registered through twitter and linked no other accounts" do
|
142
|
-
|
168
|
+
|
143
169
|
before do
|
144
170
|
VCR.insert_cassette "incomplete_profile"
|
145
171
|
end
|
@@ -195,7 +221,7 @@ describe Gratitude::Profile do
|
|
195
221
|
end
|
196
222
|
end
|
197
223
|
|
198
|
-
end
|
224
|
+
end # an incomplete profile
|
199
225
|
|
200
226
|
context "a profile that has defined a gittip goal" do
|
201
227
|
|
@@ -207,7 +233,6 @@ describe Gratitude::Profile do
|
|
207
233
|
VCR.eject_cassette
|
208
234
|
end
|
209
235
|
|
210
|
-
|
211
236
|
let(:goal_profile) { Gratitude::Profile.new("johnkellyferguson") }
|
212
237
|
|
213
238
|
describe "#goal" do
|
@@ -216,9 +241,8 @@ describe Gratitude::Profile do
|
|
216
241
|
end
|
217
242
|
end
|
218
243
|
|
219
|
-
end
|
220
|
-
|
244
|
+
end # a profile with a gittip goal
|
221
245
|
|
222
|
-
end
|
246
|
+
end # instance methods
|
223
247
|
|
224
248
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gratitude
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Kelly Ferguson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-09-
|
11
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -69,11 +69,14 @@ files:
|
|
69
69
|
- Rakefile
|
70
70
|
- gratitude.gemspec
|
71
71
|
- lib/gratitude.rb
|
72
|
+
- lib/gratitude/payday.rb
|
72
73
|
- lib/gratitude/profile.rb
|
73
74
|
- lib/gratitude/version.rb
|
74
75
|
- spec/cassettes/complete_profile.json
|
75
76
|
- spec/cassettes/goal_profile.json
|
76
77
|
- spec/cassettes/incomplete_profile.json
|
78
|
+
- spec/cassettes/paydays.json
|
79
|
+
- spec/gratitude/payday_spec.rb
|
77
80
|
- spec/gratitude/profile_spec.rb
|
78
81
|
- spec/gratitude/version_spec.rb
|
79
82
|
- spec/spec_helper.rb
|
@@ -105,6 +108,8 @@ test_files:
|
|
105
108
|
- spec/cassettes/complete_profile.json
|
106
109
|
- spec/cassettes/goal_profile.json
|
107
110
|
- spec/cassettes/incomplete_profile.json
|
111
|
+
- spec/cassettes/paydays.json
|
112
|
+
- spec/gratitude/payday_spec.rb
|
108
113
|
- spec/gratitude/profile_spec.rb
|
109
114
|
- spec/gratitude/version_spec.rb
|
110
115
|
- spec/spec_helper.rb
|