impl fidel deposit

master
Bel LaPointe 2022-12-09 09:52:22 -07:00
parent 8b226294a2
commit 5c557ea713
3 changed files with 85 additions and 0 deletions

View File

@ -223,9 +223,30 @@ func (c *fidelityScraper) scrape(m *mail.Message) ([]*Transaction, error) {
if strings.Contains(subject, "Debit Withdrawal") { if strings.Contains(subject, "Debit Withdrawal") {
return c.scrapeWithdrawal(m) return c.scrapeWithdrawal(m)
} }
if strings.Contains(subject, "Deposit Received") {
return c.scrapeDeposit(m)
}
panic(nil) panic(nil)
} }
func (c *fidelityScraper) scrapeDeposit(m *mail.Message) ([]*Transaction, error) {
b, err := ioutil.ReadAll(m.Body)
if err != nil {
return nil, err
}
fidelAcc, _ := findSubstringBetween(b, "Account: XXXXX", "\n")
transaction := NewTransaction(
fmt.Sprintf("%s-%s", Fidelity, fidelAcc),
"?.??",
"misc",
fmt.Sprint(m.Header["Date"]),
Fidelity,
)
return []*Transaction{transaction}, nil
}
func (c *fidelityScraper) scrapeWithdrawal(m *mail.Message) ([]*Transaction, error) { func (c *fidelityScraper) scrapeWithdrawal(m *mail.Message) ([]*Transaction, error) {
b, err := ioutil.ReadAll(m.Body) b, err := ioutil.ReadAll(m.Body)
if err != nil { if err != nil {

View File

@ -179,6 +179,41 @@ func TestScrapeBofAPayment(t *testing.T) {
} }
} }
func TestScrapeFidelityDeposit(t *testing.T) {
b, err := ioutil.ReadFile("./testdata/fidelity.deposit.txt")
if err != nil {
t.Fatal(err)
}
message := &mail.Message{
Header: map[string][]string{
"Subject": []string{"Fidelity Alerts: Deposit Received"},
},
Body: bytes.NewReader(b),
}
fidelity := &fidelityScraper{}
gots, err := fidelity.scrape(message)
if err != nil {
t.Fatal(err)
}
if len(gots) != 1 {
t.Fatal(len(gots))
}
got := gots[0]
want := Transaction{
ID: got.ID,
Bank: Fidelity,
Amount: "?.??",
Vendor: "misc",
Date: "[]",
Account: Fidelity.String() + "-5576",
}
if *got != want {
t.Fatalf("want:\n\t%+v, got\n\t%+v", want, *got)
}
}
func TestScrapeFidelityWithdrawal(t *testing.T) { func TestScrapeFidelityWithdrawal(t *testing.T) {
b, err := ioutil.ReadFile("./testdata/fidelity.withdrawal.txt") b, err := ioutil.ReadFile("./testdata/fidelity.withdrawal.txt")
if err != nil { if err != nil {

29
testdata/fidelity.deposit.txt vendored Normal file
View File

@ -0,0 +1,29 @@
Account: XXXXX5576
A deposit to your account was received on 12/08/2022.
Important information:
Fidelity automatically emails certain alerts to customers who have provided
an email address. You can see the terms which govern these alerts at
https://www.fidelity.com/customer-service/alerts-agreement. If you would
prefer to not receive these alerts, please change your preferences at
https://scs.fidelity.com/customeronly/alerts.shtml.
Review Fidelity's Terms of Use for Third Party Content and Research at
https://www.fidelity.com/terms-of-use#Third.
If your email has changed, please update your email address
at https://alertable.fidelity.com/ftgw/alerts/GetUserDeliveryDevices to continue to
receive your alerts.
Fidelity Brokerage Services LLC, Member NYSE, SIPC
EMAIL REF# 537048
Copyright 2022 FMR LLC
All rights reserved. Important Legal Information
at http://www.fidelity.com/terms-of-use.