public void RegisterCustomer_CustomerRegistered()
        {
            IEventStorage eventStorage = new InMemoryEventStorage();
            var           repository   = new Repository <Customer.State>(eventStorage);
            var           useCases     = new CustomerUseCases(repository);

            var stories = Stories.OfUseCases(useCases);

            var customerId  = Guid.NewGuid().ToString();
            var firstName   = "Mohsen";
            var lastName    = "Bazmi";
            var address     = "Customer Address";
            var phoneNumber = "09100000000";
            var command     = new RegisterCustomer(customerId
                                                   , firstName
                                                   , lastName
                                                   , address
                                                   , phoneNumber);
            var expectedEvents = new IDomainEvent[]
            {
                new CustomerRegistered(customerId, firstName, lastName, address, phoneNumber)
            };

//            var envelopedCommand = new CommandEnvelope(MessageChainInfo.Init(), command);
            stories.Tell(command);

            var events = eventStorage
                         .ReadEvents(new Customer.State(customerId).StreamNameForId(customerId))
                         .Result
                         .Select(e => e.Body);

            Assert.Equal(events, expectedEvents);
        }
        public void ReadsTheAppendedEvents(string streamName, int version)
        {
            var sut = new InMemoryEventStorage();

            var expectedEvents = CreateManyUntypedEventEnvelopes(10);


            sut.AppendEvents(streamName, version, expectedEvents);

            var actualEvents = sut.ReadEvents(streamName).Result;

            Assert.Equal(expectedEvents, actualEvents);
        }
        public void DoesNotThrowStreamNotFoundException(string writeStreamName, string readStreamName)
        {
            var sut            = new InMemoryEventStorage();
            var expectedEvents = CreateManyUntypedEventEnvelopes(10);

            sut.AppendEvents(writeStreamName
                             , 1
                             , expectedEvents);

            var actualEvents = sut.ReadEvents(readStreamName).Result;

            Assert.Equal(expectedEvents, actualEvents);
//            Assert.ThrowsAsync<InMemoryEventStorage.StreamNotFoundException>(() =>
//                sut.ReadEvents(readStreamName));
        }