Beispiel #1
0
        public async Task should_delete_time_entry()
        {
            // GIVEN
            await _sandbox.Scenario !.UserProfile.WithProfile();
            var existingId = await _sandbox.Scenario.TimeEntry.With("2019/01/01", TimeEntryType.In);

            _sandbox.ClearMediator();

            var command = new DeleteTimeEntries(new[] { existingId });

            // WHEN
            await _sandbox.Mediator !.Send(command);

            // THEN
            _sandbox.Should !.Mediator !.Be("DeleteTimeEntry -> TimeEntryDeleted");

            await _sandbox.Should !.Redis !.NotExists.Set("time-entry", existingId);
            await _sandbox.Should !.Redis !.NotExists.SortedSet("time-entry", "by-when");
        }
Beispiel #2
0
        public async Task <ImmutableList <Guid> > Handle(DeleteTimeEntries request, CancellationToken cancellationToken)
        {
            foreach (var id in request.Ids)
            {
                var toDeleteEntry = await _writeRepository.GetOrDefault <Domain.TimeEntry>(id.ToString());

                if (toDeleteEntry == null)
                {
                    throw new NotFoundItemException();
                }

                toDeleteEntry.Delete();

                var events = await _writeRepository.Save(WriteRepository.DefaultKeyTaker, toDeleteEntry);

                foreach (var evt in events)
                {
                    await _mediator.Publish(evt, cancellationToken);
                }
            }

            return(request.Ids);
        }