Run commit actions in unit tests.

This commit is contained in:
akwizgran
2019-06-03 16:45:24 +01:00
parent 82a52638cf
commit 92dea21c67
4 changed files with 29 additions and 11 deletions

View File

@@ -7,7 +7,7 @@ import org.jmock.api.Invocation;
public class RunAction implements Action { public class RunAction implements Action {
@Override @Override
public Object invoke(Invocation invocation) throws Throwable { public Object invoke(Invocation invocation) {
Runnable task = (Runnable) invocation.getParameter(0); Runnable task = (Runnable) invocation.getParameter(0);
task.run(); task.run();
return null; return null;

View File

@@ -1,17 +1,18 @@
package org.briarproject.bramble.test; package org.briarproject.bramble.test;
import org.briarproject.bramble.api.db.CommitAction;
import org.briarproject.bramble.api.db.DbRunnable; import org.briarproject.bramble.api.db.DbRunnable;
import org.briarproject.bramble.api.db.TaskAction;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.hamcrest.Description; import org.hamcrest.Description;
import org.jmock.api.Action; import org.jmock.api.Action;
import org.jmock.api.Invocation; import org.jmock.api.Invocation;
public class RunTransactionAction implements Action { class RunTransactionAction implements Action {
private final Transaction txn; private final Transaction txn;
@SuppressWarnings("WeakerAccess") RunTransactionAction(Transaction txn) {
public RunTransactionAction(Transaction txn) {
this.txn = txn; this.txn = txn;
} }
@@ -19,6 +20,10 @@ public class RunTransactionAction implements Action {
public Object invoke(Invocation invocation) throws Throwable { public Object invoke(Invocation invocation) throws Throwable {
DbRunnable task = (DbRunnable) invocation.getParameter(1); DbRunnable task = (DbRunnable) invocation.getParameter(1);
task.run(txn); task.run(txn);
for (CommitAction action : txn.getActions()) {
if (action instanceof TaskAction)
((TaskAction) action).getTask().run();
}
return null; return null;
} }
@@ -26,5 +31,4 @@ public class RunTransactionAction implements Action {
public void describeTo(Description description) { public void describeTo(Description description) {
description.appendText("runs a task inside a database transaction"); description.appendText("runs a task inside a database transaction");
} }
} }

View File

@@ -1,16 +1,18 @@
package org.briarproject.bramble.test; package org.briarproject.bramble.test;
import org.briarproject.bramble.api.db.CommitAction;
import org.briarproject.bramble.api.db.NullableDbCallable; import org.briarproject.bramble.api.db.NullableDbCallable;
import org.briarproject.bramble.api.db.TaskAction;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.hamcrest.Description; import org.hamcrest.Description;
import org.jmock.api.Action; import org.jmock.api.Action;
import org.jmock.api.Invocation; import org.jmock.api.Invocation;
public class RunTransactionWithNullableResultAction implements Action { class RunTransactionWithNullableResultAction implements Action {
private final Transaction txn; private final Transaction txn;
public RunTransactionWithNullableResultAction(Transaction txn) { RunTransactionWithNullableResultAction(Transaction txn) {
this.txn = txn; this.txn = txn;
} }
@@ -18,7 +20,12 @@ public class RunTransactionWithNullableResultAction implements Action {
public Object invoke(Invocation invocation) throws Throwable { public Object invoke(Invocation invocation) throws Throwable {
NullableDbCallable task = NullableDbCallable task =
(NullableDbCallable) invocation.getParameter(1); (NullableDbCallable) invocation.getParameter(1);
return task.call(txn); Object result = task.call(txn);
for (CommitAction action : txn.getActions()) {
if (action instanceof TaskAction)
((TaskAction) action).getTask().run();
}
return result;
} }
@Override @Override

View File

@@ -1,23 +1,30 @@
package org.briarproject.bramble.test; package org.briarproject.bramble.test;
import org.briarproject.bramble.api.db.CommitAction;
import org.briarproject.bramble.api.db.DbCallable; import org.briarproject.bramble.api.db.DbCallable;
import org.briarproject.bramble.api.db.TaskAction;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.hamcrest.Description; import org.hamcrest.Description;
import org.jmock.api.Action; import org.jmock.api.Action;
import org.jmock.api.Invocation; import org.jmock.api.Invocation;
public class RunTransactionWithResultAction implements Action { class RunTransactionWithResultAction implements Action {
private final Transaction txn; private final Transaction txn;
public RunTransactionWithResultAction(Transaction txn) { RunTransactionWithResultAction(Transaction txn) {
this.txn = txn; this.txn = txn;
} }
@Override @Override
public Object invoke(Invocation invocation) throws Throwable { public Object invoke(Invocation invocation) throws Throwable {
DbCallable task = (DbCallable) invocation.getParameter(1); DbCallable task = (DbCallable) invocation.getParameter(1);
return task.call(txn); Object result = task.call(txn);
for (CommitAction action : txn.getActions()) {
if (action instanceof TaskAction)
((TaskAction) action).getTask().run();
}
return result;
} }
@Override @Override