killbill-currency-plugin 1.0.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/.gitignore ADDED
@@ -0,0 +1,25 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+ build
15
+ test.db
16
+ killbill-currency-plugin*
17
+ # YARD artifacts
18
+ .yardoc
19
+ _yardoc
20
+ doc/
21
+ .jbundler
22
+ Jarfile.lock
23
+ Gemfile.lock
24
+ *.swp
25
+ .idea
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
4
+
5
+ #gem 'killbill', :path => '../killbill-plugin-framework-ruby'
data/Jarfile ADDED
@@ -0,0 +1,6 @@
1
+ jar 'com.ning.billing:killbill-api', '0.7.2'
2
+ jar 'com.ning.billing.plugin:killbill-plugin-api-notification', '0.6.0'
3
+ jar 'com.ning.billing.plugin:killbill-plugin-api-payment', '0.6.0'
4
+ jar 'com.ning.billing.plugin:killbill-plugin-api-currency', '0.6.0'
5
+ jar 'com.ning.billing:killbill-util:tests', '0.7.0'
6
+ jar 'javax.servlet:javax.servlet-api', '3.0.1'
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ killbill-currency-plugin
2
+ ==============================
3
+
4
+ A default currency plugin based on a set of static currency conversion tables.
data/Rakefile ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env rake
2
+
3
+ # Install tasks to build and release the plugin
4
+ require 'bundler/setup'
5
+ Bundler::GemHelper.install_tasks
6
+
7
+ # Install test tasks
8
+ require 'rspec/core/rake_task'
9
+ desc "Run RSpec"
10
+ RSpec::Core::RakeTask.new
11
+
12
+ # Install tasks to package the plugin for Killbill
13
+ require 'killbill/rake_task'
14
+ Killbill::PluginHelper.install_tasks
15
+
16
+ # Run tests by default
17
+ task :default => :spec
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
data/db/ddl.sql ADDED
@@ -0,0 +1,20 @@
1
+ CREATE TABLE `currency_updates` (
2
+ `id` int(11) NOT NULL AUTO_INCREMENT,
3
+ `base_currency` varchar(3) NOT NULL,
4
+ `conversion_date` datetime NOT NULL,
5
+ `created_at` datetime NOT NULL,
6
+ `updated_at` datetime NOT NULL,
7
+ PRIMARY KEY (`id`),
8
+ KEY `index_base_currency` (`base_currency`)
9
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;;
10
+
11
+ CREATE TABLE `currency_rates` (
12
+ `id` int(11) NOT NULL AUTO_INCREMENT,
13
+ `target_currency` varchar(3) NOT NULL,
14
+ `rate` decimal(10,4) NOT NULL,
15
+ `currency_update_id` int(11) NOT NULL,
16
+ `created_at` datetime NOT NULL,
17
+ `updated_at` datetime NOT NULL,
18
+ PRIMARY KEY (`id`),
19
+ KEY `index_currency_update_id` (`currency_update_id`)
20
+ ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE utf8_bin;;
data/db/schema.rb ADDED
@@ -0,0 +1,25 @@
1
+ require 'active_record'
2
+
3
+ ActiveRecord::Schema.define(:version => 20130911853636) do
4
+ create_table "currency_updates", :force => true do |t|
5
+ t.string "base_currency", :null => false
6
+ t.datetime "conversion_date", :null => false
7
+ t.datetime "created_at", :null => false
8
+ t.datetime "updated_at", :null => false
9
+ end
10
+
11
+ add_index(:currency_updates, :base_currency)
12
+
13
+ create_table "currency_rates", :force => true do |t|
14
+ t.string "target_currency", :null => false
15
+ t.float "rate", :null => false
16
+ t.integer "currency_update_id", :null => false
17
+ t.datetime "created_at", :null => false
18
+ t.datetime "updated_at", :null => false
19
+ end
20
+
21
+ add_index(:currency_rates, :currency_update_id)
22
+ end
23
+
24
+
25
+
@@ -0,0 +1,3 @@
1
+ mainClass=Killbill::CurrencyPlugin::DefaultPlugin
2
+ require=currency_plugin
3
+ pluginType=CURRENCY
@@ -0,0 +1,5 @@
1
+
2
+ require 'active_record'
3
+ require 'killbill'
4
+
5
+ require 'currency_plugin/api'
@@ -0,0 +1,79 @@
1
+ require 'time'
2
+
3
+ require 'killbill'
4
+
5
+ require 'currency_plugin/models/currency_rate'
6
+ require 'currency_plugin/models/currency_update'
7
+
8
+ module Killbill
9
+ module CurrencyPlugin
10
+ class DefaultPlugin < Killbill::Plugin::Currency
11
+
12
+ def initialize()
13
+ @raise_exception = false
14
+ super()
15
+ end
16
+
17
+
18
+ def start_plugin
19
+ super
20
+ end
21
+
22
+ # return DB connections to the Pool if required
23
+ def after_request
24
+ ActiveRecord::Base.connection.close
25
+ end
26
+
27
+ def get_base_currencies(options = {})
28
+ (Killbill::CurrencyPlugin::CurrencyUpdate.distinct_base_currencies || []).map do |c|
29
+ c.base_currency
30
+ end
31
+ end
32
+
33
+ def get_latest_conversion_date(base_currency, options = {})
34
+ res = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency(base_currency)
35
+ res[0].conversion_date.utc unless res.size == 0
36
+ end
37
+
38
+ def get_conversion_dates(base_currency, options = {})
39
+ (Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies(base_currency) || []).map do |r|
40
+ r.conversion_date.utc
41
+ end
42
+ end
43
+
44
+ def get_current_rates(base_currency, options = {})
45
+
46
+ base_latest = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency(base_currency)
47
+ if base_latest.nil? || base_latest.size == 0
48
+ return []
49
+ end
50
+
51
+ get_rates_for_currency_update(base_latest[0].id, base_currency, base_latest[0].conversion_date)
52
+ end
53
+
54
+ def get_rates(base_currency, conversion_date, options = {})
55
+
56
+ (Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies(base_currency) || []).each do |e|
57
+ if Time.at(e.conversion_date) <= Time.at(conversion_date)
58
+ return get_rates_for_currency_update(e.id, base_currency, e.conversion_date)
59
+ end
60
+ end
61
+ []
62
+ end
63
+
64
+ private
65
+
66
+ def get_rates_for_currency_update(currency_update_id, base_currency, conversion_date)
67
+ (Killbill::CurrencyPlugin::CurrencyRate.latest_rates_for_base_currency(currency_update_id) || []).map do |r|
68
+ rate = Killbill::Plugin::Model::Rate.new
69
+ rate.base_currency = base_currency
70
+ rate.currency = r.target_currency
71
+ rate.value = r.rate
72
+ rate.conversion_date = conversion_date
73
+ rate
74
+ end
75
+ end
76
+
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,15 @@
1
+ module Killbill
2
+ module CurrencyPlugin
3
+
4
+ class CurrencyRate < ActiveRecord::Base
5
+
6
+ belongs_to :currency_update
7
+
8
+ attr_accessible :target_currency,
9
+ :rate,
10
+ :currency_update_id
11
+
12
+ scope :latest_rates_for_base_currency, ->(currency_update_id) { where("currency_update_id = ?", currency_update_id).order("target_currency ASC") }
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ module Killbill
2
+ module CurrencyPlugin
3
+ class CurrencyUpdate < ActiveRecord::Base
4
+
5
+ has_many :currency_rates
6
+
7
+ attr_accessible :base_currency,
8
+ :conversion_date
9
+
10
+ scope :historical_base_currencies, ->(base_currency_arg) { where("base_currency = ?", base_currency_arg).order("conversion_date DESC") }
11
+ scope :latest_base_currency, ->(base_currency_arg) { historical_base_currencies(base_currency_arg).limit(1) }
12
+ scope :distinct_base_currencies, -> { select("DISTINCT base_currency").order("base_currency ASC") }
13
+
14
+ #scope :latest_rates_for_currency, ->(base_currency_arg) { latest_base_currency(base_currency_arg).joins(:currency_rates).order("target_currency ASC") }
15
+ end
16
+ end
17
+ end
data/pom.xml ADDED
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!--
3
+ ~ Copyright 2010-2013 Ning, Inc.
4
+ ~
5
+ ~ Ning licenses this file to you under the Apache License, version 2.0
6
+ ~ (the "License"); you may not use this file except in compliance with the
7
+ ~ License. You may obtain a copy of the License at:
8
+ ~
9
+ ~ http://www.apache.org/licenses/LICENSE-2.0
10
+ ~
11
+ ~ Unless required by applicable law or agreed to in writing, software
12
+ ~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13
+ ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14
+ ~ License for the specific language governing permissions and limitations
15
+ ~ under the License.
16
+ -->
17
+
18
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
19
+ <parent>
20
+ <groupId>org.sonatype.oss</groupId>
21
+ <artifactId>oss-parent</artifactId>
22
+ <version>5</version>
23
+ </parent>
24
+ <modelVersion>4.0.0</modelVersion>
25
+ <groupId>com.ning.killbill.ruby</groupId>
26
+ <artifactId>killbill-currency-plugin</artifactId>
27
+ <packaging>pom</packaging>
28
+ <version>1.0.0</version>
29
+ <name>killbill-currency-plugin</name>
30
+ <description></description>
31
+ <scm>
32
+ <connection>scm:git:git://github.com/killbill/killbill-killbill-currency-plugin.git</connection>
33
+ <url>https://github.com/killbill/killbill-killbill-currency-plugin/</url>
34
+ <developerConnection>scm:git:git@github.com:killbill/killbill-killbill-currency-plugin.git</developerConnection>
35
+ </scm>
36
+ </project>
data/release.sh ADDED
@@ -0,0 +1,28 @@
1
+ set -e
2
+
3
+ VERSION=`grep -E '<version>([0-9]+\.[0-9]+\.[0-9]+)</version>' pom.xml | sed 's/[\t \n]*<version>\(.*\)<\/version>[\t \n]*/\1/'`
4
+ if [ "$VERSION" != "$(cat $PWD/VERSION)" ]; then
5
+ echo "Unable to release: make sure the versions in pom.xml and VERSION match"
6
+ exit 1
7
+ fi
8
+
9
+ echo "Cleaning up"
10
+ rake killbill:clean ; rake build
11
+
12
+ echo "Pushing the gem to Rubygems"
13
+ rake release
14
+
15
+ echo "Building artifact"
16
+ rake killbill:package
17
+
18
+ ARTIFACT="$PWD/pkg/killbill-payment-test-$VERSION.tar.gz"
19
+ echo "Pushing $ARTIFACT to Maven Central"
20
+ mvn gpg:sign-and-deploy-file \
21
+ -DgroupId=com.ning.killbill.ruby \
22
+ -DartifactId=payment-test-plugin \
23
+ -Dversion=$VERSION \
24
+ -Dpackaging=tar.gz \
25
+ -DrepositoryId=ossrh-releases \
26
+ -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/ \
27
+ -Dfile=$ARTIFACT \
28
+ -DpomFile=pom.xml
@@ -0,0 +1,116 @@
1
+ require 'spec_helper'
2
+
3
+ require 'time'
4
+
5
+ describe Killbill::CurrencyPlugin::DefaultPlugin do
6
+
7
+ before(:each) do
8
+ Killbill::CurrencyPlugin::CurrencyUpdate.delete_all
9
+ Killbill::CurrencyPlugin::CurrencyRate.delete_all
10
+ end
11
+
12
+
13
+ it 'should test plugin apis with no data' do
14
+
15
+ api = Killbill::CurrencyPlugin::DefaultPlugin.new
16
+
17
+ base_currencies = api.get_base_currencies
18
+ base_currencies.size.should == 0
19
+
20
+ usd_latest_conversion_date = api.get_latest_conversion_date('USD')
21
+ usd_latest_conversion_date.should be_nil
22
+
23
+ conversion_dates = api.get_conversion_dates('EUR')
24
+ conversion_dates.size.should == 0
25
+
26
+ rates = api.get_current_rates('USD')
27
+ rates.size.should == 0
28
+
29
+ rates = api.get_rates('USD', Time.now)
30
+ rates.size.should == 0
31
+ end
32
+
33
+ it 'should test plugin apis' do
34
+
35
+ api = Killbill::CurrencyPlugin::DefaultPlugin.new
36
+
37
+ d1 = Time.parse('2013-10-1T20:41:09Z')
38
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
39
+ :conversion_date => d1
40
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
41
+ :conversion_date => d1
42
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
43
+ :conversion_date => d1
44
+
45
+ d2 = Time.parse('2013-10-2T21:32:07Z')
46
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
47
+ :conversion_date => d2
48
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
49
+ :conversion_date => d2
50
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
51
+ :conversion_date => d2
52
+
53
+ d3 = Time.parse('2013-10-3T21:42:07Z')
54
+ usd_d3 = Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
55
+ :conversion_date => d3
56
+ eur_d3 = Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
57
+ :conversion_date => d3
58
+ brl_d3 = Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
59
+ :conversion_date => d3
60
+
61
+
62
+ base_currencies = api.get_base_currencies
63
+ base_currencies.size.should == 3
64
+ base_currencies[0].should == 'BRL'
65
+ base_currencies[1].should == 'EUR'
66
+ base_currencies[2].should == 'USD'
67
+
68
+ usd_latest_conversion_date = api.get_latest_conversion_date('USD')
69
+ Time.at(usd_latest_conversion_date).should == Time.at(d3)
70
+
71
+ conversion_dates = api.get_conversion_dates('EUR')
72
+ conversion_dates.size.should == 3
73
+ Time.at(conversion_dates[0]).should == Time.at(d3)
74
+ Time.at(conversion_dates[1]).should == Time.at(d2)
75
+ Time.at(conversion_dates[2]).should == Time.at(d1)
76
+
77
+
78
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'BRL',
79
+ :rate => 0.45731,
80
+ :currency_update_id => usd_d3.id
81
+
82
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'EUR',
83
+ :rate => 1.38055,
84
+ :currency_update_id => usd_d3.id
85
+
86
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'GBP',
87
+ :rate => 1.61660,
88
+ :currency_update_id => usd_d3.id
89
+
90
+ rates = api.get_current_rates('USD')
91
+ rates.size.should == 3
92
+
93
+ rates[0].base_currency.should == 'USD'
94
+ rates[0].currency.should == 'BRL'
95
+ rates[0].value.should == 0.45731
96
+ Time.at(rates[0].conversion_date).should == Time.at(d3)
97
+
98
+ rates[1].base_currency.should == 'USD'
99
+ rates[1].currency.should == 'EUR'
100
+ rates[1].value.should == 1.38055
101
+ Time.at(rates[1].conversion_date).should == Time.at(d3)
102
+
103
+ rates[2].base_currency.should == 'USD'
104
+ rates[2].currency.should == 'GBP'
105
+ rates[2].value.should == 1.61660
106
+ Time.at(rates[2].conversion_date).should == Time.at(d3)
107
+
108
+
109
+ rates = api.get_rates('USD', d2)
110
+ rates.size.should == 0
111
+
112
+ rates = api.get_rates('USD', d3)
113
+ rates.size.should == 3
114
+
115
+ end
116
+ end
@@ -0,0 +1,115 @@
1
+ require 'spec_helper'
2
+
3
+ require 'time'
4
+
5
+ describe Killbill::CurrencyPlugin::CurrencyUpdate do
6
+
7
+ before(:each) do
8
+ Killbill::CurrencyPlugin::CurrencyUpdate.delete_all
9
+ Killbill::CurrencyPlugin::CurrencyRate.delete_all
10
+ end
11
+
12
+ it 'should test currency update scope queries' do
13
+
14
+ Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies('EUR').size.should == 0
15
+
16
+ d1 = Time.parse('2013-10-25T20:41:09Z')
17
+
18
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
19
+ :conversion_date => d1
20
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
21
+ :conversion_date => d1
22
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
23
+ :conversion_date => d1
24
+
25
+ d2 = Time.parse('2013-10-27T21:32:07Z')
26
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
27
+ :conversion_date => d2
28
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
29
+ :conversion_date => d2
30
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
31
+ :conversion_date => d2
32
+
33
+ d3 = Time.parse('2013-10-26T21:42:07Z')
34
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
35
+ :conversion_date => d3
36
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'EUR',
37
+ :conversion_date => d3
38
+ Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'BRL',
39
+ :conversion_date => d3
40
+
41
+
42
+ eur_historical = Killbill::CurrencyPlugin::CurrencyUpdate.historical_base_currencies('EUR')
43
+ eur_historical.size.should == 3
44
+ Time.at(eur_historical[0].conversion_date).should == Time.at(d2)
45
+ Time.at(eur_historical[1].conversion_date).should == Time.at(d3)
46
+ Time.at(eur_historical[2].conversion_date).should == Time.at(d1)
47
+
48
+ eur_latest = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency('EUR')
49
+ eur_latest.size.should == 1
50
+ eur_latest[0].base_currency.should == 'EUR'
51
+ Time.at(eur_latest[0].conversion_date).should == Time.at(d2)
52
+
53
+ distinct_base_currencies = Killbill::CurrencyPlugin::CurrencyUpdate.distinct_base_currencies
54
+ distinct_base_currencies.size.should == 3
55
+ distinct_base_currencies.each_with_index do |c, i|
56
+ c.base_currency.should == 'BRL' if i == 0
57
+ c.base_currency.should == 'EUR' if i == 1
58
+ c.base_currency.should == 'USD' if i == 2
59
+ end
60
+ end
61
+
62
+ it 'should test currency rate scope queries' do
63
+
64
+ d1 = Time.parse('2013-10-10T20:41:09Z')
65
+
66
+ res1 = Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
67
+ :conversion_date => d1
68
+
69
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'BRL',
70
+ :rate => 0.45721,
71
+ :currency_update_id => res1.id
72
+
73
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'EUR',
74
+ :rate => 1.38045,
75
+ :currency_update_id => res1.id
76
+
77
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'GBP',
78
+ :rate => 1.61650,
79
+ :currency_update_id => res1.id
80
+
81
+
82
+ d2 = Time.parse('2013-10-11T20:41:09Z')
83
+ res2 = Killbill::CurrencyPlugin::CurrencyUpdate.create :base_currency => 'USD',
84
+ :conversion_date => d2
85
+
86
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'BRL',
87
+ :rate => 0.45731,
88
+ :currency_update_id => res2.id
89
+
90
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'EUR',
91
+ :rate => 1.38055,
92
+ :currency_update_id => res2.id
93
+
94
+ Killbill::CurrencyPlugin::CurrencyRate.create :target_currency => 'GBP',
95
+ :rate => 1.61660,
96
+ :currency_update_id => res2.id
97
+
98
+
99
+ #
100
+ # Can't gte it to work in one join query using scope-- SQL generated is weird:
101
+ # (SELECT COUNT(count_column) FROM (SELECT 1 AS count_column FROM "currency_updates" INNER JOIN "currency_rates" ON "currency_rates"."currency_update_id" = "currency_updates"."id" WHERE (base_currency = 'USD') LIMIT 1) subquery_for_count)
102
+ #
103
+ #latest_rates_for_usd = Killbill::CurrencyPlugin::CurrencyUpdate.latest_rates_for_currency('USD')
104
+
105
+ usd_latest = Killbill::CurrencyPlugin::CurrencyUpdate.latest_base_currency('USD')
106
+ latest_rates_for_usd = Killbill::CurrencyPlugin::CurrencyRate.latest_rates_for_base_currency(usd_latest[0].id)
107
+ latest_rates_for_usd.size.should == 3
108
+ latest_rates_for_usd[0].target_currency.should == 'BRL'
109
+ latest_rates_for_usd[0].rate.should == 0.45731
110
+ latest_rates_for_usd[1].target_currency.should == 'EUR'
111
+ latest_rates_for_usd[1].rate.should == 1.38055
112
+ latest_rates_for_usd[2].target_currency.should == 'GBP'
113
+ latest_rates_for_usd[2].rate.should == 1.61660
114
+ end
115
+ end
@@ -0,0 +1,28 @@
1
+ require 'bundler'
2
+ require 'logger'
3
+ require 'rspec'
4
+
5
+ require 'currency_plugin'
6
+
7
+ RSpec.configure do |config|
8
+ config.color_enabled = true
9
+ config.tty = true
10
+ config.formatter = 'documentation'
11
+ end
12
+
13
+ class Object
14
+ def blank?
15
+ respond_to?(:empty?) ? empty? : !self
16
+ end
17
+ end
18
+
19
+
20
+ require 'active_record'
21
+
22
+ #ActiveRecord::Base.logger = Logger.new(STDOUT)
23
+ ActiveRecord::Base.establish_connection(
24
+ :adapter => 'sqlite3',
25
+ :database => 'test.db'
26
+ )
27
+ # Create the schema
28
+ require File.expand_path(File.dirname(__FILE__) + '../../db/schema.rb')
metadata ADDED
@@ -0,0 +1,185 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: killbill-currency-plugin
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kill Bill core team
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-10-26 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: killbill
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: 1.8.0
21
+ none: false
22
+ requirement: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.8.0
27
+ none: false
28
+ prerelease: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ name: activerecord
32
+ version_requirements: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - "~>"
35
+ - !ruby/object:Gem::Version
36
+ version: 3.2.1
37
+ none: false
38
+ requirement: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - "~>"
41
+ - !ruby/object:Gem::Version
42
+ version: 3.2.1
43
+ none: false
44
+ prerelease: false
45
+ type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ name: activerecord-jdbcmysql-adapter
48
+ version_requirements: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: 1.2.9
53
+ none: false
54
+ requirement: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - "~>"
57
+ - !ruby/object:Gem::Version
58
+ version: 1.2.9
59
+ none: false
60
+ prerelease: false
61
+ type: :runtime
62
+ - !ruby/object:Gem::Dependency
63
+ name: jbundler
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.4.1
69
+ none: false
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.4.1
75
+ none: false
76
+ prerelease: false
77
+ type: :development
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 10.0.0
85
+ none: false
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 10.0.0
91
+ none: false
92
+ prerelease: false
93
+ type: :development
94
+ - !ruby/object:Gem::Dependency
95
+ name: rspec
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: 2.12.0
101
+ none: false
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: 2.12.0
107
+ none: false
108
+ prerelease: false
109
+ type: :development
110
+ - !ruby/object:Gem::Dependency
111
+ name: activerecord-jdbcsqlite3-adapter
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - "~>"
115
+ - !ruby/object:Gem::Version
116
+ version: 1.2.6
117
+ none: false
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: 1.2.6
123
+ none: false
124
+ prerelease: false
125
+ type: :development
126
+ description: Currency Plugin based on a static currency table.
127
+ email: killbilling-users@googlegroups.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - Gemfile
134
+ - Jarfile
135
+ - README.md
136
+ - Rakefile
137
+ - VERSION
138
+ - db/ddl.sql
139
+ - db/schema.rb
140
+ - killbill-currency-plugin.gemspec
141
+ - killbill.properties
142
+ - lib/currency_plugin.rb
143
+ - lib/currency_plugin/api.rb
144
+ - lib/currency_plugin/models/currency_rate.rb
145
+ - lib/currency_plugin/models/currency_update.rb
146
+ - pom.xml
147
+ - release.sh
148
+ - spec/currency_plugin/api_spec.rb
149
+ - spec/currency_plugin/model_spec.rb
150
+ - spec/spec_helper.rb
151
+ homepage: http://kill-bill.org
152
+ licenses:
153
+ - Apache License (2.0)
154
+ post_install_message:
155
+ rdoc_options:
156
+ - "--exclude"
157
+ - "."
158
+ require_paths:
159
+ - lib
160
+ required_ruby_version: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: 1.9.3
165
+ none: false
166
+ required_rubygems_version: !ruby/object:Gem::Requirement
167
+ requirements:
168
+ - - ">="
169
+ - !ruby/object:Gem::Version
170
+ segments:
171
+ - 0
172
+ version: !binary |-
173
+ MA==
174
+ hash: 2
175
+ none: false
176
+ requirements: []
177
+ rubyforge_project:
178
+ rubygems_version: 1.8.24
179
+ signing_key:
180
+ specification_version: 3
181
+ summary: Default Currency Plugin.
182
+ test_files:
183
+ - spec/currency_plugin/api_spec.rb
184
+ - spec/currency_plugin/model_spec.rb
185
+ - spec/spec_helper.rb