public void TrackClick_ValidShortcut_TracksClick() { var validShortcut = "shortcut"; var linkId = 2; var link = new Link { Shortcut = validShortcut, Id = linkId }; _linkService.Setup(l => l.FindLinkByShortcut(validShortcut)).Returns(new Result <Link>(200) { Data = link }); _clickRepository.Setup(c => c.Create(It.IsAny <Click>())).Returns(true); var result = _clickService.TrackClick(validShortcut); _linkService.Verify(l => l.FindLinkByShortcut(validShortcut), Times.Exactly(2)); _clickRepository.Verify(c => c.Create(It.IsAny <Click>()), Times.Once); Assert.Equal(link, result.Data); }
public Mutations(ILinkService linkService, IClickService clickService) { Name = "Mutation"; Description = "This is where the mutations are."; Field <LinkInfoType>("createLink", arguments: new QueryArguments( new QueryArgument <StringGraphType> { Name = "url", Description = "The URL of the link." } ), description: "Create a new link", resolve: context => { var url = context.GetArgument <string>("url"); var result = linkService.CreateLink(url); if (!string.IsNullOrEmpty(result.ErrorMessage)) { context.Errors.Add(new ExecutionError(result.ErrorMessage)); return(null); } return(result.Data); }); Field <LinkType>("trackClick", arguments: new QueryArguments( new QueryArgument <StringGraphType> { Name = "shortcut", Description = "The shortcut of the link." } ), description: "Track new click of a link", resolve: context => { var shortcut = context.GetArgument <string>("shortcut"); var result = clickService.TrackClick(shortcut); if (!string.IsNullOrEmpty(result.ErrorMessage)) { context.Errors.Add(new ExecutionError(result.ErrorMessage)); return(null); } return(result.Data); }); }