コード例 #1
0
def test_can_edit_versions_in_statement(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    data = {
        'previous_balance_id': 0,
        'start_date': '2020-01-01',
        'end_date': '2020-01-31'
    }
    json_data = json.dumps(data)
    response = test_client.post('/statements/generate', data=json_data)
    response = test_client.post('/statements/1/generate-summary',
                                data=json_data)
    response = test_client.get('/statements/1/versions')
    assert response.status_code == 200
    versions = json.loads(response.data)['versions']
    assert len(versions) == 2

    metadata = MetaData(db.engine)
    metadata.reflect()
    table = metadata.tables.get('statement_2020_01_01_2020_01_31')
    res = db.session.query(table).all()
    assert len(res) == 2
    """ Send list of versions to delete to route. """
    data = {'versions': ['1']}
    json_data = json.dumps(data)
    response = test_client.delete('/statements/1/versions', data=json_data)
    assert response.status_code == 200

    res = db.session.query(table).all()
    assert len(res) == 1
コード例 #2
0
def test_opening_balance_import(test_client, db):
    import_catalog(test_client, db, CASE)
    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200
    """ Check table created """
    metadata = MetaData(db.engine)
    metadata.reflect()
    table = metadata.tables.get('opening_balance')

    assert len(db.session.query(table).all()) == 1
    assert db.session.query(table).all()[0].artist_id == 1

    assert json.loads(response.data) == {'success': 'true'}
    """ Check table was added to Statement Generated """
    res = db.session.query(StatementGenerated).one()
    assert res.statement_balance_table == 'opening_balance'

    data = {
        'previous_balance_id': 1,
        'start_date': '2020-01-01',
        'end_date': '2020-01-31'
    }
    json_data = json.dumps(data)
    response = test_client.post('/statements/generate', data=json_data)
    assert response.status_code == 200
    res = db.session.query(StatementGenerated).all()[1]
    assert res.previous_balance_id == 1
コード例 #3
0
def test_opening_balance_fix_import_errors(test_client, db):
    import_catalog(test_client, db, CASE)
    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance_errors.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200

    metadata = MetaData(db.engine)
    metadata.reflect()
    table = metadata.tables.get('opening_balance')

    assert len(db.session.query(table).all()) == 2
    id = db.session.query(table).filter(
        table.c.artist_name == 'Bondhead').first().id
    assert db.session.query(table).filter(
        table.c.id == id).first().artist_id == None
    """ Fix error."""
    data = {'id': 2, 'artist_id': '1'}
    json_data = json.dumps(data)
    response = test_client.post('/statements/opening-balance-errors',
                                data=json_data)
    assert response.status_code == 200

    assert db.session.query(table).filter(
        table.c.id == id).first().artist_id == 1
コード例 #4
0
def test_opening_balance_import_second_import(test_client, db):
    import_catalog(test_client, db, CASE)
    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200

    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200
コード例 #5
0
def test_statement_with_data_with_previous_balance(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)

    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200
    data = {
        'previous_balance_id': 1,
        'start_date': '2020-01-01',
        'end_date': '2020-01-31'
    }
    json_data = json.dumps(data)
    response = test_client.post('/statements/generate', data=json_data)
    assert response.status_code == 200
    res = db.session.query(StatementGenerated).all()[1]
    assert res.previous_balance_id == 1
    assert res.id == 2

    response = test_client.post('/statements/2/generate-summary')
    assert response.status_code == 200

    response = test_client.get('/statements/2')
    assert json.loads(response.data) == {
        'summary': {
            'statement_total': 150.0,
            'previous_balance': 'opening_balance',
            'previous_balance_id': 1,
            'statement': 'statement_2020_01_01_2020_01_31',
        },
        'detail': [{
            'id': 1,
            'artist_name': 'Bonehead',
            'balance_forward': 150.0,
            'split': 50.0,
            'total_advance': 0.0,
            'total_previous_balance': 100.0,
            'total_recoupable': 0.0,
            'total_sales': 100.0,
            'total_to_split': 100.0
        }],
    }
コード例 #6
0
def test_can_list_generated_statements(test_client, db):
    """ Check empty list of statements. """
    response = test_client.get('/statements')
    assert response.status_code == 200
    assert json.loads(response.data) == []
    """ Check list with generated statement. """
    data = {
        'previous_balance_id': 0,
        'start_date': '2020-01-01',
        'end_date': '2020-01-31'
    }
    json_data = json.dumps(data)
    response = test_client.post('/statements/generate', data=json_data)
    assert response.status_code == 200
    response = test_client.get('/statements')
    assert json.loads(response.data) == [{
        'id':
        1,
        'statement_detail_table':
        'statement_2020_01_01_2020_01_31',
        'statement_summary_table':
        'statement_summary_2020_01_01_2020_01_31'
    }]
    """ Add opening balance statement, verify opening doesn't show up """
    import_catalog(test_client, db, CASE)
    path = os.getcwd() + f'/tests/api/{CASE}/opening_balance.csv'
    f = open(path, 'rb')
    data = {'CSV': f}
    response = test_client.post('/statements/import-opening-balance',
                                data=data)
    assert response.status_code == 200
    response = test_client.get('/statements')
    assert json.loads(response.data) == [{
        'id':
        1,
        'statement_detail_table':
        'statement_2020_01_01_2020_01_31',
        'statement_summary_table':
        'statement_summary_2020_01_01_2020_01_31'
    }]
コード例 #7
0
def test_refund_partial(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    sel = db.session.query(IncomePending).filter(IncomePending.description == 'PARTIAL REFUND').subquery()
    assert len(db.session.query(sel).all()) == 2
    assert db.session.query(func.sum(sel.c.amount)).first()[0] == Decimal('10.13')
コード例 #8
0
def test_refund_one_album_physical(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    sel = db.session.query(IncomePending).filter(IncomePending.description == 'REFUND 1 ALBUM PHY').subquery()
    assert len(db.session.query(sel).all()) == 2
    assert db.session.query(func.sum(sel.c.amount)).first()[0] == Decimal('0')
コード例 #9
0
def test_refund_multiple_items(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    sel = db.session.query(IncomePending).filter(IncomePending.description == 'REFUND MULT ALBUMS').subquery()
    assert len(db.session.query(sel).all()) == 4
    assert db.session.query(func.sum(sel.c.amount)).first()[0] == Decimal('0')
コード例 #10
0
def test_reversal_errors(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    sel = db.session.query(IncomePending).filter(IncomePending.description == 'REVERSAL').subquery()
    assert len(db.session.query(sel).all()) == 10
    assert db.session.query(func.sum(sel.c.amount)).first()[0] == Decimal('0')
コード例 #11
0
def test_statement_with_data_no_previous_balance(test_client, db):
    import_catalog(test_client, db, CASE)
    import_bandcamp_sales(test_client, db, CASE)
    assert len(db.session.query(IncomeTotal).all()) > 0

    data = {
        'previous_balance_id': 0,
        'start_date': '2020-01-01',
        'end_date': '2020-01-31'
    }
    json_data = json.dumps(data)
    response = test_client.post('/statements/generate', data=json_data)
    assert response.status_code == 200
    response = test_client.post('/statements/1/generate-summary',
                                data=json_data)
    assert response.status_code == 200
    assert db.session.query(StatementGenerated).one().id == 1
    response = test_client.get('/statements/1')
    assert json.loads(response.data) == {
        'summary': {
            'statement_total': 50.0,
            'previous_balance': 'statement_balance_none',
            'previous_balance_id': 0,
            'statement': 'statement_2020_01_01_2020_01_31',
        },
        'detail': [{
            'id': 1,
            'artist_name': 'Bonehead',
            'balance_forward': 50.0,
            'split': 50.0,
            'total_advance': 0.0,
            'total_previous_balance': 0.0,
            'total_recoupable': 0.0,
            'total_sales': 100.0,
            'total_to_split': 100.0
        }],
    }

    response = test_client.get('/statements/1/versions')
    assert response.status_code == 200

    versions = json.loads(response.data)['versions']
    assert len(versions) == 2
    """Get artist statement info"""
    response = test_client.get('/statements/1/artist/1', data=json_data)
    assert response.status_code == 200
    assert json.loads(response.data) == {
        'artist':
        'Bonehead',
        'statement':
        'statement_2020_01_01_2020_01_31',
        'summary': [{
            'balance_forward': 50.0,
            'previous_balance': 0.0,
            'sales': 100.0,
            'split': 50.0,
            'advances': 0.0,
            'recoupables': 0.0,
            'total_to_split': 100.0
        }],
        'income': [
            {
                'catalog_name': 'Amazing',
                'combined_net': 100.0,
                'digital_net': 0,
                'physical_net': 100.0,
            },
        ],
        'expense': [],
        'advance': [],
        'album_sales': [
            {
                'catalog_name': 'Amazing',
                'version_number': 'TEST-01cass',
                'format': 'cass',
                'quantity': 1,
                'net': 50.0,
            },
            {
                'catalog_name': 'Amazing',
                'version_number': 'TEST-01lp',
                'format': 'lp',
                'quantity': 1,
                'net': 50.0,
            },
        ],
        'track_sales': [],
    }