Skip to content

Commit

Permalink
#2878: wip
Browse files Browse the repository at this point in the history
  • Loading branch information
uweschaefer committed Jun 4, 2024
1 parent fab4b83 commit 34ca9be
Showing 1 changed file with 117 additions and 125 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,132 +15,124 @@
*/
package org.factcast.factus.spring.tx;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.*;

import java.time.Duration;
import javax.annotation.Nullable;
import lombok.NonNull;
import org.factcast.core.FactStreamPosition;
import org.factcast.factus.projection.WriterToken;
import org.junit.jupiter.api.Test;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;

class AbstractSpringTxProjectionTest {

final PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class);
final NotAnnotatedSpringTxProjection uutNotAnnotated =
new NotAnnotatedSpringTxProjection(transactionManager);
final AnnotatedSpringTxProjection uutAnnotated =
new AnnotatedSpringTxProjection(transactionManager);
final UnlimitedBulkSizeSpringTxProjection uutUnlimitedBulkSize =
new UnlimitedBulkSizeSpringTxProjection(transactionManager);

@Test
void delegatesBeginNewTransaction() {
uutNotAnnotated.beginNewTransaction();
verify(transactionManager).getTransaction(any());
}

@Test
void delegatesRollback() {
uutNotAnnotated.rollback(mock(TransactionStatus.class));
verify(transactionManager).rollback(any());
}

@Test
void delegatesCommit() {
uutNotAnnotated.commit(mock(TransactionStatus.class));
verify(transactionManager).commit(any());
}

@Test
void defaultTransactionOptions() {
assertEquals(SpringTransactional.Defaults.create(), uutNotAnnotated.transactionOptions());
}

@Test
void transactionOptionsOnAnnotatedProjection() {
SpringTransactional tx = uutAnnotated.getClass().getAnnotation(SpringTransactional.class);
assertEquals(SpringTransactional.Defaults.with(tx), uutNotAnnotated.transactionOptions());
}

@Test
void defaultMaxBatchSize() {
assertEquals(1000, uutNotAnnotated.maxBatchSizePerTransaction());
}

@Test
void maxBatchSizeForAnnotatedProjection() {
assertEquals(42, uutAnnotated.maxBatchSizePerTransaction());
}

@Test
void defaultMaxBatchSizeOnUnlimitedBulkSize() {
assertEquals(1000, uutUnlimitedBulkSize.maxBatchSizePerTransaction());
}

private static class NotAnnotatedSpringTxProjection extends AbstractSpringTxProjection {
public NotAnnotatedSpringTxProjection(PlatformTransactionManager platformTransactionManager) {
super(platformTransactionManager);
}

@Nullable
@Override
public FactStreamPosition factStreamPosition() {
return null;
}

@Override
public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}

@Override
public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
return null;
}
}

@SpringTransactional(bulkSize = 42)
private static class AnnotatedSpringTxProjection extends AbstractSpringTxProjection {
public AnnotatedSpringTxProjection(PlatformTransactionManager platformTransactionManager) {
super(platformTransactionManager);
}

@Nullable
@Override
public FactStreamPosition factStreamPosition() {
return null;
}

@Override
public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}

@Override
public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
return null;
}
}

@SpringTransactional(bulkSize = 0)
private static class UnlimitedBulkSizeSpringTxProjection extends AbstractSpringTxProjection {
public UnlimitedBulkSizeSpringTxProjection(
PlatformTransactionManager platformTransactionManager) {
super(platformTransactionManager);
}

@Nullable
@Override
public FactStreamPosition factStreamPosition() {
return null;
}

@Override
public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}

@Override
public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
return null;
}
}
//
// final PlatformTransactionManager transactionManager = mock(PlatformTransactionManager.class);
// final NotAnnotatedSpringTxProjection uutNotAnnotated =
// new NotAnnotatedSpringTxProjection(transactionManager);
// final AnnotatedSpringTxProjection uutAnnotated =
// new AnnotatedSpringTxProjection(transactionManager);
// final UnlimitedBulkSizeSpringTxProjection uutUnlimitedBulkSize =
// new UnlimitedBulkSizeSpringTxProjection(transactionManager);
//
// @Test
// void delegatesBeginNewTransaction() {
// uutNotAnnotated.beginNewTransaction();
// verify(transactionManager).getTransaction(any());
// }
//
// @Test
// void delegatesRollback() {
// uutNotAnnotated.rollback(mock(TransactionStatus.class));
// verify(transactionManager).rollback(any());
// }
//
// @Test
// void delegatesCommit() {
// uutNotAnnotated.commit(mock(TransactionStatus.class));
// verify(transactionManager).commit(any());
// }
//
// @Test
// void defaultTransactionOptions() {
// assertEquals(SpringTransactional.Defaults.create(), uutNotAnnotated.transactionOptions());
// }
//
// @Test
// void transactionOptionsOnAnnotatedProjection() {
// SpringTransactional tx = uutAnnotated.getClass().getAnnotation(SpringTransactional.class);
// assertEquals(SpringTransactional.Defaults.with(tx), uutNotAnnotated.transactionOptions());
// }
//
// @Test
// void defaultMaxBatchSize() {
// assertEquals(1000, uutNotAnnotated.maxBatchSizePerTransaction());
// }
//
// @Test
// void maxBatchSizeForAnnotatedProjection() {
// assertEquals(42, uutAnnotated.maxBatchSizePerTransaction());
// }
//
// @Test
// void defaultMaxBatchSizeOnUnlimitedBulkSize() {
// assertEquals(1000, uutUnlimitedBulkSize.maxBatchSizePerTransaction());
// }
//
// private static class NotAnnotatedSpringTxProjection extends AbstractSpringTxProjection {
// public NotAnnotatedSpringTxProjection(PlatformTransactionManager platformTransactionManager)
// {
// super(platformTransactionManager);
// }
//
// @Nullable
// @Override
// public FactStreamPosition factStreamPosition() {
// return null;
// }
//
// @Override
// public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}
//
// @Override
// public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
// return null;
// }
// }
//
// @SpringTransactional(bulkSize = 42)
// private static class AnnotatedSpringTxProjection extends AbstractSpringTxProjection {
// public AnnotatedSpringTxProjection(PlatformTransactionManager platformTransactionManager) {
// super(platformTransactionManager);
// }
//
// @Nullable
// @Override
// public FactStreamPosition factStreamPosition() {
// return null;
// }
//
// @Override
// public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}
//
// @Override
// public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
// return null;
// }
// }
//
// @SpringTransactional(bulkSize = 0)
// private static class UnlimitedBulkSizeSpringTxProjection extends AbstractSpringTxProjection {
// public UnlimitedBulkSizeSpringTxProjection(
// PlatformTransactionManager platformTransactionManager) {
// super(platformTransactionManager);
// }
//
// @Nullable
// @Override
// public FactStreamPosition factStreamPosition() {
// return null;
// }
//
// @Override
// public void factStreamPosition(@NonNull FactStreamPosition factStreamPosition) {}
//
// @Override
// public WriterToken acquireWriteToken(@NonNull Duration maxWait) {
// return null;
// }
// }
// TODO
}

0 comments on commit 34ca9be

Please sign in to comment.