reckon 0.6.2 → 0.8.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.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +4 -4
  3. data/.gitignore +1 -0
  4. data/CHANGELOG.md +54 -3
  5. data/Gemfile.lock +1 -1
  6. data/README.md +23 -19
  7. data/Rakefile +2 -2
  8. data/bin/build-new-version.sh +26 -0
  9. data/bin/reckon +4 -1
  10. data/lib/reckon.rb +1 -0
  11. data/lib/reckon/app.rb +13 -150
  12. data/lib/reckon/cosine_similarity.rb +67 -62
  13. data/lib/reckon/date_column.rb +3 -2
  14. data/lib/reckon/ledger_parser.rb +1 -1
  15. data/lib/reckon/money.rb +12 -5
  16. data/lib/reckon/options.rb +157 -0
  17. data/lib/reckon/version.rb +1 -1
  18. data/spec/cosine_training_and_test.rb +52 -0
  19. data/spec/integration/another_bank_example/output.ledger +3 -3
  20. data/spec/integration/ask_for_account/cli_input.exp +33 -0
  21. data/spec/integration/ask_for_account/expected_output +11 -0
  22. data/spec/integration/ask_for_account/input.csv +9 -0
  23. data/spec/integration/ask_for_account/test_args +1 -0
  24. data/spec/integration/broker_canada_example/output.ledger +2 -2
  25. data/spec/integration/chase/account_tokens_and_regex/output.ledger +3 -3
  26. data/spec/integration/chase/default_account_names/output.ledger +3 -3
  27. data/spec/integration/chase/learn_from_existing/output.ledger +3 -3
  28. data/spec/integration/chase/simple/output.ledger +3 -3
  29. data/spec/integration/danish_kroner_nordea_example/output.ledger +1 -1
  30. data/spec/integration/extratofake/output.ledger +1 -1
  31. data/spec/integration/harder_date_example/output.ledger +2 -2
  32. data/spec/integration/invalid_header_example/test_args +1 -1
  33. data/spec/integration/ledger_date_format/compare_cmds +1 -0
  34. data/spec/integration/ledger_date_format/input.csv +3 -0
  35. data/spec/integration/ledger_date_format/output.ledger +12 -0
  36. data/spec/integration/ledger_date_format/test_args +1 -0
  37. data/spec/integration/test.sh +78 -27
  38. data/spec/reckon/app_spec.rb +21 -19
  39. data/spec/reckon/csv_parser_spec.rb +3 -3
  40. data/spec/reckon/date_column_spec.rb +12 -0
  41. data/spec/reckon/money_spec.rb +3 -3
  42. data/spec/reckon/options_spec.rb +17 -0
  43. data/spec/spec_helper.rb +6 -1
  44. metadata +15 -2
@@ -1,5 +1,5 @@
1
1
  2003-12-24 CREDIT; Some Company vendorpymt PPD ID: 5KL3832735
2
- Assets:Bank:Checking $2105.00
2
+ Assets:Bank:Checking $2,105.00
3
3
  Income:Unknown
4
4
 
5
5
  2004-12-24 CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL
@@ -15,11 +15,11 @@
15
15
  Expenses:Unknown
16
16
 
17
17
  2007-12-24 CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563
18
- Assets:Bank:Checking $1558.52
18
+ Assets:Bank:Checking $1,558.52
19
19
  Income:Unknown
20
20
 
21
21
  2008-12-24 CREDIT; Some Company vendorpymt PPD ID: 59728JSL20
22
- Assets:Bank:Checking $3520.00
22
+ Assets:Bank:Checking $3,520.00
23
23
  Income:Unknown
24
24
 
25
25
  2009-12-24 DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/expect -f
