public void PersistentFSM_must_persist_snapshot() { var dummyReportActorRef = CreateTestProbe().Ref; var fsmRef = Sys.ActorOf(WebStoreCustomerFSM.Props(Name, dummyReportActorRef)); Watch(fsmRef); var shirt = new Item("1", "Shirt", 59.99F); var shoes = new Item("2", "Shoes", 89.99F); var coat = new Item("3", "Coat", 119.99F); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(shirt)); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(shoes)); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(coat)); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new Buy()); fsmRef.Tell(new GetCurrentCart()); ExpectMsg <EmptyShoppingCart>(); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes, coat); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes, coat); ExpectNoMsg(1.Seconds()); fsmRef.Tell(PoisonPill.Instance); ExpectTerminated(fsmRef); var recoveredFsmRef = Sys.ActorOf(WebStoreCustomerFSM.Props(Name, dummyReportActorRef)); recoveredFsmRef.Tell(new GetCurrentCart()); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes, coat); Watch(recoveredFsmRef); recoveredFsmRef.Tell(PoisonPill.Instance); ExpectTerminated(recoveredFsmRef); var persistentEventsStreamer = Sys.ActorOf(PersistentEventsStreamer.Props(Name, TestActor)); ExpectMsg <SnapshotOffer>(); Watch(persistentEventsStreamer); persistentEventsStreamer.Tell(PoisonPill.Instance); ExpectTerminated(persistentEventsStreamer); }
public void PersistentFSM_must_not_persist_state_change_event_when_staying_in_the_same_state() { var dummyReportActorRef = CreateTestProbe().Ref; var fsmRef = Sys.ActorOf(WebStoreCustomerFSM.Props(Name, dummyReportActorRef)); Watch(fsmRef); var shirt = new Item("1", "Shirt", 59.99F); var shoes = new Item("2", "Shoes", 89.99F); var coat = new Item("3", "Coat", 119.99F); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(shirt)); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(shoes)); fsmRef.Tell(new GetCurrentCart()); fsmRef.Tell(new AddItem(coat)); fsmRef.Tell(new GetCurrentCart()); ExpectMsg <EmptyShoppingCart>(); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes); ExpectMsg <NonEmptyShoppingCart>().Items.Should().ContainInOrder(shirt, shoes, coat); fsmRef.Tell(PoisonPill.Instance); ExpectTerminated(fsmRef); var persistentEventsStreamer = Sys.ActorOf(PersistentEventsStreamer.Props(Name, TestActor)); ExpectMsg <ItemAdded>().Item.Should().Be(shirt); ExpectMsg <PersistentFSM.StateChangeEvent>(); ExpectMsg <ItemAdded>().Item.Should().Be(shoes); ExpectMsg <PersistentFSM.StateChangeEvent>(); ExpectMsg <ItemAdded>().Item.Should().Be(coat); ExpectMsg <PersistentFSM.StateChangeEvent>(); Watch(persistentEventsStreamer); persistentEventsStreamer.Tell(PoisonPill.Instance); ExpectTerminated(persistentEventsStreamer); }