clean tdd

main
Bel LaPointe 2023-10-25 06:04:49 -06:00
parent 9f8614d032
commit e7a1626bba
2 changed files with 58 additions and 14 deletions

View File

@ -1,6 +1,12 @@
package ledger package ledger
import "io" import (
"fmt"
"io"
"os"
)
var filesAppendDelim = "\t"
type Files []string type Files []string
@ -11,7 +17,42 @@ func NewFiles(p string, q ...string) (Files, error) {
} }
func (files Files) Add(payee string, delta Delta) error { func (files Files) Add(payee string, delta Delta) error {
// TODO currencyValue := fmt.Sprintf("%s%.2f", delta.Currency, delta.Value)
if delta.Currency != USD {
currencyValue = fmt.Sprintf("%.2f %s", delta.Value, delta.Currency)
}
return files.append(fmt.Sprintf("%s %s\n%s%s%s%s\n%s%s",
delta.Date, delta.Description,
filesAppendDelim, delta.Name, filesAppendDelim+filesAppendDelim+filesAppendDelim, currencyValue,
filesAppendDelim, payee,
))
}
func (files Files) append(s string) error {
if err := files.trimTrainlingWhitespace(); err != nil {
return err
}
f, err := os.OpenFile(string(files[0]), os.O_APPEND|os.O_CREATE|os.O_WRONLY, os.ModePerm)
if err != nil {
return err
}
defer f.Close()
fmt.Fprintf(f, "\n%s", s)
return f.Close()
}
func (files Files) trimTrainlingWhitespace() error {
f, err := os.Open(string(files[0]))
if os.IsNotExist(err) {
return nil
}
if err != nil {
return err
}
defer f.Close()
return io.EOF return io.EOF
} }

View File

@ -8,6 +8,7 @@ import (
) )
func TestFileAdd(t *testing.T) { func TestFileAdd(t *testing.T) {
filesAppendDelim = " "
payee := "name:3" payee := "name:3"
delta := Delta{ delta := Delta{
Date: "2999-88-77", Date: "2999-88-77",
@ -22,15 +23,17 @@ func TestFileAdd(t *testing.T) {
}{ }{
"no file": { "no file": {
given: nil, given: nil,
want: `2999-88-77 66 want: `
name:1 $2.00 2999-88-77 66
name:3`, name:1 $2.00
name:3`,
}, },
"empty file": { "empty file": {
given: []byte{}, given: []byte{},
want: `2999-88-77 66 want: `
name:1 $2.00 2999-88-77 66
name:3`, name:1 $2.00
name:3`,
}, },
"happy without trailing whitespace": { "happy without trailing whitespace": {
given: []byte(` given: []byte(`
@ -41,9 +44,9 @@ func TestFileAdd(t *testing.T) {
2000-01-02 desc 2000-01-02 desc
name:1 $1.00 name:1 $1.00
name:2 $-1.00 name:2 $-1.00
2999-88-77 66 2999-88-77 66
name:1 $2.00 name:1 $2.00
name:3`, name:3`,
}, },
"happy with trailing newline": { "happy with trailing newline": {
given: []byte(` given: []byte(`
@ -55,9 +58,9 @@ func TestFileAdd(t *testing.T) {
2000-01-02 desc 2000-01-02 desc
name:1 $1.00 name:1 $1.00
name:2 $-1.00 name:2 $-1.00
2999-88-77 66 2999-88-77 66
name:1 $2.00 name:1 $2.00
name:3`, name:3`,
}, },
} }