2
+
3
+
4
+ set timeout 7
5
+ match_max 100000
6
+ expect "What is this account named in Ledger |Assets:Bank:Checking|?\r
7
+ \[1Gā–½\[6n"
8
+ send -- "\[45;2R"
9
+ expect -exact "\[1G\[K\[6n"
10
+ send -- "\[45;1R"
11
+ expect "\[1G\[K\[1G\[1G"
12
+ send -- "T"
13
+ expect "\[1GT\[K\[1G\[2G"
14
+ send -- "e"
15
+ expect "\[1GTe\[K\[1G\[3G"
16
+ send -- "s"
17
+ expect "\[1GTes\[K\[1G\[4G"
18
+ send -- "t"
19
+ expect "\[1GTest\[K\[1G\[5G"
20
+ send -- ":"
21
+ expect "\[1GTest:\[K\[1G\[6G"
22
+ send -- ":"
23
+ expect "\[1GTest::\[K\[1G\[7G"
24
+ send -- "B"
25
+ expect "\[1GTest::B\[K\[1G\[8G"
26
+ send -- "a"
27
+ expect "\[1GTest::Ba\[K\[1G\[9G"
28
+ send -- "n"
29
+ expect "\[1GTest::Ban\[K\[1G\[10G"
30
+ send -- "k"
31
+ expect "\[1GTest::Bank\[K\[1G\[11G"
32
+ send -- "\r"
33
+ expect eof
@@ -0,0 +1,11 @@
1
+
2
+ Date | Amount | Description | Note |
3
+ 2003-12-24 | $2,105.00 | CREDIT; Some Company vendorpymt PPD ID: 5KL3832735 | |
4
+ 2004-12-24 | -$116.22 | CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL | |
5
+ 2005-12-24 | -$0.96 | DEBIT; WEBSITE-BALANCE-10DEC09 12 12/10WEBSITE-BAL | |
6
+ 2006-12-24 | $0.23 | DEBIT; WEBSITE-BALANCE-17DEC09 12 12/17WEBSITE-BAL | |
7
+ 2007-12-24 | $1,558.52 | CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563 | |
8
+ 2008-12-24 | $3,520.00 | CREDIT; Some Company vendorpymt PPD ID: 59728JSL20 | |
9
+ 2009-12-24 | -$7.00 | DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04 | |
10
+ 2010-12-24 | -$20.00 | CHECK; CHECK 2656 | |
11
+ 2011-12-24 | -$85.00 | DEBIT; HOST 037196321563 MO 12/22SLICEHOST | |
@@ -0,0 +1,9 @@
1
+ DEBIT,2011/12/24,"HOST 037196321563 MO 12/22SLICEHOST",($85.00)
2
+ CHECK,2010/12/24,"CHECK 2656",($20.00)
3
+ DEBIT,2009/12/24,"GITHUB 041287430274 CA 12/22GITHUB 04",($7.00)
4
+ CREDIT,2008/12/24,"Some Company vendorpymt PPD ID: 59728JSL20",$3520.00
5
+ CREDIT,2007/12/24,"Blarg BLARG REVENUE PPD ID: 00jah78563",$1558.52
6
+ DEBIT,2006/12/24,"WEBSITE-BALANCE-17DEC09 12 12/17WEBSITE-BAL",$.23
7
+ DEBIT,2005/12/24,"WEBSITE-BALANCE-10DEC09 12 12/10WEBSITE-BAL",($0.96)
8
+ CREDIT,2004/12/24,"PAYPAL TRANSFER PPD ID: PAYPALSDSL",($116.22)
9
+ CREDIT,2003/12/24,"Some Company vendorpymt PPD ID: 5KL3832735",$2105.00
@@ -0,0 +1 @@
1
+ -f input.csv -p
@@ -8,7 +8,7 @@
8
8
 
9
9
  2013-06-19 2013-06-24; Buy; ISHARES S&P/TSX CAPPED REIT IN; XRE; 300; 15.90; CDN; CAD
10
10
  Income:Unknown
11
- Assets:Bank:Checking -$4779.95
11
+ Assets:Bank:Checking -$4,779.95
12
12
 
13
13
  2013-06-27 2013-06-27; Dividend; ICICI BK SPONSORED ADR; IBN; 100; USD
14
14
  Assets:Bank:Checking $66.70
@@ -19,7 +19,7 @@
19
19
  Income:Unknown
20
20
 
21
21
  2014-01-07 2014-01-10; Sell; BMO NASDAQ 100 EQTY HEDGED TO; ZQQ; -300; 27.44; CDN; CAD
22
- Assets:Bank:Checking $8222.05
22
+ Assets:Bank:Checking $8,222.05
23
23
  Income:Unknown
24
24
 
25
25
  2014-01-07 2014-01-07; Interest; BMO S&P/TSX EQUAL WEIGHT BKS I; ZEB; 250; CAD
@@ -1,5 +1,5 @@
1
1
  2009-12-10 CREDIT; Some Company vendorpymt PPD ID: 5KL3832735
2
- Assets:Bank:Checking $2105.00
2
+ Assets:Bank:Checking $2,105.00
3
3
  Income:Unknown
4
4
 
5
5
  2009-12-11 CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL
@@ -15,11 +15,11 @@
15
15
  Assets:Bank:Checking -$12.23
16
16
 
17
17
  2009-12-23 CREDIT; Some Company vendorpymt PPD ID: 59728JSL20
18
- Assets:Bank:Checking $3520.00
18
+ Assets:Bank:Checking $3,520.00
19
19
  Income:Unknown
20
20
 
21
21
  2009-12-23 CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563
22
- Assets:Bank:Checking $1558.52
22
+ Assets:Bank:Checking $1,558.52
23
23
  Income:Unknown
24
24
 
25
25
  2009-12-24 DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04
@@ -1,5 +1,5 @@
1
1
  2009-12-10 CREDIT; Some Company vendorpymt PPD ID: 5KL3832735
2
- Assets:Bank:Checking $2105.00
2
+ Assets:Bank:Checking $2,105.00
3
3
  Income:Default
4
4
 
5
5
  2009-12-11 CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL
@@ -15,11 +15,11 @@
15
15
  Assets:Bank:Checking -$12.23
16
16
 
17
17
  2009-12-23 CREDIT; Some Company vendorpymt PPD ID: 59728JSL20
18
- Assets:Bank:Checking $3520.00
18
+ Assets:Bank:Checking $3,520.00
19
19
  Income:Default
20
20
 
21
21
  2009-12-23 CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563
22
- Assets:Bank:Checking $1558.52
22
+ Assets:Bank:Checking $1,558.52
23
23
  Income:Default
24
24
 
25
25
  2009-12-24 DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04
@@ -1,5 +1,5 @@
1
1
  2009-12-10 CREDIT; Some Company vendorpymt PPD ID: 5KL3832735
2
- Assets:Bank:Checking $2105.00
2
+ Assets:Bank:Checking $2,105.00
3
3
  Income:Unknown
4
4
 
5
5
  2009-12-11 CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL
@@ -15,11 +15,11 @@
15
15
  Assets:Bank:Checking -$12.23
16
16
 
17
17
  2009-12-23 CREDIT; Some Company vendorpymt PPD ID: 59728JSL20
18
- Assets:Bank:Checking $3520.00
18
+ Assets:Bank:Checking $3,520.00
19
19
  Income:Unknown
20
20
 
21
21
  2009-12-23 CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563
22
- Assets:Bank:Checking $1558.52
22
+ Assets:Bank:Checking $1,558.52
23
23
  Income:Unknown
24
24
 
25
25
  2009-12-24 DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04
@@ -1,5 +1,5 @@
1
1
  2009-12-10 CREDIT; Some Company vendorpymt PPD ID: 5KL3832735
2
- Assets:Bank:Checking $2105.00
2
+ Assets:Bank:Checking $2,105.00
3
3
  Income:Unknown
4
4
 
5
5
  2009-12-11 CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL
@@ -15,11 +15,11 @@
15
15
  Assets:Bank:Checking -$12.23
16
16
 
17
17
  2009-12-23 CREDIT; Some Company vendorpymt PPD ID: 59728JSL20
18
- Assets:Bank:Checking $3520.00
18
+ Assets:Bank:Checking $3,520.00
19
19
  Income:Unknown
20
20
 
21
21
  2009-12-23 CREDIT; Blarg BLARG REVENUE PPD ID: 00jah78563
22
- Assets:Bank:Checking $1558.52
22
+ Assets:Bank:Checking $1,558.52
23
23
  Income:Unknown
24
24
 
25
25
  2009-12-24 DEBIT; GITHUB 041287430274 CA 12/22GITHUB 04
@@ -4,7 +4,7 @@
4
4
 
5
5
  2012-09-12 Dankort-nota B.J. TRADING E 14660; 12-09-2012; 26164,80
6
6
  Expenses:Unknown
7
- Assets:Bank:Checking -$3452.90
7
+ Assets:Bank:Checking -$3,452.90
8
8
 
9
9
  2012-10-12 Visa kob DKK 995,00 WWW.ASOS.COM 00000; 12-10-2012; 27939,54
10
10
  Expenses:Unknown
@@ -3,7 +3,7 @@
3
3
  Income:Unknown
4
4
 
5
5
  2012-11-01 Proventos; 496774
6
- Assets:Bank:Checking $1000.00
6
+ Assets:Bank:Checking $1,000.00
7
7
  Income:Unknown
8
8
 
9
9
  2012-11-01 0000-9; TransferĆŖncia on line - 01/11 4885 256620-6 XXXXXXXXXXXXX; 224885000256620
@@ -1,5 +1,5 @@
1
1
  2009-11-04 TRANSFER CREDIT INTERNET TRANSFER; INTERNET TRANSFER; 1234.00
2
- Assets:Bank:Checking $1234.00
2
+ Assets:Bank:Checking $1,234.00
3
3
  Income:Unknown
4
4
 
5
5
  2009-11-10 TRANSFER DEBIT INTERNET TRANSFER; INTERNET TRANSFER MORTGAGE; 0.00
@@ -16,5 +16,5 @@
16
16
 
17
17
  2011-11-04 TRANSFER DEBIT INTERNET TRANSFER; INTERNET TRANSFER SAV TO MECU; 0.00
18
18
  Income:Unknown
19
- Assets:Bank:Checking -$1234.00
19
+ Assets:Bank:Checking -$1,234.00
20
20
 
@@ -1 +1 @@
1
- -f input.csv --unattended --account Assets:Bank:Checking --contains-header 4o
1
+ -f input.csv --unattended --account Assets:Bank:Checking --contains-header 4
@@ -0,0 +1 @@
1
+ ledger --input-date-format '%d/%m/%Y'
@@ -0,0 +1,3 @@
1
+ 02/12/2009,Check - 0000000122,122,-$76.00,"","$1,750.06"
2
+ 02/12/2009,BLARG R SH 456930,"","",+$327.49,"$1,826.06"
3
+ 02/12/2009,Check - 0000000112,112,-$800.00,"","$1,498.57"
@@ -0,0 +1,12 @@
1
+ 02/12/2009 BLARG R SH 456930; $1,826.06
2
+ Assets:Bank:Checking $327.49
3
+ Income:Unknown
4
+
5
+ 02/12/2009 Check - 0000000122; 122; $1,750.06
6
+ Income:Unknown
7
+ Assets:Bank:Checking -$76.00
8
+
9
+ 02/12/2009 Check - 0000000112; 112; $1,498.57
10
+ Income:Unknown
11
+ Assets:Bank:Checking -$800.00
12
+
@@ -0,0 +1 @@
1
+ -f input.csv --unattended --account Assets:Bank:Checking --date-format '%d/%m/%Y' --ledger-date-format '%d/%m/%Y'
@@ -1,13 +1,14 @@
1
1
  #!/bin/bash
2
2
 
3
- # set -x
4
-
5
3
  set -Euo pipefail
6
4
 
5
+
7
6
  SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
8
7
  TEST_DIFF=""
9
8
  OUTPUT=""
10
- RECKON_CMD="env RUBYLIB=$SCRIPT_DIR/../../lib:$RUBYLIB reckon -v"
9
+ RECKON_CMD="reckon -v"
10
+ export RUBYLIB=$SCRIPT_DIR/../../lib:${RUBYLIB:-}
11
+ export PATH="$SCRIPT_DIR/../../bin:$PATH"
11
12
 
12
13
  main () {
13
14
  trap test_fail EXIT
@@ -20,28 +21,64 @@ main () {
20
21
 
21
22
  echo > test.log
22
23
 
24
+ NUM_TESTS=$(echo "$TESTS" |wc -l |awk '{print $1}')
25
+
26
+ echo "1..$NUM_TESTS"
27
+
28
+ I=1
29
+
23
30
  for t in $TESTS; do
24
- OUTPUT_FILE=$(mktemp)
25
31
  TEST_DIR=$(dirname "$t")
32
+ TEST_LOG=$(mktemp)
26
33
  pushd "$TEST_DIR" >/dev/null || exit 1
27
- echo "$TEST_DIR Running..."
28
- TEST_CMD="$RECKON_CMD -o $OUTPUT_FILE $(cat test_args)"
29
- TEST_LOG=$(eval "$TEST_CMD" 2>&1)
30
- ERROR=0
31
-
32
- compare_output "$OUTPUT_FILE"
34
+ if [[ -e "cli_input.exp" ]]; then
35
+ cli_test >$TEST_LOG 2>&1
36
+ else
37
+ unattended_test >$TEST_LOG 2>&1
38
+ fi
33
39
 
34
40
  popd >/dev/null || exit 1
35
41
  # have to save output after popd
36
42
  echo -e "\n\n======>$TEST_DIR" >> test.log
37
- echo -e "TEST_CMD\n$TEST_LOG" >> test.log
43
+ echo -e "TEST_CMD: $TEST_CMD" >> test.log
44
+ cat $TEST_LOG >> test.log
38
45
 
39
46
  if [[ $ERROR -ne 0 ]]; then
47
+ echo -e "not ok $I - $TEST_DIR"
48
+ tail -n25 test.log
40
49
  exit 1
50
+ else
51
+ echo -e "ok $I - $TEST_DIR"
41
52
  fi
53
+ I=$(($I + 1))
42
54
  done
43
55
  }
44
56
 
57
+ cli_test () {
58
+ OUTPUT_FILE=$(mktemp)
59
+ CLI_CMD="$RECKON_CMD --table-output-file $OUTPUT_FILE $(cat test_args)"
60
+ TEST_CMD="expect -d -c 'spawn $CLI_CMD' cli_input.exp"
61
+ eval $TEST_CMD 2>&1
62
+ ERROR=0
63
+ TEST_DIFF=$(diff -u "$OUTPUT_FILE" expected_output)
64
+
65
+ # ${#} is character length, test that there was no output from diff
66
+ if [ ${#TEST_DIFF} -eq 0 ]; then
67
+ ERROR=0
68
+ else
69
+ ERROR=1
70
+ fi
71
+ }
72
+
73
+ unattended_test() {
74
+ OUTPUT_FILE=$(mktemp)
75
+ TEST_CMD="$RECKON_CMD -o $OUTPUT_FILE $(cat test_args)"
76
+ eval $TEST_CMD 2>&1
77
+ ERROR=0
78
+
79
+ compare_output "$OUTPUT_FILE"
80
+ }
81
+
45
82
  test_fail () {
46
83
  STATUS=$?
47
84
  if [[ $STATUS -ne 0 ]]; then
@@ -50,11 +87,40 @@ test_fail () {
50
87
  fi
51
88
  }
52
89
 
90
+ compare_output () {
91
+ OUTPUT_FILE=$1
92
+ pwd
93
+ if [[ -e compare_cmds ]]; then
94
+ COMPARE_CMDS=$(cat compare_cmds)
95
+ else
96
+ COMPARE_CMDS=$'ledger\nhledger'
97
+ fi
98
+
99
+ ERROR=1
100
+ while IFS= read -r n; do
101
+ if compare_output_for "$OUTPUT_FILE" "$n"; then
102
+ ERROR=0
103
+ else
104
+ ERROR=1
105
+ break
106
+ fi
107
+ done <<< "$COMPARE_CMDS"
108
+ }
109
+
53
110
  compare_output_for () {
54
111
  OUTPUT_FILE=$1
55
112
  LEDGER=$2
56
113
 
57
- TEST_DIFF=$(diff -u <($LEDGER -f output.ledger r --date-format %F 2>&1) <($LEDGER -f "$OUTPUT_FILE" r --date-format %F 2>&1) )
114
+ EXPECTED_FILE=$(mktemp)
115
+ ACTUAL_FILE=$(mktemp)
116
+
117
+ echo $LEDGER -f output.ledger r "$EXPECTED_FILE"
118
+ eval $LEDGER -f output.ledger r >"$EXPECTED_FILE" || return 1
119
+
120
+ echo $LEDGER -f output.ledger r "$ACTUAL_FILE"
121
+ eval $LEDGER -f output.ledger r >"$ACTUAL_FILE" || return 1
122
+
123
+ TEST_DIFF=$(diff -u "$EXPECTED_FILE" "$ACTUAL_FILE")
58
124
 
59
125
  # ${#} is character length, test that there was no output from diff
60
126
  if [ ${#TEST_DIFF} -eq 0 ]; then
@@ -64,19 +130,4 @@ compare_output_for () {
64
130
  fi
65
131
  }
66
132
 
67
- compare_output () {
68
- OUTPUT_FILE=$1
69
-
70
- for n in {ledger,hledger}; do
71
- echo -n " - $n..."
72
- if compare_output_for "$OUTPUT_FILE" "$n"; then
73
- echo "SUCCESS!"
74
- else
75
- echo "FAILED!"
76
- ERROR=1
77
- return 0
78
- fi
79
- done
80
- }
81
-
82
133
  main "$@"
@@ -16,10 +16,10 @@ describe Reckon::App do
16
16
  describe "each_row_backwards" do
17
17
  it "should return rows with hashes" do
18
18
  @rows[0][:pretty_date].should == "2009-12-10"
19
- @rows[0][:pretty_money].should == " $2105.00"
19
+ @rows[0][:pretty_money].should == " $2,105.00"
20
20
  @rows[0][:description].should == "CREDIT; Some Company vendorpymt PPD ID: 5KL3832735"
21
21
  @rows[1][:pretty_date].should == "2009-12-11"
22
- @rows[1][:pretty_money].should == "-$116.22"
22
+ @rows[1][:pretty_money].should == " $116.22"
23
23
  @rows[1][:description].should == "CREDIT; PAYPAL TRANSFER PPD ID: PAYPALSDSL"
24
24
  end
25
25
  end
@@ -37,14 +37,16 @@ describe Reckon::App do
37
37
 
38
38
  context 'unattended mode with chase csv input' do
39
39
  let(:output_file) { StringIO.new }
40
- let(:chase) {
40
+ let(:chase) do
41
41
  Reckon::App.new(
42
42
  string: BANK_CSV,
43
43
  unattended: true,
44
44
  output_file: output_file,
45
- bank_account: 'Assets:Bank:Checking'
45
+ bank_account: 'Assets:Bank:Checking',
46
+ default_into_account: 'Expenses:Unknown',
47
+ default_outof_account: 'Income:Unknown',
46
48
  )
47
- }
49
+ end
48
50
 
49
51
  describe 'walk backwards' do
50
52
  it 'should assign Income:Unknown and Expenses:Unknown by default' do
@@ -87,20 +89,20 @@ describe Reckon::App do
87
89
  end
88
90
  end
89
91
 
90
- describe 'csv from STDIN' do
91
- it 'should assign to :string option' do
92
- options = Reckon::App.parse_opts(
93
- %w[-f - --unattended --account bank],
94
- StringIO.new('foo,bar,baz')
95
- )
96
- expect(options[:string]).to eq('foo,bar,baz')
97
- end
92
+ it 'should fail-on-unknown-account' do
93
+ chase = Reckon::App.new(
94
+ string: BANK_CSV,
95
+ unattended: true,
96
+ output_file: output_file,
97
+ bank_account: 'Assets:Bank:Checking',
98
+ default_into_account: 'Expenses:Unknown',
99
+ default_outof_account: 'Income:Unknown',
100
+ fail_on_unknown_account: true
101
+ )
98
102
 
99
- it 'should require --unattended flag' do
100
- expect {Reckon::App.parse_opts(%w[-f - --account bank])}.to(
101
- raise_error(RuntimeError, "--unattended is required to use STDIN as CSV source.")
102
- )
103
- end
103
+ expect { chase.walk_backwards }.to(
104
+ raise_error(RuntimeError, /Couldn't find any matches/)
105
+ )
104
106
  end
105
107
  end
106
108
 
@@ -162,7 +164,7 @@ describe Reckon::App do
162
164
  CREDIT,20091223120000[0:GMT],"Blarg BLARG REVENUE PPD ID: 00jah78563",1558.52
163
165
  DEBIT,20091221120000[0:GMT],"WEBSITE-BALANCE-17DEC09 12 12/17WEBSITE-BAL",-12.23
164
166
  DEBIT,20091214120000[0:GMT],"WEBSITE-BALANCE-10DEC09 12 12/10WEBSITE-BAL",-20.96
165
- CREDIT,20091211120000[0:GMT],"PAYPAL TRANSFER PPD ID: PAYPALSDSL",-116.22
167
+ CREDIT,20091211120000[0:GMT],"PAYPAL TRANSFER PPD ID: PAYPALSDSL",116.22
166
168
  CREDIT,20091210120000[0:GMT],"Some Company vendorpymt PPD ID: 5KL3832735",2105.00
167
169
  CSV
168
170