public void AzureEventStore_Deserializes_Events() { var id = Guid.NewGuid(); var events = new List<EventStream> { new EventStream(id, 2) { EventData = Resources.JsonSerializedDebitEvent, SequenceEnd = 2 }, new EventStream(id, 1) { EventData = Resources.JsonSerializedNewAccountEvent, SequenceEnd = 1 } }; var database = new Mock<IAzureStorageRepository>(); database.Setup(db => db.GetEventStream(It.IsAny<Guid>(), It.IsAny<long>())).Returns(events); var store = new AzureTableEventStore { GetRepository = () => database.Object }; var eventStream = store.GetEvents(id, 1).ToList(); Assert.AreEqual(2, eventStream.Count()); Assert.AreEqual(1, eventStream[0].Sequence); Assert.AreEqual(2, eventStream[1].Sequence); Assert.IsInstanceOf<AccountCreatedEvent>(eventStream[0]); Assert.IsInstanceOf<AccountDebitedEvent>(eventStream[1]); }
public void AzureEventStore_Deserializes_Events() { var id = Guid.NewGuid(); var events = new List <EventStream> { new EventStream(id, 2) { EventData = Resources.JsonSerializedDebitEvent, SequenceEnd = 2 }, new EventStream(id, 1) { EventData = Resources.JsonSerializedNewAccountEvent, SequenceEnd = 1 } }; var database = new Mock <IAzureStorageRepository>(); database.Setup(db => db.GetEventStream(It.IsAny <Guid>(), It.IsAny <long>())).Returns(events); var store = new AzureTableEventStore { GetRepository = () => database.Object }; var eventStream = store.GetEvents(id, 1).ToList(); Assert.AreEqual(2, eventStream.Count()); Assert.AreEqual(1, eventStream[0].Sequence); Assert.AreEqual(2, eventStream[1].Sequence); Assert.IsInstanceOf <AccountCreatedEvent>(eventStream[0]); Assert.IsInstanceOf <AccountDebitedEvent>(eventStream[1]); }
/// <summary> /// Validates deployment Id, in case it is needed /// </summary> /// <param name="credentials">Azure/Mds Table credentials</param> /// <param name="tableNamePrefix">Table name prefix</param> /// <param name="providedId">Caller provided deployment Id</param> /// <param name="validatedId">Validated deployment Id</param> private static void ValidateDeploymentId( IStorageConnection credentials, string tableNamePrefix, string providedId, out string validatedId) { validatedId = null; string deploymentIdTableName = tableNamePrefix + DeploymentTableName; bool deploymentTableHasEntities; bool deploymentTableExists = credentials.ValidateTable(deploymentIdTableName, out deploymentTableHasEntities); if (!deploymentTableExists || !deploymentTableHasEntities) { return; } var throwAway = new AzureTableEventStore(credentials, tableNamePrefix, providedId); var deployments = throwAway.GetDeploymentList(); var ids = deployments.Select(x => x.DeploymentId).ToList(); if (providedId != null) { if (providedId.Length < MinimumLengthToProvide) { throw new InvalidOperationException( string.Format( StringResources.EventStoreError_DeploymentIdNotLongEnough, MinimumLengthToProvide)); } validatedId = ids.Find(providedId.StartsWith); if (string.IsNullOrEmpty(validatedId)) { throw new InvalidOperationException(StringResources.EventStoreError_DeploymentIdDoesNotMatch); } } else { if (ids.Count > 1) { throw new InvalidOperationException(StringResources.EventStoreError_AmbiguousDeploymentId); } validatedId = ids.First(); } }
/// <summary> /// Initializes a new instance of the <see cref="BaseTest"/> class. /// </summary> public BaseTest() { JsonConvert.DefaultSettings = CqrsSettings.JsonConfig; BusMock = new Mock <IEventBus>(); var cfg = new TestsConfiguration(); Store = new AzureTableEventStore(cfg.StorageAccount.ConnectionString); var account = CloudStorageAccount.Parse(cfg.StorageAccount.ConnectionString); var tableClient = account.CreateCloudTableClient(); AggregateTable = tableClient.GetTableReference("AggregateStore"); EventTable = tableClient.GetTableReference(nameof(EventStore)); }
public void AzureEventStore_Serialized_Events() { var database = new Mock<IAzureStorageRepository>(); database.Setup(db => db.InsertEvents(It.IsAny<EventStream>())); var store = new AzureTableEventStore { GetRepository = () => database.Object }; var events = new List<DomainEvent> { new AccountCreatedEvent(Guid.NewGuid(), 100), new AccountDebitedEvent(Guid.NewGuid(), 50) }; store.Insert(Guid.NewGuid(), events); database.Verify(db => db.InsertEvents(It.IsAny<EventStream>()), Times.Once); }
public void AzureEventStore_Serialized_Events() { var database = new Mock <IAzureStorageRepository>(); database.Setup(db => db.InsertEvents(It.IsAny <EventStream>())); var store = new AzureTableEventStore { GetRepository = () => database.Object }; var events = new List <DomainEvent> { new AccountCreatedEvent(Guid.NewGuid(), 100), new AccountDebitedEvent(Guid.NewGuid(), 50) }; store.Insert(Guid.NewGuid(), events); database.Verify(db => db.InsertEvents(It.IsAny <EventStream>()), Times.Once); }