Example #1
0
        public async Task Should_enrich_content_with_scheduled_status_color()
        {
            var content = new ContentEntity {
                SchemaId = schemaId, ScheduleJob = ScheduleJob.Build(Status.Archived, user, default)
            };

            A.CallTo(() => workflow.GetInfoAsync(content, content.ScheduleJob.Status))
            .Returns(new StatusInfo(Status.Published, StatusColors.Archived));

            await sut.EnrichAsync(requestContext, new[] { content }, null !);

            Assert.Equal(StatusColors.Archived, content.ScheduledStatusColor);
        }
Example #2
0
        public override bool ApplyEvent(IEvent @event, EnvelopeHeaders headers)
        {
            switch (@event)
            {
            case ContentCreated e:
            {
                Id = e.ContentId;

                SimpleMapper.Map(e, this);

                CurrentVersion = new ContentVersion(e.Status, e.Data);

                break;
            }

            case ContentDraftCreated e:
            {
                NewVersion = new ContentVersion(e.Status, e.MigratedData ?? CurrentVersion.Data);

                ScheduleJob = null;

                break;
            }

            case ContentDraftDeleted _:
            {
                NewVersion = null;

                ScheduleJob = null;

                break;
            }

            case ContentStatusChanged e:
            {
                ScheduleJob = null;

                if (NewVersion != null)
                {
                    if (e.Status == Status.Published)
                    {
                        CurrentVersion = new ContentVersion(e.Status, NewVersion.Data);

                        NewVersion = null;
                    }
                    else
                    {
                        NewVersion = NewVersion.WithStatus(e.Status);
                    }
                }
                else
                {
                    CurrentVersion = CurrentVersion.WithStatus(e.Status);
                }

                break;
            }

            case ContentSchedulingCancelled _:
            {
                ScheduleJob = null;

                break;
            }

            case ContentStatusScheduled e:
            {
                ScheduleJob = ScheduleJob.Build(e.Status, e.Actor, e.DueTime);

                break;
            }

            case ContentUpdated e:
            {
                if (NewVersion != null)
                {
                    NewVersion = NewVersion.WithData(e.Data);
                }
                else
                {
                    CurrentVersion = CurrentVersion.WithData(e.Data);
                }

                break;
            }

            case ContentDeleted _:
            {
                IsDeleted = true;

                break;
            }
            }

            return(true);
        }
Example #3
0
        public void ApplyEvent(IEvent @event)
        {
            switch (@event)
            {
            case ContentCreated e:
            {
                SimpleMapper.Map(e, this);

                UpdateData(null, e.Data, false);

                break;
            }

            case ContentChangesPublished _:
            {
                ScheduleJob = null;

                UpdateData(DataDraft, null, false);

                break;
            }

            case ContentStatusChanged e:
            {
                ScheduleJob = null;

                SimpleMapper.Map(e, this);

                if (e.Status == Status.Published)
                {
                    UpdateData(DataDraft, null, false);
                }

                break;
            }

            case ContentUpdated e:
            {
                UpdateData(e.Data, e.Data, false);

                break;
            }

            case ContentUpdateProposed e:
            {
                UpdateData(null, e.Data, true);

                break;
            }

            case ContentChangesDiscarded _:
            {
                UpdateData(null, Data, false);

                break;
            }

            case ContentSchedulingCancelled _:
            {
                ScheduleJob = null;

                break;
            }

            case ContentStatusScheduled e:
            {
                ScheduleJob = ScheduleJob.Build(e.Status, e.Actor, e.DueTime);

                break;
            }

            case ContentDeleted _:
            {
                IsDeleted = true;

                break;
            }
            }
        }
Example #4
0
 protected void On(ContentStatusScheduled @event)
 {
     ScheduleJob = ScheduleJob.Build(@event.Status, @event.Actor, @event.DueTime);
 }