finance-watcher / test / helpers / test_helper_functions.py
test_helper_functions.py
Raw
from helpers.helper_functions import *
from unittest.mock import patch
import pytest


def test_get_amount_from_string():
    # bad string
    string = 'some-random-string'
    return_value = get_amount_from_string(string)
    assert return_value == None

    # good
    string = '166.35'
    return_value = get_amount_from_string(string)
    assert return_value == 166.35

    # no periods
    string = '50'
    return_value = get_amount_from_string(string)
    assert return_value == 50

    # too many periods
    string = '16.6.35.853'
    return_value = get_amount_from_string(string)
    assert return_value == None

    # with comma
    string = '1,293.65'
    return_value = get_amount_from_string(string)
    assert return_value == None



def test_get_date_from_string():
    # string w/out a date
    string = 'some-random-string'
    return_value = get_date_from_string(string)
    assert return_value == None

    # invalid date
    string = '2020-15-200'
    return_value = get_date_from_string(string)
    assert return_value == None

    # valid date
    string = '2024-08-06'
    return_value = get_date_from_string(string)
    assert return_value == datetime(year=2024, month=8, day=6)


def test_get_string_from_date():
    # valid date
    date = datetime(2024,12,2)
    return_value = get_string_from_date(date)
    assert return_value == '2024-12-2'


def test_create_encrypted_string():
    string = 'hello'
    return_value = create_encrypted_string(string)
    assert return_value != 'hello'
    assert return_value == '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'


def test_json_success_response():
    test_data = {}
    test_code = 200

    return_value = json_success_response(test_data)
    assert return_value == {
        'status': 'SUCCESS',
        'status_code': test_code,
        "data": test_data,
    }


@patch('flask.abort')
def test_json_error_response(mock_abort):
    test_string = 'THIS IS A TEST ERROR'
    test_code = 404

    with pytest.raises(Exception):
        json_error_response(test_string, test_code)

        mock_abort.assert_called_with(test_string, test_code)