Fake edit level for tests and SQL backend.

These are cases where we don't want to commit, either because it would be circular (the backend is loading; committing the result back would at best waste time) or because we're testing some narrow functionality.
This commit is contained in:
John Ralls 2013-11-10 13:31:00 -08:00
parent 4d511218a5
commit 44ca77766a
15 changed files with 90 additions and 7 deletions

View File

@ -294,12 +294,14 @@ load_all_accounts( GncSqlBackend* be )
{
acct_balances_t* balances = (acct_balances_t*)bal->data;
qof_instance_increase_editlevel (balances->acct);
g_object_set( balances->acct,
"start-balance", &balances->balance,
"start-cleared-balance", &balances->cleared_balance,
"start-reconciled-balance", &balances->reconciled_balance,
NULL);
qof_instance_decrease_editlevel (balances->acct);
}
if ( bal_slist != NULL )
{
@ -418,7 +420,9 @@ load_account_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, account, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -115,7 +115,9 @@ load_address( const GncSqlBackend* be, GncSqlRow* row,
}
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, addr, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -1206,7 +1206,11 @@ const GncSqlColumnTableEntry* table_row )
s = g_value_get_string( val );
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, s, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1310,7 +1314,11 @@ load_int( const GncSqlBackend* be, GncSqlRow* row,
}
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1408,7 +1416,11 @@ load_boolean( const GncSqlBackend* be, GncSqlRow* row,
}
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, int_value, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1501,7 +1513,11 @@ load_int64( const GncSqlBackend* be, GncSqlRow* row,
}
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, i64_value, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1608,7 +1624,11 @@ load_double( const GncSqlBackend* be, GncSqlRow* row,
}
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, d_value, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1707,7 +1727,11 @@ load_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, pGuid, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -1914,7 +1938,11 @@ load_timespec( const GncSqlBackend* be, GncSqlRow* row,
{
if (table_row->gobj_param_name != NULL)
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, &ts, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_decrease_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -2016,7 +2044,11 @@ load_date( const GncSqlBackend* be, GncSqlRow* row,
g_date_time_unref (gdt);
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, date, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -2050,7 +2082,12 @@ load_date( const GncSqlBackend* be, GncSqlRow* row,
date = g_date_new_dmy( day, month, year );
if ( table_row->gobj_param_name != NULL )
{
g_object_set( pObject, table_row->gobj_param_name, date, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set (pObject, table_row->gobj_param_name,
date, NULL);
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
}
else
{
@ -2189,7 +2226,11 @@ load_numeric( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
g_object_set( pObject, table_row->gobj_param_name, &n, NULL );
if (QOF_IS_INSTANCE (pObject))
qof_instance_increase_editlevel (QOF_INSTANCE (pObject));
}
else
{

View File

@ -363,7 +363,9 @@ load_billterm_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, term, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -500,7 +500,9 @@ load_budget_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, budget, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -283,7 +283,9 @@ load_commodity_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, commodity, NULL );
qof_instance_decrease_editlevel (pObject);
}
else if ( setter != NULL )
{

View File

@ -303,7 +303,9 @@ load_invoice_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, invoice, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -235,7 +235,9 @@ load_lot_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, lot, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -220,7 +220,9 @@ load_order_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, order, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -156,7 +156,9 @@ load_owner( const GncSqlBackend* be, GncSqlRow* row,
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, &owner, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -523,7 +523,9 @@ load_taxtable_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, taxtable, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -393,6 +393,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt )
"end-reconciled-balance", &pnew_end_r_bal,
NULL );
qof_instance_increase_editlevel (balns-acc);
if ( !gnc_numeric_eq( *pnew_end_bal, balns->end_bal ) )
{
adj = gnc_numeric_sub( balns->end_bal, *pnew_end_bal,
@ -400,6 +401,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt )
balns->start_bal = gnc_numeric_add( balns->start_bal, adj,
GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD );
g_object_set( balns->acc, "start-balance", &balns->start_bal, NULL );
qof_instance_decrease_editlevel (balns-acc);
}
if ( !gnc_numeric_eq( *pnew_end_c_bal, balns->end_cleared_bal ) )
{
@ -417,6 +419,7 @@ query_transactions( GncSqlBackend* be, GncSqlStatement* stmt )
GNC_DENOM_AUTO, GNC_HOW_DENOM_LCD );
g_object_set( balns->acc, "start-reconciled-balance", &balns->start_reconciled_bal, NULL );
}
qof_instance_decrease_editlevel (balns-acc);
xaccAccountRecomputeBalance( balns->acc );
g_free( pnew_end_bal );
g_free( pnew_end_c_bal );
@ -1429,7 +1432,9 @@ load_tx_guid( const GncSqlBackend* be, GncSqlRow* row,
{
if ( table_row->gobj_param_name != NULL )
{
qof_instance_increase_editlevel (pObject);
g_object_set( pObject, table_row->gobj_param_name, tx, NULL );
qof_instance_decrease_editlevel (pObject);
}
else
{

View File

@ -33,6 +33,7 @@
#include "cashobjects.h"
#include "test-stuff.h"
#include "test-engine-stuff.h"
#include <qofinstance-p.h>
static void
run_test (void)
@ -61,7 +62,9 @@ run_test (void)
/*****/
five = gnc_numeric_create(5, 1);
qof_instance_increase_editlevel (acc);
g_object_set(acc, "start-balance", &five, NULL);
qof_instance_decrease_editlevel (acc);
xaccAccountRecomputeBalance(acc);
g_object_get(acc, "start-balance", &start, "end-balance", &end, NULL);
end2 = xaccAccountGetBalance(acc);

View File

@ -445,11 +445,11 @@ test_gnc_account_name_violations_errmsg ()
message = gnc_account_name_violations_errmsg (separator, nonames);
g_assert (message == NULL);
validation_message = g_strdup_printf (
"The separator character \"%s\" is used in one or more account "
"names.\n\nThis will result in unexpected behaviour. "
"Either change the account names or choose another separator "
"character.\n\nBelow you will find the list of invalid account names:\n"
"%s", separator, account_list);
"The separator character \"%s\" is used in one or more account "
"names.\n\nThis will result in unexpected behaviour. "
"Either change the account names or choose another separator "
"character.\n\nBelow you will find the list of invalid account names:\n"
"%s", separator, account_list);
message = gnc_account_name_violations_errmsg (separator, badnames);
g_assert_cmpstr ( message, == , validation_message);
g_free (validation_message);
@ -1357,6 +1357,8 @@ test_xaccAccountOrder ( )
g_assert (xaccAccountOrder (ab, aa) == 1);
ab = xaccMallocAccount (book);
qof_instance_increase_editlevel (aa);
qof_instance_increase_editlevel (ab);
g_object_set (G_OBJECT (aa),
"code", "3333",
"type", ACCT_TYPE_ASSET,
@ -1399,6 +1401,8 @@ test_xaccAccountOrder ( )
"name", "bar",
NULL);
g_assert_cmpint (xaccAccountOrder (aa, ab), < , 0);
qof_instance_decrease_editlevel (aa);
qof_instance_decrease_editlevel (ab);
xaccAccountBeginEdit (aa);
xaccAccountDestroy (aa);
@ -2158,7 +2162,9 @@ test_xaccAccountType_Stuff (void)
g_assert_cmpstr (typestr_uc, == , typename);
g_free (typestr_uc);
qof_instance_increase_editlevel (acc);
g_object_set (acc, "type", type, NULL);
qof_instance_decrease_editlevel (acc);
if (type == ACCT_TYPE_STOCK || type == ACCT_TYPE_MUTUAL ||
type == ACCT_TYPE_CURRENCY)
g_assert (xaccAccountIsPriced (acc));
@ -2402,11 +2408,13 @@ test_gnc_account_merge_children (Fixture *fixture, gconstpointer pData)
*/
sig4 = test_signal_new (QOF_INSTANCE (div), QOF_EVENT_MODIFY, NULL);
sig5 = test_signal_new (QOF_INSTANCE (div1), QOF_EVENT_MODIFY, NULL);
qof_instance_increase_editlevel (div1);
g_object_set (div1, "name", "div", NULL);
qof_instance_decrease_editlevel (div1);
gnc_account_merge_children (taxable);
g_assert_cmpint (gnc_account_n_descendants (taxable), == , taxable_desc - 1);
test_signal_assert_hits (sig4, 1);
test_signal_assert_hits (sig5, 4);
test_signal_assert_hits (sig5, 3);
test_signal_free (sig4);
test_signal_free (sig5);
gnc_account_merge_children (expense);

View File

@ -458,9 +458,11 @@ test_xaccSplitEqual (Fixture *fixture, gconstpointer pData)
split1->parent = fixture->split->parent;
g_assert (xaccSplitEqual (fixture->split, split1, FALSE, TRUE, TRUE) == TRUE);
/* Now set the GUIDs equal and see that the comparison passes */
qof_instance_increase_editlevel (split1->parent);
g_object_set (G_OBJECT (split1),
"guid", qof_instance_get_guid (QOF_INSTANCE(fixture->split)),
NULL);
qof_instance_increase_editlevel (split1->parent);
g_assert (xaccSplitEqual (fixture->split, split1, TRUE, TRUE, TRUE) == TRUE);
g_assert_cmpint (checkA.hits, ==, 3);
g_assert_cmpint (checkB.hits, ==, 1);
@ -597,10 +599,12 @@ test_xaccSplitCommitEdit (Fixture *fixture, gconstpointer pData)
g_assert_cmpint (checkB.hits, ==, 2);
qof_instance_mark_clean (QOF_INSTANCE (fixture->split->parent));
qof_instance_increase_editlevel (fixture->split->acc);
g_object_set (fixture->split->acc,
"sort-dirty", FALSE,
"balance-dirty", FALSE,
NULL);
qof_instance_decrease_editlevel (fixture->split->acc);
qof_instance_set_dirty (QOF_INSTANCE (fixture->split));
xaccSplitCommitEdit (fixture->split);