public void CallTest()
        {
            //Arrange
            var domainStatProjectState1 = new DomainStatProjectState()
            {
                Producer = ProductName.TaggerAndroid, IsSuccessfulUpload = true
            };
            var domainStatProjectState2 = new DomainStatProjectState()
            {
                Producer = ProductName.TaggerAndroid, IsSuccessfulUpload = false
            };
            var domainStatProjectState3 = new DomainStatProjectState()
            {
                Producer = "ProductName", IsSuccessfulUpload = true
            };

            var domainReport = new DomainReport();

            var statProjectUploadingFilter = new Mock <IStatProjectUploadingFilter>();

            var taggerAndroidUploadsFilter = new TaggerAndroidUploadsFilter();

            taggerAndroidUploadsFilter.Set(statProjectUploadingFilter.Object);

            //Act
            taggerAndroidUploadsFilter.Call(domainStatProjectState1, domainReport);
            taggerAndroidUploadsFilter.Call(domainStatProjectState2, domainReport);
            taggerAndroidUploadsFilter.Call(domainStatProjectState3, domainReport);

            //Assert
            Assert.AreEqual(1, domainReport.TaggerAndroidSuccessfulUploads);
            statProjectUploadingFilter.Verify(m => m.Call(domainStatProjectState1, domainReport), Times.Once());
            statProjectUploadingFilter.Verify(m => m.Call(domainStatProjectState2, domainReport), Times.Once());
            statProjectUploadingFilter.Verify(m => m.Call(domainStatProjectState3, domainReport), Times.Once());
        }
Example #2
0
        public DomainReport CompileReport(DomainReport additionalReport = null)
        {
            var domainReport = new DomainReport {
                Interval = _interval.Days.ToString(CultureInfo.InvariantCulture)
            };
            IEnumerable <DomainStatWatching>         watchings     = _statisticsService.GetWatchings(_interval);
            IEnumerable <DomainStatUserRegistration> registrations = _statisticsService.GetUserRegistrations(_interval);
            IEnumerable <DomainStatProjectUploading> uploadings    = _statisticsService.GetProjectUploadings(_interval);
            IEnumerable <DomainStatProjectDeletion>  deletions     = _statisticsService.GetProjectDeletions(_interval);

            foreach (DomainStatWatching domainStatWatching in watchings)
            {
                _filtersManager.FilterStatWatching(domainStatWatching, domainReport);
            }
            foreach (DomainStatUserRegistration domainStatUserRegistration in registrations)
            {
                _filtersManager.FilterStatUserRegistration(domainStatUserRegistration, domainReport);
            }
            foreach (DomainStatProjectUploading domainStatProjectUploading in uploadings)
            {
                DomainStatProjectState domainStatProjectState = _statisticsService.GetProjectState(domainStatProjectUploading.ProjectId);
                _filtersManager.FilterStatProjectUploading(domainStatProjectState, domainReport);
            }
            foreach (DomainStatProjectDeletion domainStatProjectDeletion in deletions)
            {
                DomainStatProjectState domainStatProjectState = _statisticsService.GetProjectState(domainStatProjectDeletion.ProjectId);
                _filtersManager.FilterStatProjectDeletion(domainStatProjectState, domainReport);
                _filtersManager.FilterStatProjectCancellation(domainStatProjectState, domainReport);
            }

            return(domainReport);
        }
Example #3
0
        public void CallTest()
        {
            //Arrange
            var domainStatProjectState1 = new DomainStatProjectState()
            {
                Producer = ProductName.CicIPad, IsSuccessfulUpload = true
            };
            var domainStatProjectState2 = new DomainStatProjectState()
            {
                Producer = ProductName.CicIPad, IsSuccessfulUpload = false
            };
            var domainStatProjectState3 = new DomainStatProjectState()
            {
                Producer = "ProductName", IsSuccessfulUpload = true
            };

            var domainReport = new DomainReport();

            var statProjectDeletionFilter = new Mock <IStatProjectDeletionFilter>();

            var cicIPadDeletionsFilter = new CicIPadDeletionsFilter();

            cicIPadDeletionsFilter.Set(statProjectDeletionFilter.Object);

            //Act
            cicIPadDeletionsFilter.Call(domainStatProjectState1, domainReport);
            cicIPadDeletionsFilter.Call(domainStatProjectState2, domainReport);
            cicIPadDeletionsFilter.Call(domainStatProjectState3, domainReport);

            //Assert
            Assert.AreEqual(1, domainReport.CicIPadDeletions);
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState1, domainReport), Times.Once());
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState2, domainReport), Times.Once());
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState3, domainReport), Times.Once());
        }
