Beispiel #1
0
    def test_get_price_jobs__currencies_not_at_cost(self, entries, _, __):
        """
        2000-01-10 open Assets:US:BofA:Checking
        2000-01-10 open Assets:US:BofA:CHF

        2014-01-01 commodity USD
        2014-01-01 commodity CHF
          price: "USD:yahoo/CHFUSD=X"

        2021-01-04 *
          Assets:US:BofA:Checking        100 USD
          Assets:US:BofA:CHF             -110 CHF @@ 100 USD
        """
        # TODO: Shouldn't we actually return (CHF, USD) here?
        jobs = price.get_price_jobs_at_date(entries, datetime.date(2021, 1, 4),
                                            False, None)
        self.assertEqual(set(), {(job.base, job.quote) for job in jobs})

        jobs = price.get_price_jobs_at_date(entries, datetime.date(2021, 1, 6),
                                            False, None)
        self.assertEqual({('CHF', 'USD')}, {(job.base, job.quote) for job in jobs})

        # TODO: Shouldn't we return (CHF, USD) here, as above?
        jobs = price.get_price_jobs_up_to_date(entries, datetime.date(2021, 1, 6),
                                               False, None)
        self.assertEqual(set(), {(job.base, job.quote) for job in jobs})
Beispiel #2
0
    def test_get_price_jobs__inactive(self, entries, _, __):
        """
        2000-01-10 open Assets:US:Invest:QQQ
        2000-01-10 open Assets:US:Invest:VEA
        2000-01-10 open Assets:US:Invest:Margin

        2014-01-01 commodity QQQ
          price: "USD:yahoo/NASDAQ:QQQ"

        2014-01-01 commodity VEA
          price: "USD:yahoo/NASDAQ:VEA"

        2014-02-06 *
          Assets:US:Invest:QQQ             100 QQQ {86.23 USD}
          Assets:US:Invest:VEA             200 VEA {43.22 USD}
          Assets:US:Invest:Margin

        2014-08-07 *
          Assets:US:Invest:QQQ            -100 QQQ {86.23 USD} @ 91.23 USD
          Assets:US:Invest:Margin
        """
        jobs = price.get_price_jobs_at_date(entries, None, False, None)
        self.assertEqual({('VEA', 'USD')}, {(job.base, job.quote) for job in jobs})

        jobs = price.get_price_jobs_at_date(entries, None, True, None)
        self.assertEqual({('VEA', 'USD'), ('QQQ', 'USD')},
                         {(job.base, job.quote) for job in jobs})
Beispiel #3
0
    def test_get_price_jobs__default_source(self, entries, _, __):
        """
        2000-01-10 open Assets:US:Invest:QQQ
        2000-01-10 open Assets:US:Invest:Margin

        2014-01-01 commodity QQQ
          price: "NASDAQ:QQQ"

        2014-02-06 *
          Assets:US:Invest:QQQ             100 QQQ {86.23 USD}
          Assets:US:Invest:Margin
        """
        jobs = price.get_price_jobs_at_date(entries, None, False, 'yahoo')
        self.assertEqual(1, len(jobs[0].sources))
        self.assertIsInstance(jobs[0].sources[0], price.PriceSource)