示例#1
0
def make_new_alert(form):
    """Create new alert.

    Args:
        form: AlertForm Object.
    """
    asset = form.asset.data
    cond_option = form.cond_option.data
    phone_number = form.phone_number.data
    market = form.market.data
    alert = Alert(symbol=asset,
                  condition=cond_option,
                  phone_number=phone_number,
                  market=market,
                  end_date=form.end_date.data)
    if cond_option == 1 or cond_option == 0:
        alert.price = form.price.data
    elif cond_option == 2 or cond_option == 3:
        alert.percent = form.percent.data
        # currently only supports 24 hours
        alert.percent_duration = 86400

    if current_user.is_authenticated:
        alert.user_id = current_user.id

    db.session.add(alert)
    db.session.commit()
示例#2
0
def test_invalid_number_below(capsys):
    price_tracker = price_tracker_fake("45")
    send_message = Mock()
    send_message.side_effect = (twilio.base.exceptions.TwilioRestException(
        Mock(), Mock()))
    texter = Texter()
    texter.set_clients(price_tracker, send_message)
    alert = Alert(symbol='BTC', price=100.0, condition=0, phone_number='5555')
    db.session.add(alert)
    db.session.commit()
    texter.check_alerts()
    out, err = capsys.readouterr()
    assert "Invalid number" in out
示例#3
0
def test_price_tracker_integration():
    price_tracker = PriceTracker()
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)
    alert = Alert(symbol='BTC',
                  price=100.0,
                  condition=1,
                  phone_number='555-555-5555',
                  market='coinbase')
    db.session.add(alert)
    db.session.commit()

    texter.check_alerts()
示例#4
0
def test_single_entry_no_text():
    price_tracker = price_tracker_fake("45")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)
    alert = Alert(symbol='BTC',
                  price=100.0,
                  condition=1,
                  phone_number='555-555-5555')
    db.session.add(alert)
    db.session.commit()

    texter.check_alerts()
    assert len(twilio.messages) == 0
    assert len(twilio.to) == 0
示例#5
0
def test_LTC():
    price_tracker = price_tracker_fake("45")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alerts = [
        Alert(symbol='LTC',
              price=1.0,
              condition=1,
              phone_number='555-555-5555')
    ]

    texter.text_greater_than(alerts, 3.0)
    assert len(twilio.messages) == 1
    assert 'LTC' in twilio.messages[0]
示例#6
0
def test_less_than_text():
    price_tracker = price_tracker_fake("45")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alerts = [
        Alert(symbol='BTC',
              price=50.0,
              condition=0,
              phone_number='555-555-5555')
    ]

    texter.text_less_than(alerts, 3.0)
    assert len(twilio.messages) == 1
    assert "below" in twilio.messages[0]
    assert 'BTC' in twilio.messages[0]
    assert len(twilio.to) == 1
    assert twilio.to[0] == '555-555-5555'
示例#7
0
def test_single_text_loop_below():
    price_tracker = price_tracker_fake("5")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alert = Alert(symbol='BTC',
                  price=10.0,
                  condition=0,
                  phone_number='555-555-5555')
    db.session.add(alert)
    db.session.commit()

    texter.check_alerts()
    assert len(twilio.messages) == 1
    assert len(twilio.to) == 1
    assert 'below' in twilio.messages[0]
    assert 'BTC' in twilio.messages[0]
    assert twilio.to[0] == '555-555-5555'
示例#8
0
def test_include_market_above():
    price_tracker = price_tracker_fake("5")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alert = Alert(symbol='ETH',
                  price=2,
                  condition=1,
                  phone_number='1234567890',
                  market='coinbase')
    db.session.add(alert)
    db.session.commit()

    texter.check_alerts()
    assert len(twilio.messages) == 1
    assert len(twilio.to) == 1
    assert 'above' in twilio.messages[0]
    assert 'ETH' in twilio.messages[0]
    assert twilio.to[0] == '1234567890'
示例#9
0
def test_percent_decrease_text():
    price_tracker = price_tracker_fake("45", "-5")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alerts = [
        Alert(symbol='BTC',
              percent=4.0,
              percent_duration=86400,
              condition=3,
              phone_number='555-555-5555')
    ]

    texter.text_percent_decrease(alerts, 5.0)
    assert len(twilio.messages) == 1
    assert "decreased by 5.00%" in twilio.messages[0]
    assert "24 hours" in twilio.messages[0]
    assert 'BTC' in twilio.messages[0]
    assert len(twilio.to) == 1
    assert twilio.to[0] == '555-555-5555'
示例#10
0
def test_single_text_loop_decrease():
    price_tracker = price_tracker_fake("5", "-5")
    twilio = twilio_fake()
    texter = Texter()
    texter.set_clients(price_tracker, twilio.send_message)

    alert = Alert(symbol='BTC',
                  percent=4.0,
                  percent_duration=86400,
                  condition=3,
                  phone_number='555-555-5555')
    db.session.add(alert)
    db.session.commit()

    texter.check_alerts()
    assert len(twilio.messages) == 1
    assert len(twilio.to) == 1
    assert 'decreased by' in twilio.messages[0]
    assert '24 hours' in twilio.messages[0]
    assert 'BTC' in twilio.messages[0]
    assert twilio.to[0] == '555-555-5555'