private void OnPropertyDefinitionAdded(PropertyDefinitionAdded e)
        {
            var property = this.Definition.Properties.Single(p => p.Id == e.PropertyId);
            var value    = new ConfigurationValue(this.EventAggregator, property, null);

            this.values.Add(property.Id, value);
        }
        public async Task Handle_PropertyDefinitionAddedEvent_AddsValueToEntry()
        {
            // arrange
            var initialProject = this.CreateProject();
            var initialEntity  = initialProject.Entities.First();
            var initialEntry   = initialEntity.Entries.First();

            var message = new PropertyDefinitionAdded
            {
                Id             = initialProject.Id,
                ParentEntityId = initialEntity.Id,
                PropertyId     = Guid.NewGuid(),
                Name           = "New property name",
                Description    = "New property description",
                Version        = 2,
                TimeStamp      = DateTimeOffset.Now
            };

            var target = new ReadModelEventHandler(this.context.DbContext, this.context.Mapper);

            // act
            await target.Handle(message);

            // assert
            var values = this.context.DbContext.Values.Where(p => p.EntryId == initialEntry.Id);

            Assert.Equal(3, values.Count());

            var propertyValue = values.FirstOrDefault(v => v.PropertyId == message.PropertyId);

            Assert.NotNull(propertyValue);
            Assert.Equal(propertyValue.Value, null);
        }
        public async Task Handle_PropertyDefinitionAddedEvent_CreatesProperty()
        {
            // arrange
            var initialProject = this.CreateProject();
            var initialEntity  = initialProject.Entities.First();

            var message = new PropertyDefinitionAdded
            {
                Id             = initialProject.Id,
                ParentEntityId = initialEntity.Id,
                PropertyId     = Guid.NewGuid(),
                Name           = "New property name",
                Description    = "New property description",
                Version        = 2,
                TimeStamp      = DateTimeOffset.Now
            };

            var target = new ReadModelEventHandler(this.context.DbContext, this.context.Mapper);

            // act
            await target.Handle(message);

            // assert
            var property = this.context.DbContext.Properties.FirstOrDefault(p => p.Id == message.PropertyId);

            Assert.NotNull(property);
            Assert.Equal(message.ParentEntityId, property.EntityId);
            Assert.Equal(message.Name, property.Name);
            Assert.Equal(message.Description, property.Description);
        }
        public async Task Handle(PropertyDefinitionAdded message)
        {
            message.ArgumentNotNull(nameof(message));

            await this.AddEntityAsync <PropertyDefinitionAdded, ConfigurationProperty>(message);

            var entries           = this.dbContext.Entries.Where(e => e.EntityId == message.ParentEntityId);
            var newPropertyValues = entries.Select(entry => new ConfigurationValue
            {
                Id         = Guid.NewGuid(),
                EntryId    = entry.Id,
                PropertyId = message.PropertyId
            });

            this.dbContext.Values.AddRange(newPropertyValues);

            await this.dbContext.SaveChangesAsync();
        }
示例#5
0
        public void AddPropertyDefinition(Guid entityId, string name, string description, string propertyType)
        {
            name.ArgumentNotNullOrEmpty(nameof(name));
            description.ArgumentNotNull(nameof(description));
            propertyType.ArgumentNotNullOrEmpty(nameof(propertyType));

            // the entity gets fetched to assert its existence.
            EntityDefinition entity = this.GetEntityDefinition(entityId);

            var e = new PropertyDefinitionAdded
            {
                Id             = this.Id,
                ParentEntityId = entity.Id,
                PropertyId     = Guid.NewGuid(),
                Name           = name,
                Description    = description,
                PropertyType   = propertyType
            };

            this.ApplyChange(e);
        }
        private void OnPropertyDefinitionAdded(PropertyDefinitionAdded e)
        {
            var entity = new PropertyDefinition(this.EventAggregator, e.PropertyId, e.Name, e.Description, e.PropertyType);

            this.properties.Add(entity);
        }
示例#7
0
 private void Apply(PropertyDefinitionAdded e)
 {
     this.eventAggregator.Publish(e);
 }