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);
        }
예제 #2
0
        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);
            });
        }