public void Check_DomainEvents_ProjectAdded_Raise()
        {
            //given

            //existing project
            var project = Project.From(EntityId.From(1u), Description.From("descriptionText"));

            var taskOptionsBuilder = new DbContextOptionsBuilder <ActivityDbContext>();

            taskOptionsBuilder.UseSqlite("Data Source=todoagility_projectAdded_test.db;");
            var taskDbContext = new ActivityDbContext(taskOptionsBuilder.Options);
            var repTask       = new ActivityRepository(taskDbContext);

            using var taskDbSession = new DbSession <IActivityRepository>(taskDbContext, repTask);

            var handlerActivityAdded = new ProjectAddedHandler(taskDbSession);
            var dispatcher           = new DomainEventDispatcher();

            dispatcher.Subscribe(typeof(ProjectAddedEvent).FullName, handlerActivityAdded);

            //when
            dispatcher.Publish(ProjectAddedEvent.For(project));

            //then
            var projectId = EntityId.From(1u);
            var proj      = repTask.GetProject(projectId);

            Assert.NotNull(proj);
        }
Example #2
0
        private ProjectAggregationRoot(Project project)
        {
            if (project.ValidationResults.IsValid)
            {
                Apply(project);

                if (project.IsNew())
                {
                    Raise(ProjectAddedEvent.For(project));
                }
            }

            ValidationResults = project.ValidationResults;
        }
Example #3
0
        //---------------------------------------------------------------------
        // Service event handlers.
        //---------------------------------------------------------------------

        private async Task OnProjectAdded(ProjectAddedEvent e)
        {
            Debug.Assert(!this.InvokeRequired);

            await RefreshProject(e.ProjectId).ConfigureAwait(true);
        }
 /// <summary>
 ///     to register new aggregate as change
 /// </summary>
 /// <param name="descr"></param>
 /// <param name="entityId"></param>
 /// <param name="project"></param>
 private ProjectAggregationRoot(Description descr, EntityId entityId)
     : this(Project.From(entityId, descr))
 {
     Change(_entityRoot);
     Raise(ProjectAddedEvent.For(_entityRoot));
 }