spec/reckon/app_spec.rb in reckon-0.3.10 vs spec/reckon/app_spec.rb in reckon-0.4.0
- old
+ new
@@ -4,35 +4,96 @@
require "spec_helper"
require 'rubygems'
require 'reckon'
describe Reckon::App do
- before do
- @chase = Reckon::App.new(:string => BANK_CSV)
- @rows = []
- @chase.each_row_backwards { |row| @rows.push( row ) }
+ context 'with chase csv input' do
+ before do
+ @chase = Reckon::App.new(:string => BANK_CSV)
+ @chase.learn_from( BANK_LEDGER )
+ @rows = []
+ @chase.each_row_backwards { |row| @rows.push( row ) }
+ end
+
+ describe "each_row_backwards" do
+ it "should return rows with hashes" do
+ @rows[0][:pretty_date].should == "2009/12/10"
+ @rows[0][:pretty_money].should == " $2105.00"
+ @rows[0][:description].should == "CREDIT; Some Company vendorpymt PPD ID: 5KL3832735"
+ @rows[1][:pretty_date].should == "2009/12/11"
+ @rows[1][:pretty_money].should == "-$116.22"
+ @rows[1][:description].should == "CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL"
+ end
+ end
+
+ describe "weighted_account_match" do
+ it "should guess the correct account" do
+ @chase.weighted_account_match( @rows[7] ).first[:account].should == "Expenses:Books"
+ end
+ end
end
- describe "each_row_backwards" do
- it "should return rows with hashes" do
- @rows[0][:pretty_date].should == "2009/12/10"
- @rows[0][:pretty_money].should == " $2105.00"
- @rows[0][:description].should == "CREDIT; Some Company vendorpymt PPD ID: 5KL3832735"
- @rows[1][:pretty_date].should == "2009/12/11"
- @rows[1][:pretty_money].should == "-$116.22"
- @rows[1][:description].should == "CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL"
+ context 'unattended mode with chase csv input' do
+ before do
+ @output_file = StringIO.new
+ @chase = Reckon::App.new(:string => BANK_CSV, :unattended => true, :output_file => @output_file)
end
+
+ describe 'walk backwards' do
+ it 'should assign Income:Unknown and Expenses:Unknown by default' do
+ @chase.walk_backwards
+ @output_file.string.scan('Expenses:Unknown').count.should == 6
+ @output_file.string.scan('Income:Unknown').count.should == 3
+ end
+
+ it 'should change default account names' do
+ @chase = Reckon::App.new(:string => BANK_CSV,
+ :unattended => true,
+ :output_file => @output_file,
+ :default_into_account => 'Expenses:Default',
+ :default_outof_account => 'Income:Default')
+ @chase.walk_backwards
+ @output_file.string.scan('Expenses:Default').count.should == 6
+ @output_file.string.scan('Income:Default').count.should == 3
+ end
+
+ it 'should learn from a ledger file' do
+ @chase.learn_from( BANK_LEDGER )
+ @chase.walk_backwards
+ @output_file.string.scan('Expenses:Books').count.should == 1
+ end
+
+ it 'should learn from an account tokens file' do
+ @chase = Reckon::App.new(:string => BANK_CSV,
+ :unattended => true,
+ :output_file => @output_file,
+ :account_tokens_file => 'spec/data_fixtures/tokens.yaml')
+ @chase.walk_backwards
+ @output_file.string.scan('Expenses:Books').count.should == 1
+ end
+ end
end
-
+
#DATA
BANK_CSV = (<<-CSV).strip
DEBIT,20091224120000[0:GMT],"HOST 037196321563 MO 12/22SLICEHOST",-85.00
- CHECK,20091224120000[0:GMT],"CHECK 2656",-20.00
+ CHECK,20091224120000[0:GMT],"Book Store",-20.00
DEBIT,20091224120000[0:GMT],"GITHUB 041287430274 CA 12/22GITHUB 04",-7.00
CREDIT,20091223120000[0:GMT],"Some Company vendorpymt PPD ID: 59728JSL20",3520.00
CREDIT,20091223120000[0:GMT],"Blarg BLARG REVENUE PPD ID: 00jah78563",1558.52
DEBIT,20091221120000[0:GMT],"WEBSITE-BALANCE-17DEC09 12 12/17WEBSITE-BAL",-12.23
DEBIT,20091214120000[0:GMT],"WEBSITE-BALANCE-10DEC09 12 12/10WEBSITE-BAL",-20.96
CREDIT,20091211120000[0:GMT],"PAYPAL TRANSFER PPD ID: PAYPALSDSL",-116.22
CREDIT,20091210120000[0:GMT],"Some Company vendorpymt PPD ID: 5KL3832735",2105.00
CSV
+
+ BANK_LEDGER = (<<-LEDGER).strip
+2004/05/14 * Pay day
+ Assets:Bank:Checking $500.00
+ Income:Salary
+
+2004/05/27 Book Store
+ Expenses:Books $20.00
+ Liabilities:MasterCard
+ LEDGER
+
end