public MessagesController ( IMessageLinkBuilder linkBuilder, ActionExecutor actionExecutor, ListMessagesQuery listMessagesQuery, GetMessageQuery getMessageQuery, CreateMessageCommand createMessageCommand, UpdateMessageCommand updateMessageCommand, DeleteMessageCommand deleteMessageCommand ) { _linkBuilder = linkBuilder ?? throw new ArgumentNullException(nameof(linkBuilder)); _actionExecutor = actionExecutor ?? throw new ArgumentNullException(nameof(actionExecutor)); _listMessagesQuery = listMessagesQuery ?? throw new ArgumentNullException(nameof(listMessagesQuery)); _getMessageQuery = getMessageQuery ?? throw new ArgumentNullException(nameof(getMessageQuery)); _deleteMessageCommand = deleteMessageCommand ?? throw new ArgumentNullException(nameof(deleteMessageCommand)); _createMessageCommand = createMessageCommand ?? throw new ArgumentNullException(nameof(createMessageCommand)); _updateMessageCommand = updateMessageCommand ?? throw new ArgumentNullException(nameof(updateMessageCommand)); }
public void Setup() { _linkBuilder = Substitute.For <IMessageLinkBuilder>(); // simulate link building to verify that the correct arguments are passed to the link builder _linkBuilder .BuildGetMessageLinkFor(Arg.Any <Guid>()) .Returns(x => { var id = x.Arg <Guid>(); return($"{id}"); }); _linkBuilder .BuildListMessagesLinkFor(Arg.Any <IPaginationInstruction>()) .Returns(x => { var instruction = x.Arg <IPaginationInstruction>(); return($"{instruction.Limit},{instruction.Offset},{instruction.Sort}"); }); // var cqrsLogger = Substitute.For <ILogger <IMessageBoard> >(); var executorLogger = Substitute.For <ILogger <ActionExecutor> >(); _state = new MessageBoardState(); var claims = new[] { new Claim(ClaimTypes.NameIdentifier, "Niklas"), new Claim(ClaimTypes.Name, "Niklas") }; var user = new ClaimsPrincipal(new ClaimsIdentity(claims, MessageBoardConstants.AuthenticationScheme)); _clock = new FakeClock(Instant.FromUtc(2020, 1, 1, 0, 0)); _controller = new MessagesController ( _linkBuilder, new ActionExecutor(executorLogger), new ListMessagesQuery(_state, new MessagePaginator()), new GetMessageQuery(_state), new CreateMessageCommand(_clock, cqrsLogger, _state), new UpdateMessageCommand(_clock, cqrsLogger, _state), new DeleteMessageCommand(cqrsLogger, _state) ) { ControllerContext = new ControllerContext { HttpContext = new DefaultHttpContext { User = user } } }; }
public static string BuildListMessagesLinkHeaderFor ( this IMessageLinkBuilder linkBuilder, IPagination pagination ) { string sort = pagination.Sort; int limit = pagination.Limit; int offset = pagination.Offset; int total = pagination.TotalCount; int first = 0; int last = (total - 1) / limit * limit; int next = offset + limit; int prev = offset - limit; var links = from page in new (int Offset, string Rel)[]