simplificator-ruby-kiva 0.1.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.
- data/.document +5 -0
- data/.gitignore +21 -0
- data/LICENSE +20 -0
- data/README.rdoc +59 -0
- data/Rakefile +53 -0
- data/VERSION +1 -0
- data/lib/ruby-kiva/api.rb +55 -0
- data/lib/ruby-kiva/borrower.rb +21 -0
- data/lib/ruby-kiva/comment.rb +14 -0
- data/lib/ruby-kiva/country.rb +8 -0
- data/lib/ruby-kiva/dynamic_initializer.rb +30 -0
- data/lib/ruby-kiva/image.rb +20 -0
- data/lib/ruby-kiva/journal_entry.rb +32 -0
- data/lib/ruby-kiva/lender.rb +66 -0
- data/lib/ruby-kiva/lending_action.rb +25 -0
- data/lib/ruby-kiva/loan.rb +109 -0
- data/lib/ruby-kiva/location.rb +67 -0
- data/lib/ruby-kiva/paged_array.rb +66 -0
- data/lib/ruby-kiva/partner.rb +45 -0
- data/lib/ruby-kiva/payment.rb +11 -0
- data/lib/ruby-kiva/team.rb +28 -0
- data/lib/ruby-kiva/terms.rb +20 -0
- data/lib/ruby-kiva/video.rb +7 -0
- data/lib/simplificator-ruby-kiva.rb +7 -0
- data/simplificator-ruby-kiva.gemspec +85 -0
- data/test/helper.rb +11 -0
- data/test/test_simplificator-ruby-kiva.rb +7 -0
- data/test/unit/borrower_test.rb +50 -0
- data/test/unit/comment_test.rb +43 -0
- data/test/unit/country_test.rb +39 -0
- data/test/unit/image_test.rb +48 -0
- data/test/unit/journal_entry_test.rb +60 -0
- data/test/unit/lender_test.rb +82 -0
- data/test/unit/payment_test.rb +28 -0
- metadata +115 -0
@@ -0,0 +1,45 @@
|
|
1
|
+
module Kiva
|
2
|
+
class Partner
|
3
|
+
include Api
|
4
|
+
include DynamicInitializer
|
5
|
+
attr_accessor :status, :name, :rating, :delinquency_rate, :id, :total_amount_raised, :default_rate, :loans_posted
|
6
|
+
typed_attr_accessor :image, Kiva::Image
|
7
|
+
typed_attr_accessor :start_date, Time, :parse
|
8
|
+
typed_attr_accessor :countries, Kiva::Country, :new, true
|
9
|
+
|
10
|
+
# Find a partner
|
11
|
+
# either by :id or all of them
|
12
|
+
# Since kiva does not offer pagination or search,
|
13
|
+
# finding by id is implemented in memory/ruby.
|
14
|
+
# Items are cached but can be reloaded by passing :reload => true (caching is suggested by kiva...)
|
15
|
+
def self.find(params = {})
|
16
|
+
if params[:id]
|
17
|
+
find().detect() {|item| item.id == params[:id]}
|
18
|
+
else
|
19
|
+
find_all(params)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def self.find_all(params)
|
27
|
+
if params[:reload] || !@partners
|
28
|
+
@partners = json_to_paged_array(get('/partners.json', base_options(params)), 'partners', true)
|
29
|
+
end
|
30
|
+
@partners
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
#{"start_date"=>"2005-04-15T17:00:00Z",
|
36
|
+
#{}"rating"=>0,
|
37
|
+
#{}"status"=>"closed",
|
38
|
+
#{}"name"=>"East Africa Beta",
|
39
|
+
#{}"delinquency_rate"=>0,
|
40
|
+
#{}"id"=>1,
|
41
|
+
#{}"total_amount_raised"=>26600,
|
42
|
+
#{}"default_rate"=>9.1917293233083,
|
43
|
+
#{}"loans_posted"=>62,
|
44
|
+
#{}"countries"=>[{"name"=>"Uganda", "region"=>"Africa", "iso_code"=>"UG", "location"=>{"geo"=>{"type"=>"point", "level"=>"country", "pairs"=>"2 33"}}}, {"name"=>"Kenya", "region"=>"Africa", "iso_code"=>"KE", "location"=>{"geo"=>{"type"=>"point", "level"=>"country", "pairs"=>"1 38"}}}, {"name"=>"Tanzania", "region"=>"Africa", "iso_code"=>"TZ", "location"=>{"geo"=>{"type"=>"point", "level"=>"country", "pairs"=>"-6 35"}}}],
|
45
|
+
#{}"image"=>{"template_id"=>1, "id"=>58088}}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Kiva
|
2
|
+
class Team
|
3
|
+
include DynamicInitializer
|
4
|
+
include Api
|
5
|
+
|
6
|
+
attr_accessor :id, :shortname, :name, :category, :image, :whereabouts, :loan_because, :description,
|
7
|
+
:website_url, :membership_type, :member_count, :loan_count, :loaned_amount
|
8
|
+
|
9
|
+
typed_attr_accessor :team_since, Time, :parse
|
10
|
+
typed_attr_accessor :image, Kiva::Image
|
11
|
+
|
12
|
+
def lenders(params = {})
|
13
|
+
@lenders ||= Lender.find(params.merge({:team_id => self.id}))
|
14
|
+
end
|
15
|
+
def loans(params = {})
|
16
|
+
@loans ||= Loan.find(params.merge({:team_id => self.id}))
|
17
|
+
end
|
18
|
+
|
19
|
+
# find a team by :id or :shortname
|
20
|
+
def self.find(params)
|
21
|
+
if params[:id]
|
22
|
+
json_to_paged_array(get("/teams/#{params[:id]}.json", :query => base_options(params)), 'teams', false)
|
23
|
+
elsif params[:shortname]
|
24
|
+
json_to_paged_array(get("/teams/using_shortname/#{params[:shortname]}.json", :query => base_options(params)), 'teams', false)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Kiva
|
2
|
+
class Terms
|
3
|
+
include DynamicInitializer
|
4
|
+
|
5
|
+
attr_accessor :disbursal_amount, :loss_liability, :loan_amount, :disbursal_currency
|
6
|
+
|
7
|
+
typed_attr_accessor :disbursal_date, Time, :parse
|
8
|
+
typed_attr_accessor :scheduled_payments, Kiva::Payment, :new, true
|
9
|
+
typed_attr_accessor :local_payments, Kiva::Payment, :new, true
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
# {"disbursal_date"=>"2010-02-12T08:00:00Z",
|
15
|
+
# "scheduled_payments"=>[{"amount"=>"366.67", "due_date"=>"2011-04-01T07:00:00Z"}, {"amount"=>"366.66", "due_date"=>"2012-04-01T07:00:00Z"}, {"amount"=>"366.67", "due_date"=>"2013-04-01T07:00:00Z"}],
|
16
|
+
# "disbursal_amount"=>600000,
|
17
|
+
# "local_payments"=>[{"amount"=>200000, "due_date"=>"2011-02-12T08:00:00Z"}, {"amount"=>200000, "due_date"=>"2012-02-12T08:00:00Z"}, {"amount"=>200000, "due_date"=>"2013-02-12T08:00:00Z"}],
|
18
|
+
# "loss_liability"=>{"currency_exchange_coverage_rate"=>0.2, "nonpayment"=>"lender", "currency_exchange"=>"shared"},
|
19
|
+
# "loan_amount"=>1100,
|
20
|
+
# "disbursal_currency"=>"CRC"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'httparty'
|
3
|
+
|
4
|
+
%w( dynamic_initializer api payment borrower location country image paged_array video terms loan
|
5
|
+
lender partner lending_action journal_entry comment team).each do |name|
|
6
|
+
require File.join(File.dirname(__FILE__), 'ruby-kiva', name)
|
7
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{simplificator-ruby-kiva}
|
8
|
+
s.version = "0.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["simplificator"]
|
12
|
+
s.date = %q{2010-04-12}
|
13
|
+
s.description = %q{a ruby wrapper for the kiva.org api}
|
14
|
+
s.email = %q{info@simplificator.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/ruby-kiva/api.rb",
|
27
|
+
"lib/ruby-kiva/borrower.rb",
|
28
|
+
"lib/ruby-kiva/comment.rb",
|
29
|
+
"lib/ruby-kiva/country.rb",
|
30
|
+
"lib/ruby-kiva/dynamic_initializer.rb",
|
31
|
+
"lib/ruby-kiva/image.rb",
|
32
|
+
"lib/ruby-kiva/journal_entry.rb",
|
33
|
+
"lib/ruby-kiva/lender.rb",
|
34
|
+
"lib/ruby-kiva/lending_action.rb",
|
35
|
+
"lib/ruby-kiva/loan.rb",
|
36
|
+
"lib/ruby-kiva/location.rb",
|
37
|
+
"lib/ruby-kiva/paged_array.rb",
|
38
|
+
"lib/ruby-kiva/partner.rb",
|
39
|
+
"lib/ruby-kiva/payment.rb",
|
40
|
+
"lib/ruby-kiva/team.rb",
|
41
|
+
"lib/ruby-kiva/terms.rb",
|
42
|
+
"lib/ruby-kiva/video.rb",
|
43
|
+
"lib/simplificator-ruby-kiva.rb",
|
44
|
+
"simplificator-ruby-kiva.gemspec",
|
45
|
+
"test/helper.rb",
|
46
|
+
"test/test_simplificator-ruby-kiva.rb",
|
47
|
+
"test/unit/borrower_test.rb",
|
48
|
+
"test/unit/comment_test.rb",
|
49
|
+
"test/unit/country_test.rb",
|
50
|
+
"test/unit/image_test.rb",
|
51
|
+
"test/unit/journal_entry_test.rb",
|
52
|
+
"test/unit/lender_test.rb",
|
53
|
+
"test/unit/payment_test.rb"
|
54
|
+
]
|
55
|
+
s.homepage = %q{http://github.com/simplificator/simplificator-ruby-kiva}
|
56
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
57
|
+
s.require_paths = ["lib"]
|
58
|
+
s.rubygems_version = %q{1.3.6}
|
59
|
+
s.summary = %q{a ruby wrapper for the kiva.org api}
|
60
|
+
s.test_files = [
|
61
|
+
"test/helper.rb",
|
62
|
+
"test/test_simplificator-ruby-kiva.rb",
|
63
|
+
"test/unit/borrower_test.rb",
|
64
|
+
"test/unit/comment_test.rb",
|
65
|
+
"test/unit/country_test.rb",
|
66
|
+
"test/unit/image_test.rb",
|
67
|
+
"test/unit/journal_entry_test.rb",
|
68
|
+
"test/unit/lender_test.rb",
|
69
|
+
"test/unit/payment_test.rb"
|
70
|
+
]
|
71
|
+
|
72
|
+
if s.respond_to? :specification_version then
|
73
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
74
|
+
s.specification_version = 3
|
75
|
+
|
76
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
77
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
78
|
+
else
|
79
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
80
|
+
end
|
81
|
+
else
|
82
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
data/test/helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
6
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
|
+
require 'simplificator-ruby-kiva'
|
8
|
+
include Kiva
|
9
|
+
|
10
|
+
class Test::Unit::TestCase
|
11
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class BorrowerTest < Test::Unit::TestCase
|
3
|
+
DATA = {"gender"=>"M", "pictured"=>true, "first_name"=>"José Manuel", "last_name"=>"Blanco Chinchilla"}
|
4
|
+
|
5
|
+
context 'a new borrower' do
|
6
|
+
setup do
|
7
|
+
@borrower = Borrower.new()
|
8
|
+
end
|
9
|
+
should 'have nil amount and due_date' do
|
10
|
+
assert !@borrower.gender
|
11
|
+
assert !@borrower.pictured
|
12
|
+
assert !@borrower.first_name
|
13
|
+
assert !@borrower.last_name
|
14
|
+
end
|
15
|
+
|
16
|
+
should 'neither be male nor female' do
|
17
|
+
assert !@borrower.male?
|
18
|
+
assert !@borrower.female?
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'not be pictured?' do
|
22
|
+
assert !@borrower.pictured?
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'a new borrower with data' do
|
28
|
+
setup do
|
29
|
+
@borrower = Borrower.new(DATA)
|
30
|
+
end
|
31
|
+
|
32
|
+
should 'be pictured?' do
|
33
|
+
assert @borrower.pictured?
|
34
|
+
end
|
35
|
+
|
36
|
+
should 'be male' do
|
37
|
+
assert @borrower.male?
|
38
|
+
end
|
39
|
+
|
40
|
+
should 'have a first name' do
|
41
|
+
assert_equal 'José Manuel', @borrower.first_name
|
42
|
+
end
|
43
|
+
|
44
|
+
should 'have a last name' do
|
45
|
+
assert_equal 'Blanco Chinchilla', @borrower.last_name
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class CommentTest < Test::Unit::TestCase
|
3
|
+
DATA = {"body"=>"Ana,\r\n\r\nI wish you continued success with your business. Keep up the great work!\r\n\r\n", "date"=>"2007-11-23T06:31:45Z", "author"=>"Dee", "id"=>29197, "whereabouts"=>"Monroe, WA USA"}
|
4
|
+
|
5
|
+
context 'a new comment' do
|
6
|
+
setup do
|
7
|
+
@comment = Comment.new()
|
8
|
+
end
|
9
|
+
should 'have nil values' do
|
10
|
+
assert !@comment.body
|
11
|
+
assert !@comment.date
|
12
|
+
assert !@comment.author
|
13
|
+
assert !@comment.id
|
14
|
+
assert !@comment.whereabouts
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context 'a new comment with data' do
|
19
|
+
setup do
|
20
|
+
@comment = Comment.new(DATA)
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'have a body' do
|
24
|
+
assert @comment.body
|
25
|
+
end
|
26
|
+
|
27
|
+
should 'have a date' do
|
28
|
+
assert_equal Time.parse('2007-11-23T06:31:45Z'), @comment.date
|
29
|
+
end
|
30
|
+
|
31
|
+
should 'have an author' do
|
32
|
+
assert_equal 'Dee', @comment.author
|
33
|
+
end
|
34
|
+
|
35
|
+
should 'have an id' do
|
36
|
+
assert_equal 29197, @comment.id
|
37
|
+
end
|
38
|
+
|
39
|
+
should 'have whereabouts' do
|
40
|
+
assert_equal 'Monroe, WA USA', @comment.whereabouts
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class CountryTest < Test::Unit::TestCase
|
3
|
+
DATA = {"name"=>"Uganda", "region"=>"Africa", "iso_code"=>"UG", "location"=>{"geo"=>{"type"=>"point", "level"=>"country", "pairs"=>"2 33"}}}
|
4
|
+
|
5
|
+
context 'a new country' do
|
6
|
+
setup do
|
7
|
+
@country = Country.new()
|
8
|
+
end
|
9
|
+
should 'have nil attributes' do
|
10
|
+
assert !@country.name
|
11
|
+
assert !@country.region
|
12
|
+
assert !@country.iso_code
|
13
|
+
assert !@country.location
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context 'a new country with data' do
|
18
|
+
setup do
|
19
|
+
@country = Country.new(DATA)
|
20
|
+
end
|
21
|
+
|
22
|
+
should 'have a code' do
|
23
|
+
assert_equal 'UG',@country.iso_code
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'have a name' do
|
27
|
+
assert_equal 'Uganda', @country.name
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'have a region' do
|
31
|
+
assert_equal 'Africa', @country.region
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'have a location' do
|
35
|
+
assert @country.location
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class ImageTest < Test::Unit::TestCase
|
3
|
+
DATA = {:template_id => 1, :id => 1234}
|
4
|
+
context 'a new image' do
|
5
|
+
setup do
|
6
|
+
@image = Kiva::Image.new()
|
7
|
+
end
|
8
|
+
should 'have nil attributes' do
|
9
|
+
assert !@image.id
|
10
|
+
assert !@image.template_id
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'raise when calling url' do
|
14
|
+
assert_raise RuntimeError do
|
15
|
+
@image.url
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'a new image with data' do
|
21
|
+
setup do
|
22
|
+
@image = Kiva::Image.new(DATA)
|
23
|
+
end
|
24
|
+
|
25
|
+
should 'have an id' do
|
26
|
+
assert_equal 1234, @image.id
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'have a template_id' do
|
30
|
+
assert_equal 1, @image.template_id
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'generate image url for default size' do
|
34
|
+
assert_equal 'http://www.kiva.org/img/w80h80/1234.jpg', @image.url
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'generate image url for default w200h200' do
|
38
|
+
assert_equal 'http://www.kiva.org/img/w200h200/1234.jpg', @image.url(:w200h200)
|
39
|
+
end
|
40
|
+
|
41
|
+
should 'raise on unknown size' do
|
42
|
+
assert_raise RuntimeError do
|
43
|
+
@image.url(:foobar)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class JournalEntryTest < Test::Unit::TestCase
|
3
|
+
DATA = {"id" => 46861, "subject" => "Loan Refunded","body" => "This loan has been refunded for the following reason: \n\nDue to an administrative error, the loan amount posted was incorrect. We apologize for any inconvenience.\n","date" => "2008-04-01T19:47:28Z","author" => "Daniel Kahn","bulk" => true,"comment_count" => 0,"recommendation_count" =>0}
|
4
|
+
|
5
|
+
context 'a new journal entry' do
|
6
|
+
setup do
|
7
|
+
@journal_entry = JournalEntry.new()
|
8
|
+
end
|
9
|
+
should 'have nil attributes' do
|
10
|
+
assert !@journal_entry.id
|
11
|
+
assert !@journal_entry.subject
|
12
|
+
assert !@journal_entry.body
|
13
|
+
assert !@journal_entry.date
|
14
|
+
assert !@journal_entry.author
|
15
|
+
assert !@journal_entry.bulk
|
16
|
+
assert !@journal_entry.comment_count
|
17
|
+
assert !@journal_entry.recommendation_count
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context 'a new Journal Entry with data' do
|
22
|
+
setup do
|
23
|
+
@journal_entry = JournalEntry.new(DATA)
|
24
|
+
end
|
25
|
+
|
26
|
+
should 'have an ID' do
|
27
|
+
assert_equal 46861, @journal_entry.id
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'have a subject' do
|
31
|
+
assert_equal 'Loan Refunded', @journal_entry.subject
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'have a body' do
|
35
|
+
assert @journal_entry.body
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'be bulk' do
|
39
|
+
assert @journal_entry.bulk?
|
40
|
+
end
|
41
|
+
|
42
|
+
should 'have a date' do
|
43
|
+
assert_equal Time.parse('2008-04-01T19:47:28Z'), @journal_entry.date
|
44
|
+
end
|
45
|
+
|
46
|
+
should 'have an author' do
|
47
|
+
assert_equal 'Daniel Kahn', @journal_entry.author
|
48
|
+
end
|
49
|
+
|
50
|
+
should 'have recommendation count of 0' do
|
51
|
+
assert_equal 0, @journal_entry.recommendation_count
|
52
|
+
end
|
53
|
+
|
54
|
+
should 'have a comment count of 0' do
|
55
|
+
assert_equal 0, @journal_entry.comment_count
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class LenderTest < Test::Unit::TestCase
|
3
|
+
DATA = {"loan_count"=>93, "occupation"=>"Entrepreneur", "country_code"=>"US",
|
4
|
+
"name"=>"Matt",
|
5
|
+
"loan_because"=>"I love the stories. ",
|
6
|
+
"lender_id"=>"matt",
|
7
|
+
"invitee_count"=>23,
|
8
|
+
"occupational_info"=>"I co-founded a startup nonprofit (this one!) and I work with an amazing group of people dreaming up ways to alleviate poverty through personal lending. ",
|
9
|
+
"personal_url"=>"www.socialedge.org/blogs/kiva-chronicles",
|
10
|
+
"uid"=>"matt",
|
11
|
+
"whereabouts"=>"San Francisco CA",
|
12
|
+
"image"=>{"template_id"=>1, "id"=>12829},
|
13
|
+
"member_since"=>"2006-01-01T09:01:01Z"}
|
14
|
+
|
15
|
+
context 'a new lender' do
|
16
|
+
setup do
|
17
|
+
@lender = Lender.new()
|
18
|
+
end
|
19
|
+
should 'have nil attributes' do
|
20
|
+
assert !@lender.loan_count
|
21
|
+
assert !@lender.occupation
|
22
|
+
assert !@lender.country_code
|
23
|
+
assert !@lender.name
|
24
|
+
assert !@lender.loan_because
|
25
|
+
assert !@lender.lender_id
|
26
|
+
assert !@lender.invitee_count
|
27
|
+
assert !@lender.occupational_info
|
28
|
+
assert !@lender.personal_url
|
29
|
+
assert !@lender.uid
|
30
|
+
assert !@lender.whereabouts
|
31
|
+
assert !@lender.image
|
32
|
+
assert !@lender.member_since
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'a new lender with data' do
|
37
|
+
setup do
|
38
|
+
@lender = Lender.new(DATA)
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
should 'have a name' do
|
43
|
+
assert_equal 'Matt', @lender.name
|
44
|
+
end
|
45
|
+
should 'have reason for the loans' do
|
46
|
+
assert_equal 'I love the stories. ', @lender.loan_because
|
47
|
+
end
|
48
|
+
|
49
|
+
should 'have a lender_id' do
|
50
|
+
assert_equal 'matt', @lender.lender_id
|
51
|
+
end
|
52
|
+
|
53
|
+
should 'have an invitee count' do
|
54
|
+
assert 23, @lender.invitee_count
|
55
|
+
end
|
56
|
+
|
57
|
+
should 'have occupational_info' do
|
58
|
+
assert @lender.occupational_info
|
59
|
+
end
|
60
|
+
|
61
|
+
should 'have a personal_url' do
|
62
|
+
assert @lender.personal_url
|
63
|
+
end
|
64
|
+
|
65
|
+
should 'have an uid' do
|
66
|
+
assert_equal 'matt', @lender.uid
|
67
|
+
end
|
68
|
+
|
69
|
+
should 'have whereabouts' do
|
70
|
+
assert_equal 'San Francisco CA', @lender.whereabouts
|
71
|
+
end
|
72
|
+
|
73
|
+
should 'have an image' do
|
74
|
+
assert @lender.image
|
75
|
+
end
|
76
|
+
|
77
|
+
should 'have member_since' do
|
78
|
+
assert_equal Time.parse('2006-01-01T09:01:01Z'), @lender.member_since
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require '../helper'
|
2
|
+
class PaymentTest < Test::Unit::TestCase
|
3
|
+
DATA = {"amount"=> 366.67, "due_date"=>"2011-04-01T07:00:00Z"}
|
4
|
+
|
5
|
+
context 'a new payment' do
|
6
|
+
setup do
|
7
|
+
@payment = Payment.new()
|
8
|
+
end
|
9
|
+
should 'have nil amount and due_date' do
|
10
|
+
assert !@payment.amount
|
11
|
+
assert !@payment.due_date
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context 'a new payment with data' do
|
16
|
+
setup do
|
17
|
+
@payment = Payment.new(DATA)
|
18
|
+
end
|
19
|
+
should 'have an amount of 366.67' do
|
20
|
+
assert_equal 366.67, @payment.amount
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'have a due date' do
|
24
|
+
assert_equal Time.parse('2011-04-01T07:00:00Z'), @payment.due_date
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|