public async Task <ImmutableList <Guid> > Handle(CreateTimeEntries request, CancellationToken cancellationToken) { var user = _authProvider.GetUser(); var timeEntries = request.Entries.Select(model => Domain.TimeEntry.Create(model.ToEventDto(user))) .ToArray(); var events = await _writeRepository.Save(WriteRepository.DefaultKeyTaker, timeEntries); foreach (var evt in events) { await _mediator.Publish(evt, cancellationToken); } return(timeEntries.Select(te => te.Id).ToImmutableList()); }
public async Task should_not_allow_to_track_with_invalid_type() { // GIVEN var command = new CreateTimeEntries(new TimeEntryModel(DateTimeOffset.UtcNow, 0, Guid.NewGuid(), Guid.NewGuid())); // WHEN Func <Task> action = async() => await _sandbox.Mediator !.Send(command); // THEN await action.Should().ThrowAsync <ValidationException>(); _sandbox.Should !.Mediator !.Be("CreateTimeEntry"); }
public async Task should_create_time_entry() { // GIVEN var command = new CreateTimeEntries(new TimeEntryModel(DateTimeOffset.UtcNow, (int)TimeEntryType.In, UserProfileScenarioBuilder.Job1)); // WHEN var ids = await _sandbox.Mediator !.Send(command); // THEN _sandbox.Should !.Mediator !.Be("CreateTimeEntry -> TimeEntryAdded"); // TODO: check if event store has event // await _sandbox.Should!.Cassandra.Exists(id); await _sandbox.Should !.Redis !.Exists.Set("time-entry", ids.First()); await _sandbox.Should !.Redis !.Exists.SortedSet("time-entry", "by-when", 1); }