/* * Copyright (C) 2020 Lightbend Inc. */ package jdocs.persistence.testkit; import akka.actor.testkit.typed.javadsl.TestKitJunitResource; import akka.actor.typed.ActorRef; import akka.persistence.testkit.JournalOperation; import akka.persistence.testkit.PersistenceTestKitPlugin; import akka.persistence.testkit.ProcessingPolicy; import akka.persistence.testkit.ProcessingResult; import akka.persistence.testkit.ProcessingSuccess; import akka.persistence.testkit.StorageFailure; import akka.persistence.testkit.WriteEvents; import akka.persistence.testkit.javadsl.PersistenceTestKit; import akka.persistence.typed.PersistenceId; import com.typesafe.config.ConfigFactory; import jdocs.AbstractJavaTest; import org.junit.Before; import org.junit.ClassRule; import org.junit.Test; // #policy-test public class PersistenceTestKitPolicySampleTest extends AbstractJavaTest { @ClassRule public static final TestKitJunitResource testKit = new TestKitJunitResource( PersistenceTestKitPlugin.getInstance() .config() .withFallback(ConfigFactory.defaultApplication())); PersistenceTestKit persistenceTestKit = PersistenceTestKit.create(testKit.system()); @Before public void beforeEach() { persistenceTestKit.clearAll(); persistenceTestKit.returnDefaultPolicy(); } @Test public void test() { SampleEventStoragePolicy policy = new SampleEventStoragePolicy(); persistenceTestKit.withPolicy(policy); PersistenceId persistenceId = PersistenceId.ofUniqueId("some-id"); ActorRef ref = testKit.spawn(YourPersistentBehavior.create(persistenceId)); YourPersistentBehavior.Cmd cmd = new YourPersistentBehavior.Cmd("data"); ref.tell(cmd); persistenceTestKit.expectNothingPersisted(persistenceId.id()); } static class SampleEventStoragePolicy implements ProcessingPolicy { @Override public ProcessingResult tryProcess(String persistenceId, JournalOperation processingUnit) { if (processingUnit instanceof WriteEvents) { return StorageFailure.create(); } else { return ProcessingSuccess.getInstance(); } } } } // #policy-test