Example #4
0
 public void Call(DomainStatProjectState domainStatProjectState, DomainReport domainReport)
 {
     if (domainStatProjectState.IsSuccessfulUpload &&
         domainStatProjectState.Producer == ProductName.CicPc)
     {
         domainReport.CicPcDeletions++;
     }
     if (Filter != null)
     {
         Filter.Call(domainStatProjectState, domainReport);
     }
 }
 public void Call(DomainStatProjectState domainStatProjectState, DomainReport domainReport)
 {
     if (!domainStatProjectState.IsSuccessfulUpload &&
         domainStatProjectState.Producer == ProductName.TaggerIPhone)
     {
         domainReport.TaggerIPhoneUploadCancels++;
     }
     if (Filter != null)
     {
         Filter.Call(domainStatProjectState, domainReport);
     }
 }
Example #6
0
 public void Call(DomainStatProjectState domainStatProjectState, DomainReport domainReport)
 {
     if (domainStatProjectState.IsSuccessfulUpload &&
         domainStatProjectState.Producer == ProductName.Standalone)
     {
         domainReport.StandaloneSuccessfulUploads++;
     }
     if (Filter != null)
     {
         Filter.Call(domainStatProjectState, domainReport);
     }
 }
Example #7
0
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatUserRegistration = new DomainStatProjectState()
            {
                Producer = ProductName.DailyMotion, IsSuccessfulUpload = true
            };
            var domainReport = new DomainReport();

            var dailyMotionUploadsFilter = new DailyMotionUploadsFilter();

            //Act
            dailyMotionUploadsFilter.Call(domainStatUserRegistration, domainReport);
            dailyMotionUploadsFilter.Call(domainStatUserRegistration, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.DailyMotionSuccessfulUploads);
        }
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.TaggerIPhone, IsSuccessfulUpload = true
            };
            var domainReport = new DomainReport();

            var taggerIPhoneUploadsFilter = new TaggerIPhoneUploadsFilter();

            //Act
            taggerIPhoneUploadsFilter.Call(domainStatProjectState, domainReport);
            taggerIPhoneUploadsFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.TaggerIPhoneUploads);
        }
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.Player, IsSuccessfulUpload = true
            };
            var domainReport = new DomainReport();

            var playerUploadsFilter = new PlayerUploadsFilter();

            //Act
            playerUploadsFilter.Call(domainStatProjectState, domainReport);
            playerUploadsFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.PlayerSuccessfulUploads);
        }
Example #10
0
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.CicMac, IsSuccessfulUpload = false
            };
            var domainReport = new DomainReport();

            var cicMacCancellationFilter = new CicMacCancellationFilter();

            //Act
            cicMacCancellationFilter.Call(domainStatProjectState, domainReport);
            cicMacCancellationFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.CicMacUploadCancels);
        }
Example #11
0
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.ImageShack, IsSuccessfulUpload = false
            };
            var domainReport = new DomainReport();

            var imageShackCancellationFilter = new ImageShackCancellationFilter();

            //Act
            imageShackCancellationFilter.Call(domainStatProjectState, domainReport);
            imageShackCancellationFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.ImageShackUploadCancels);
        }
