mirror of
https://github.com/Gnucash/gnucash.git
synced 2025-02-25 18:55:30 -06:00
[price-quotes] Test the other fetch overloads and quote values.
This commit is contained in:
parent
b5bc6463a3
commit
29ce925646
@ -64,6 +64,7 @@ GncMockQuoteSource::get_quotes(const std::string& json_string) const
|
||||
{
|
||||
return {0, m_quotes, m_errors};
|
||||
}
|
||||
|
||||
class GncQuotesTest : public ::testing::Test
|
||||
{
|
||||
protected:
|
||||
@ -155,3 +156,69 @@ TEST_F(GncQuotesTest, offline_wiggle)
|
||||
auto pricedb{gnc_pricedb_get_db(m_book)};
|
||||
EXPECT_EQ(3u, gnc_pricedb_get_num_prices(pricedb));
|
||||
}
|
||||
|
||||
TEST_F(GncQuotesTest, comvec_fetch)
|
||||
{
|
||||
StrVec quote_vec{
|
||||
"{\"AAPL\":{\"eps\":6.05,\"success\":1,\"year_range\":\" 129.04 - 182.94\",\"currency\":\"USD\",\"exchange\":\"Sourced from Yahoo Finance (as JSON)\",\"volume\":73539475,\"close\":157.22,\"high\":158.39,\"open\":156.64,\"div_yield\":0.5660857,\"last\":157.96,\"isodate\":\"2022-09-01\",\"method\":\"yahoo_json\",\"name\":\"AAPL (Apple Inc.)\",\"pe\":26.10909,\"low\":154.67,\"type\":\"EQUITY\",\"symbol\":\"AAPL\",\"date\":\"09/01/2022\"},\"HPE\":{\"symbol\":\"HPE\",\"date\":\"09/01/2022\",\"low\":13.13,\"type\":\"EQUITY\",\"method\":\"yahoo_json\",\"name\":\"HPE (Hewlett Packard Enterprise Comp)\",\"isodate\":\"2022-09-01\",\"pe\":4.7921147,\"last\":13.37,\"high\":13.535,\"close\":13.6,\"open\":13.5,\"div_yield\":3.5294116,\"volume\":16370483,\"exchange\":\"Sourced from Yahoo Finance (as JSON)\",\"currency\":\"USD\",\"year_range\":\" 12.4 - 17.76\",\"eps\":2.79,\"success\":1}}"
|
||||
};
|
||||
StrVec err_vec;
|
||||
auto commtable{gnc_commodity_table_get_table(m_book)};
|
||||
auto hpe{gnc_commodity_table_lookup(commtable, "NYSE", "HPE")};
|
||||
auto aapl{gnc_commodity_table_lookup(commtable, "NASDAQ", "AAPL")};
|
||||
CommVec comms{hpe, aapl};
|
||||
GncQuotesImpl quotes(m_book, std::make_unique<GncMockQuoteSource>(std::move(quote_vec), std::move(err_vec)));
|
||||
quotes.fetch(comms);
|
||||
auto pricedb{gnc_pricedb_get_db(m_book)};
|
||||
EXPECT_EQ(2u, gnc_pricedb_get_num_prices(pricedb));
|
||||
}
|
||||
|
||||
TEST_F(GncQuotesTest, fetch_one_commodity)
|
||||
{
|
||||
StrVec quote_vec{
|
||||
"{\"HPE\":{\"date\":\"09/01/2022\",\"last\":13.37,\"currency\":\"USD\",\"success\":1}}"
|
||||
};
|
||||
StrVec err_vec;
|
||||
auto commtable{gnc_commodity_table_get_table(m_book)};
|
||||
auto hpe{gnc_commodity_table_lookup(commtable, "NYSE", "HPE")};
|
||||
auto usd{gnc_commodity_table_lookup(commtable, "ISO4217", "USD")};
|
||||
GncQuotesImpl quotes(m_book, std::make_unique<GncMockQuoteSource>(std::move(quote_vec), std::move(err_vec)));
|
||||
quotes.fetch(hpe);
|
||||
auto pricedb{gnc_pricedb_get_db(m_book)};
|
||||
auto price{gnc_pricedb_lookup_latest(pricedb, hpe, usd)};
|
||||
auto datetime{static_cast<time64>(GncDateTime("20220901160000"))};
|
||||
|
||||
EXPECT_EQ(usd, gnc_price_get_currency(price));
|
||||
EXPECT_EQ(datetime, gnc_price_get_time64(price));
|
||||
EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price));
|
||||
EXPECT_TRUE(gnc_numeric_equal(GncNumeric{1337, 100},
|
||||
gnc_price_get_value(price)));
|
||||
EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price));
|
||||
EXPECT_STREQ("last", gnc_price_get_typestr(price));
|
||||
}
|
||||
|
||||
TEST_F(GncQuotesTest, fetch_one_currency)
|
||||
{
|
||||
StrVec quote_vec{
|
||||
"{\"EUR\":{\"symbol\":\"EUR\",\"currency\":\"USD\",\"success\":\"1\",\"inverted\":0,\"last\":1.0004}}"
|
||||
};
|
||||
StrVec err_vec;
|
||||
auto commtable{gnc_commodity_table_get_table(m_book)};
|
||||
auto eur{gnc_commodity_table_lookup(commtable, "ISO4217", "EUR")};
|
||||
auto usd{gnc_commodity_table_lookup(commtable, "ISO4217", "USD")};
|
||||
GncQuotesImpl quotes(m_book, std::make_unique<GncMockQuoteSource>(std::move(quote_vec), std::move(err_vec)));
|
||||
quotes.fetch(eur);
|
||||
auto pricedb{gnc_pricedb_get_db(m_book)};
|
||||
auto price{gnc_pricedb_lookup_latest(pricedb, eur, usd)};
|
||||
auto datetime{static_cast<time64>(GncDateTime())};
|
||||
|
||||
EXPECT_EQ(usd, gnc_price_get_currency(price));
|
||||
EXPECT_EQ(datetime, gnc_price_get_time64(price));
|
||||
EXPECT_EQ(PRICE_SOURCE_FQ, gnc_price_get_source(price));
|
||||
EXPECT_EQ(10004, gnc_price_get_value(price).num);
|
||||
EXPECT_TRUE(gnc_numeric_equal(GncNumeric{10004, 10000},
|
||||
gnc_price_get_value(price)));
|
||||
EXPECT_STREQ("Finance::Quote", gnc_price_get_source_string(price));
|
||||
EXPECT_STREQ("last", gnc_price_get_typestr(price));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user