예제 #1
0
        public void ProteinService_Get_UnavailableProtein()
        {
            // Arrange
            var service = new ProteinService(new ProteinDataContainer(), null, null);
            // Act
            var p = service.Get(2482);

            // Assert
            Assert.IsNull(p);
        }
예제 #2
0
        public void ProteinService_Get_UnavailableProtein_AddsTheProjectIDToLastProjectRefresh()
        {
            // Arrange
            var mockSummaryService = new Mock <IProjectSummaryService>();
            var service            = new ProteinService(new ProteinDataContainer(), mockSummaryService.Object, Logging.TestLogger.Instance);

            // Act
            service.GetOrRefresh(2482);
            // Assert
            Assert.IsTrue(service.LastProjectRefresh.ContainsKey(2482));
        }
예제 #3
0
        public void ProteinService_Refresh_ReturnsProteinChanges()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);
            // Act
            var changes = service.Refresh(null);

            // Assert
            Assert.AreEqual(624, changes.Count);
        }
예제 #4
0
        public void ProteinService_Refresh_RefreshesProjects()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);

            Assert.AreEqual(0, service.GetProjects().Count());
            // Act
            service.Refresh(null);
            // Assert
            Assert.AreNotEqual(624, service.GetProjects().Count());
        }
예제 #5
0
        public void ProteinService_RefreshRemovesFromProjectsNotFound_Test()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);

            service.LastProjectRefresh.Add(6940, DateTime.MinValue);
            // Act
            service.Refresh(null);
            // Assert
            Assert.IsFalse(service.LastProjectRefresh.ContainsKey(6940));
        }
예제 #6
0
        public void ProteinService_Get_AvailableProtein()
        {
            // Arrange
            var protein       = CreateValidProtein(2483);
            var dataContainer = new ProteinDataContainer();

            dataContainer.Data.Add(protein);
            var service = new ProteinService(dataContainer, null, null);
            // Act
            var p = service.Get(2483);

            // Assert
            Assert.AreSame(protein, p);
        }
예제 #7
0
        public void ProteinService_Refresh_UpdatesRefreshProperties()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);

            service.LastProjectRefresh.Add(2968, DateTime.MinValue);
            service.LastRefresh = DateTime.MinValue;
            // Act
            service.Refresh(null);
            // Assert
            Assert.AreNotEqual(DateTime.MinValue, service.LastProjectRefresh[2968]);
            Assert.AreNotEqual(DateTime.MinValue, service.LastRefresh);
        }
예제 #8
0
        public void ProteinService_GetOrRefresh_AllowsRefreshWhenLastRefreshElapsed()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);

            // set to over the elapsed time (1 hour)
            service.LastRefresh = DateTime.UtcNow.Subtract(TimeSpan.FromMinutes(61));
            // Act
            var p = service.GetOrRefresh(6940);

            Assert.IsNotNull(p);
            // Assert
            Mock.Get(summaryService).Verify(x => x.GetProteins(It.IsAny <IProgress <ProgressInfo> >()), Times.Once);
        }
예제 #9
0
        public void ProteinService_GetOrRefresh_CalledMultipleTimesOnlyTriggersOneRefresh_ByLastRefresh()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);
            // Act
            var p = service.GetOrRefresh(2482);

            Assert.IsNull(p);
            // Call twice to internally exercise the LastRefresh value
            p = service.GetOrRefresh(2482);
            Assert.IsNull(p);
            // Assert
            Mock.Get(summaryService).Verify(x => x.GetProteins(It.IsAny <IProgress <ProgressInfo> >()), Times.Once);
        }
예제 #10
0
        public void ProteinService_GetOrRefresh_RemovesFromLastProjectRefresh()
        {
            // Arrange
            var summaryService = CreateProjectSummaryService();
            var service        = new ProteinService(new ProteinDataContainer(), summaryService, Logging.TestLogger.Instance);

            // Set project not found to exercise removal code
            service.LastProjectRefresh.Add(6940, DateTime.MinValue);
            // Act
            Protein p = service.GetOrRefresh(6940);

            // Assert
            Assert.IsNotNull(p);
            Assert.IsFalse(service.LastProjectRefresh.ContainsKey(6940));
        }
예제 #11
0
        public void ProteinService_GetProjects_Test()
        {
            // Arrange
            var dataContainer = new ProteinDataContainer();
            var projects      = Enumerable.Range(1, 5).ToList();

            foreach (int projectNumber in projects)
            {
                dataContainer.Data.Add(CreateValidProtein(projectNumber));
            }
            var service = new ProteinService(dataContainer, null, null);
            // Act
            var serviceProjects = service.GetProjects();

            // Assert
            Assert.IsTrue(projects.SequenceEqual(serviceProjects));
        }