Example #12
0
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.CicIPad, IsSuccessfulUpload = true
            };
            var domainReport = new DomainReport();

            var cicIPadDeletionsFilter = new CicIPadDeletionsFilter();

            //Act
            cicIPadDeletionsFilter.Call(domainStatProjectState, domainReport);
            cicIPadDeletionsFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.CicIPadDeletions);
        }
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.Standalone, IsSuccessfulUpload = false
            };
            var domainReport = new DomainReport();

            var standaloneCancellationFilter = new StandaloneCancellationFilter();

            //Act
            standaloneCancellationFilter.Call(domainStatProjectState, domainReport);
            standaloneCancellationFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.StandaloneUploadCancels);
        }
        public void CallWhenNotSetFelterTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState()
            {
                Producer = ProductName.TaggerAndroid, IsSuccessfulUpload = false
            };
            var domainReport = new DomainReport();

            var taggerAndroidCancellationFilter = new TaggerAndroidCancellationFilter();

            //Act
            taggerAndroidCancellationFilter.Call(domainStatProjectState, domainReport);
            taggerAndroidCancellationFilter.Call(domainStatProjectState, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.TaggerAndroidUploadCancels);
        }
        public void GetProjectStateForAbsentProjectIdTest()
        {
            //Arrange
            const string projectId1 = "projectId1";

            var entity1 = new StatProjectStateV3Entity()
            {
                ProjectId = projectId1, ActionType = StatActionType.Avsx
            };
            var entity2 = new StatProjectStateV3Entity()
            {
                ProjectId = projectId1, ActionType = StatActionType.Screenshot
            };
            var entity3 = new StatProjectStateV3Entity()
            {
                ProjectId = projectId1, ActionType = StatActionType.Video
            };

            var entities = new List <StatProjectStateV3Entity>()
            {
                entity1, entity2, entity3
            };

            var domain1 = new DomainStatProjectState();

            var repositoryFactory   = new Mock <IRepositoryFactory>();
            var tableValueConverter = new Mock <ITableValueConverter>();
            var statMapper          = new Mock <IStatMapper>();

            var repository = new FakeRepository <StatProjectStateV3Entity>(entities);

            repositoryFactory.Setup(m => m.Create <StatProjectStateV3Entity>(Tables.StatProjectStateV3)).Returns(repository);
            statMapper.Setup(m => m.StatProjectStateToDomain(It.Is <StatProjectStateV3Entity>(p => p.ProjectId == projectId1 &&
                                                                                              p.ActionType == null &&
                                                                                              p.Producer == null), false)).Returns(domain1);

            var statisticsService = new StatisticsService(repositoryFactory.Object, tableValueConverter.Object, statMapper.Object);

            //Act
            var projectState1 = statisticsService.GetProjectState(projectId1);

            //Assert
            Assert.AreEqual(domain1, projectState1);
        }
        public void FilterStatProjectDeletionTest()
        {
            //Arrange
            var domainStatProjectState = new DomainStatProjectState();

            var statProjectDeletionFilters = new List <IStatProjectDeletionFilter>();
            var filter = new Mock <IStatProjectDeletionFilter>();

            _filtersFactory.Setup(m => m.CreateStatProjectDeletionFilters()).Returns(statProjectDeletionFilters);
            _filtersChainBuilder.Setup(m => m.BuildStatProjectDeletionFilter(statProjectDeletionFilters)).Returns(filter.Object);

            var filtersManager = new FiltersManager(_filtersFactory.Object, _filtersChainBuilder.Object);

            //Act
            filtersManager.FilterStatProjectDeletion(domainStatProjectState, _domainReport);

            //Assert
            filter.Verify(m => m.Call(domainStatProjectState, _domainReport), Times.Once());
        }
Example #17
0
        public DomainStatProjectState GetProjectState(string projectId)
        {
            List <StatProjectStateV3Entity> projectStates = _projectStateRepostitory.AsEnumerable(p => p.ProjectId == projectId).ToList();

            bool isCic = projectStates.All(p => p.Producer == ProductName.CicIPad ||
                                           p.Producer == ProductName.CicMac ||
                                           p.Producer == ProductName.CicPc);

            bool isSuccessfulUpload = isCic
                ? projectStates.Select(p => p.ActionType).ContainsAll(new[] { StatActionType.Project, StatActionType.Avsx, StatActionType.Video })
                : projectStates.Select(p => p.ActionType).ContainsAll(new[] { StatActionType.Project, StatActionType.Avsx, StatActionType.Video, StatActionType.Screenshot });

            StatProjectStateV3Entity entity = projectStates.FirstOrDefault(p => p.ActionType == StatActionType.Project) ?? new StatProjectStateV3Entity {
                ProjectId = projectId
            };

            DomainStatProjectState domain = _statMapper.StatProjectStateToDomain(entity, isSuccessfulUpload);

            return(domain);
        }
