コード例 #1
0
ファイル: test_redis.py プロジェクト: doko123/xrates_ledger
def test_get_returns_last_record(initial_records, cache):
    ordered_fields = redis.RedisInterface().ORDERED_KEYS

    records = redis.RedisInterface().get()

    assert len(records) == 1
    _cmp_record(records[0], initial_records[0], ordered_fields)
コード例 #2
0
ファイル: test_redis.py プロジェクト: doko123/xrates_ledger
def extra_records(initial_records, testing_rate):
    assert len(initial_records) == 2
    extra_recs = copy.deepcopy(initial_records)
    rec3_amount = decimal.Decimal("3.45678")
    rec4_amount = decimal.Decimal("400.456738")
    extra_recs.append(
        CurrencyXrateFactory.build(
            amount=rec3_amount,
            currency="PLN",
            price=testing_rate,
            final_amount=testing_rate * rec3_amount,
        ))
    extra_recs.append(
        CurrencyXrateFactory.build(
            amount=rec4_amount,
            currency="EUR",
            price=testing_rate,
            final_amount=testing_rate * rec4_amount,
        ))
    assert len(redis.RedisInterface().get_all()) == 2
    redis.RedisInterface().save(extra_recs[2])
    redis.RedisInterface().save(extra_recs[3])
    assert len(extra_recs) == 4
    assert len(redis.RedisInterface().get_all()) == 4
    return extra_recs
コード例 #3
0
ファイル: test_redis.py プロジェクト: doko123/xrates_ledger
def test_get_returns_last_records_(initial_records, filter_key, filter_value,
                                   n, exp_results_qty, cache):
    assert len(redis.RedisInterface().get_all()) == 2
    fields_order = redis.RedisInterface().ORDERED_KEYS
    records = redis.RedisInterface().get(key=filter_key,
                                         value=filter_value,
                                         n=n)

    assert len(records) == exp_results_qty
    for rec, exp_rec in zip(records, initial_records):
        _cmp_record(rec, exp_rec, fields_order)
コード例 #4
0
    def last(self, n=None, currency=None):
        from app.core.interfaces import my_sql, redis

        key = "currency" if currency else None

        cached_trades = redis.RedisInterface().get(key=key,
                                                   value=currency,
                                                   n=n)
        saved_trades = my_sql.MySqlInterface().get(key=key,
                                                   value=currency,
                                                   n=n)
        return cached_trades, saved_trades
コード例 #5
0
ファイル: test_redis.py プロジェクト: doko123/xrates_ledger
def initial_records(cache, testing_rate):
    records = []
    rec1_amount = decimal.Decimal("1.12345678")
    rec2_amount = decimal.Decimal("2.45678")
    records.append(
        CurrencyXrateFactory.build(
            amount=rec1_amount,
            currency="PLN",
            price=testing_rate,
            final_amount=testing_rate * rec1_amount,
        ))
    records.append(
        CurrencyXrateFactory.build(
            amount=rec2_amount,
            currency="EUR",
            price=testing_rate,
            final_amount=testing_rate * rec2_amount,
        ))
    assert redis.RedisInterface().get_all() == []
    redis.RedisInterface().save(records[0])
    redis.RedisInterface().save(records[1])
    assert len(redis.RedisInterface().get_all()) == 2
    return list(reversed(records))
コード例 #6
0
    def grab_and_save(self, amount, currency):
        from app.core.interfaces import my_sql, redis
        from app.core.models.currency_x_rate import CurrencyXrate

        logger.info(f"received amonut {amount} for{currency} currency")
        oxr = OpenXRateProvider()
        url, params = oxr.get_auth_latest_xrates_request()
        x_rates = self._make_request(url, params)

        if x_rates:
            xrate = oxr.parse_latest_xrates_response(x_rates, currency)
            dto = AmountPriceCalculator().Request(amount=amount, price=xrate)
            final_amount = AmountPriceCalculator().calculate_final_amount(dto)
            x_rate = CurrencyXrate(currency=currency,
                                   amount=amount,
                                   final_amount=final_amount,
                                   price=xrate)
            my_sql.MySqlInterface().save(x_rate)
            redis.RedisInterface().save(x_rate)
            logger.info(f"Succesfully grabbed and saved results for {amount} "
                        f"{currency} with final cost: {final_amount} USD")
コード例 #7
0
ファイル: test_redis.py プロジェクト: doko123/xrates_ledger
def test_get_all(extra_records):
    records = redis.RedisInterface().get_all()
    assert len(set([r[0] for r in records])) == len(records)
    assert len(records) == len(extra_records)