public void GetServerDocuments_LogError()
        {
            //Arrange
            var serverId = 444;
            var server   = new Server()
            {
                ArtifactId = serverId
            };
            var workspaceIds = new[] { 123, 234 };
            var workspaces   = workspaceIds.Select(wid => new Workspace(wid)
            {
                ServerID = serverId, Name = $"AbcQ{wid}"
            }).ToList();

            //Arrange
            _sqlRepo.Setup(s => s.AnalyticsRepository.ReadCaatPopTables(It.IsIn(workspaceIds)))
            .Throws(new Exception("Boom"));
            _logger.Setup(l => l.LogError(It.IsAny <String>(), It.IsAny <String>()));

            //Act
            var task   = new AnalyticsCheckMemoryCheck(_wmiHelper.Object, _workspaceRepo.Object, _logger.Object, _sqlRepo.Object, 1);
            var result = task.GetServerIndexedDocuments(server, workspaces);

            //Assert
            _logger.Verify(l => l.LogError(It.IsAny <String>(), It.IsAny <String>()));
        }
        public void GetServerDocuments_Success()
        {
            //Arrange
            var serverId = 444;
            var server   = new Server()
            {
                ArtifactId = serverId
            };
            var workspaceIds = new[] { 123, 234 };
            var workspaces   = workspaceIds.Select(wid => new Workspace(wid)
            {
                ServerID = serverId
            }).ToList();

            var caatPopTables = new List <String>()
            {
                "zca_pop_1_1", "zca_pop_2_1", "zca_pop_3_1"
            };
            var caatIndexes = new List <Int32>()
            {
                1, 2, 3
            };

            _sqlRepo.Setup(s => s.AnalyticsRepository.ReadCaatPopTables(It.IsIn(workspaceIds)))
            .Returns(caatPopTables);
            _sqlRepo.Setup(s => s.AnalyticsRepository.ReadCaatIndexes(It.IsIn(workspaceIds)))
            .Returns(caatIndexes);
            _sqlRepo.Setup(s => s.AnalyticsRepository.ReadCaatSearchableDocuments(It.IsIn(workspaceIds), caatPopTables, caatIndexes))
            .Returns(new Dictionary <int, long>()
            {
                { 555, 999 }, { 777, 10 }, { 333, 6 }
            });
            _sqlRepo.Setup(s => s.AnalyticsRepository.ReadCaatTrainingDocuments(It.IsIn(workspaceIds), caatPopTables, caatIndexes))
            .Returns(new Dictionary <int, long>()
            {
                { 555, 888 }, { 777, 15 }, { 999, 5 }
            });


            //Act
            var task   = new AnalyticsCheckMemoryCheck(_wmiHelper.Object, _workspaceRepo.Object, _logger.Object, _sqlRepo.Object, 1);
            var result = task.GetServerIndexedDocuments(server, workspaces);

            //Assert
            Assert.That(result.Keys.Count, Is.EqualTo(4));
            Assert.That(result[333].Searchable, Is.EqualTo(12));
            Assert.That(result[555].Searchable, Is.EqualTo(1998));
            Assert.That(result[777].Searchable, Is.EqualTo(20));
            Assert.That(result[999].Searchable, Is.EqualTo(0));
            Assert.That(result[333].Training, Is.EqualTo(0));
            Assert.That(result[555].Training, Is.EqualTo(1776));
            Assert.That(result[777].Training, Is.EqualTo(30));
            Assert.That(result[999].Training, Is.EqualTo(10));
        }