Example #18
0
        public void CallTest()
        {
            //Arrange
            var domainStatProjectState1 = new DomainStatProjectState()
            {
                Producer = ProductName.ImageShack, IsSuccessfulUpload = true
            };
            var domainStatProjectState2 = new DomainStatProjectState()
            {
                Producer = ProductName.ImageShack, IsSuccessfulUpload = false
            };
            var domainStatProjectState3 = new DomainStatProjectState()
            {
                Producer = ProductName.ImageShack, IsSuccessfulUpload = false
            };
            var domainStatProjectState4 = new DomainStatProjectState()
            {
                Producer = "ProductName", IsSuccessfulUpload = true
            };

            var domainReport = new DomainReport();

            var statProjectDeletionFilter = new Mock <IStatProjectCancellationFilter>();

            var imageShackCancellationFilter = new ImageShackCancellationFilter();

            imageShackCancellationFilter.Set(statProjectDeletionFilter.Object);

            //Act
            imageShackCancellationFilter.Call(domainStatProjectState1, domainReport);
            imageShackCancellationFilter.Call(domainStatProjectState2, domainReport);
            imageShackCancellationFilter.Call(domainStatProjectState3, domainReport);
            imageShackCancellationFilter.Call(domainStatProjectState4, domainReport);

            //Assert
            Assert.AreEqual(2, domainReport.ImageShackUploadCancels);
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState1, domainReport), Times.Once());
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState2, domainReport), Times.Once());
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState3, domainReport), Times.Once());
            statProjectDeletionFilter.Verify(m => m.Call(domainStatProjectState4, domainReport), Times.Once());
        }
Example #19
0
 public void FilterStatProjectUploading(DomainStatProjectState domainStatProjectState, DomainReport domainReport)
 {
     _statProjectUploadingFilter.Call(domainStatProjectState, domainReport);
 }
Example #20
0
 public void FilterStatProjectCancellation(DomainStatProjectState domainStatProjectState, DomainReport domainReport)
 {
     _statProjectCancellationFilter.Call(domainStatProjectState, domainReport);
 }
        public void CompileReportTest()
        {
            //Arrange
            const string projectId1 = "projectId1";
            const string projectId2 = "projectId2";
            const int    days       = 3;
            var          startDate  = new DateTime(3452345234);
            var          finishDate = startDate.Add(TimeSpan.FromDays(days));
            var          interval   = new Interval()
            {
                Start = startDate, Finish = finishDate
            };

            var watching1     = new DomainStatWatching();
            var watching2     = new DomainStatWatching();
            var registration1 = new DomainStatUserRegistration();
            var registration2 = new DomainStatUserRegistration();
            var uploading1    = new DomainStatProjectUploading()
            {
                ProjectId = projectId1
            };
            var uploading2 = new DomainStatProjectUploading()
            {
                ProjectId = projectId2
            };
            var deletion1 = new DomainStatProjectDeletion()
            {
                ProjectId = projectId1
            };
            var deletion2 = new DomainStatProjectDeletion()
            {
                ProjectId = projectId2
            };
            var projectState1 = new DomainStatProjectState();
            var projectState2 = new DomainStatProjectState();

            var watchings = new List <DomainStatWatching>()
            {
                watching1, watching2
            };
            var registratios = new List <DomainStatUserRegistration>()
            {
                registration1, registration2
            };
            var uploadings = new List <DomainStatProjectUploading>()
            {
                uploading1, uploading2
            };
            var deletions = new List <DomainStatProjectDeletion>()
            {
                deletion1, deletion2
            };

            var filtersManager    = new Mock <IFiltersManager>();
            var statisticsService = new Mock <IStatisticsService>();

            var compiler = new StatisticsCompiler(filtersManager.Object, statisticsService.Object, interval);

            statisticsService.Setup(m => m.GetWatchings(interval)).Returns(watchings);
            statisticsService.Setup(m => m.GetUserRegistrations(interval)).Returns(registratios);
            statisticsService.Setup(m => m.GetProjectUploadings(interval)).Returns(uploadings);
            statisticsService.Setup(m => m.GetProjectDeletions(interval)).Returns(deletions);
            statisticsService.Setup(m => m.GetProjectState(projectId1)).Returns(projectState1);
            statisticsService.Setup(m => m.GetProjectState(projectId2)).Returns(projectState2);

            //Act
            var report = compiler.CompileReport();

            //Assert
            Assert.AreEqual(days.ToString(CultureInfo.InvariantCulture), report.Interval);
            filtersManager.Verify(m => m.FilterStatWatching(watching1, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatWatching(watching2, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatUserRegistration(registration1, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatUserRegistration(registration2, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectUploading(projectState1, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectUploading(projectState2, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectDeletion(projectState1, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectDeletion(projectState2, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectCancellation(projectState1, report), Times.Once());
            filtersManager.Verify(m => m.FilterStatProjectCancellation(projectState2, report), Times.Once());
        }