public NflPlayerService(IHtmlParserProvider htmlParserProvider, IEspnHtmlTrimService espnHtmlTrimService, IUrlConfigurationProvider urlConfigurationProvider)
 {
     _cache = new Dictionary <int, string>();
     _htmlParserProvider       = htmlParserProvider;
     _espnHtmlTrimService      = espnHtmlTrimService;
     _urlConfigurationProvider = urlConfigurationProvider;
 }
        public async Task Should_GetPlayerNameForId_ForStandardInput()
        {
            //arrange
            int    playerId = 55555;
            string url      = "http://www.espn.com/nfl/player/_/id/55555";
            string xPath    = "//head/title";
            IHtmlParserProvider htmlParserProvider = A.Fake <IHtmlParserProvider>();

            A.CallTo(() => htmlParserProvider.getInnerTextForFirstXPathMatch(url, xPath)).Returns("Emmanuel Sanders Stats, News, Bio | ESPN");
            IEspnHtmlTrimService espnHtmlTrimService = A.Fake <IEspnHtmlTrimService>();

            A.CallTo(() => espnHtmlTrimService.TrimNameFromTitleTag("Emmanuel Sanders Stats, News, Bio | ESPN")).Returns("Emmanuel Sanders");
            IUrlConfigurationProvider urlConfigurationProvider = A.Fake <IUrlConfigurationProvider>();

            A.CallTo(() => urlConfigurationProvider.GetNflPlayerEndpoint(playerId)).Returns(url);
            NflPlayerService nflPlayerService = new NflPlayerService(htmlParserProvider, espnHtmlTrimService, urlConfigurationProvider);

            //act
            string playerName = await nflPlayerService.GetPlayerNameForId(55555);

            //assert
            playerName.Should().BeEquivalentTo("Emmanuel Sanders");
        }