public void ClearCache_Success()
        {
            // ARRANGE
            var loggerMock                  = new Mock <ILogger <RosettaStoneService> >();
            var appCacheMock                = new Mock <IAppCache>();
            var agencyMapperMock            = new Mock <IMapper <AgencyFranchiseMap> >();
            var ipAddressCaptureServiceMock = new Mock <IIpAddressCaptureService>();
            var keyVaultMock                = new Mock <IAzureKeyVaultService>();
            var storageMock                 = new Mock <IAzureStorageBlobCacheService>();
            var unitUnderTest               = new RosettaStoneService(loggerMock.Object, appCacheMock.Object, agencyMapperMock.Object, ipAddressCaptureServiceMock.Object, keyVaultMock.Object, storageMock.Object);

            var sequence = new MockSequence();

            appCacheMock.InSequence(sequence)
            .Setup(mock => mock.Remove("_RosettaStoneService_agencies"))
            .Verifiable();
            appCacheMock.InSequence(sequence)
            .Setup(mock => mock.Remove("_BearerTokenProvider_bearerToken"))
            .Verifiable();

            // ACT
            unitUnderTest.ClearCache();

            // ASSERT
            appCacheMock.Verify();
        }
        public async Task GetStatus_Success()
        {
            // ARRANGE
            var loggerMock                  = new Mock <ILogger <RosettaStoneService> >();
            var appCacheMock                = new Mock <IAppCache>();
            var agencyMapperMock            = new Mock <IMapper <AgencyFranchiseMap> >();
            var ipAddressCaptureServiceMock = new Mock <IIpAddressCaptureService>();
            var keyVaultMock                = new Mock <IAzureKeyVaultService>();
            var storageMock                 = new Mock <IAzureStorageBlobCacheService>();
            var unitUnderTest               = new RosettaStoneService(loggerMock.Object, appCacheMock.Object, agencyMapperMock.Object, ipAddressCaptureServiceMock.Object, keyVaultMock.Object, storageMock.Object);

            // ACT
            var result = await unitUnderTest.GetStatus();

            // ASSERT
            Assert.IsInstanceOfType(result, typeof(Status));
            Assert.AreEqual("active", result.status);
        }
        public async Task GetAgencies_Success()
        {
            // ARRANGE
            var loggerMock = new Mock <ILogger <RosettaStoneService> >();
            var appCache   = (IAppCache)_context.Properties["appCache"];

            appCache.CacheProvider.Remove("_RosettaStoneService_agencies");

            var agencyMapperMock            = new Mock <IMapper <AgencyFranchiseMap> >();
            var ipAddressCaptureServiceMock = new Mock <IIpAddressCaptureService>();
            var keyVaultMock  = new Mock <IAzureKeyVaultService>();
            var storageMock   = new Mock <IAzureStorageBlobCacheService>();
            var unitUnderTest = new RosettaStoneService(loggerMock.Object, appCache, agencyMapperMock.Object, ipAddressCaptureServiceMock.Object, keyVaultMock.Object, storageMock.Object);

            var mapResults = new List <AgencyFranchiseMap>
            {
                new AgencyFranchiseMap
                {
                    franchise_numbers = new[] { "4", "5", "6" },
                    clear_care_agency = 2
                },
                new AgencyFranchiseMap
                {
                    franchise_numbers = new[] { "1", "2", "3" },
                    clear_care_agency = 1
                }
            };

            agencyMapperMock.Setup(mock => mock.Map())
            .ReturnsAsync(mapResults)
            .Verifiable();

            await unitUnderTest.RefreshCache();

            // ACT
            var results = await unitUnderTest.GetAgencies();

            // ASSERT
            agencyMapperMock.Verify();
            Assert.AreEqual(2, results.Count);
            Assert.IsInstanceOfType(results.Last(), typeof(RosettaAgency));
            Assert.AreEqual(2, results.Last().clear_care_agency);
            Assert.AreEqual(1, results.First().clear_care_agency);
        }