public void RunFileGenService_ShouldNOTCall_TransferReportsToPayrollAndMailToAdmins()
        {
            var mailServiceSub = NSubstitute.Substitute.For <IMailService>();
            var transferToPayrollServiceSub = NSubstitute.Substitute.For <ITransferToPayrollService>();

            // Insert initial data
            var file1 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(DateTime.Now.AddDays(1)),
                Repeat        = false
            });
            var file2 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(DateTime.Now.AddDays(1)),
                Repeat        = false
            });
            var fileRepoEntriesCount = fileRepoList.Count;

            // Run service call
            var service = new FileGenerationService(mailServiceSub, transferToPayrollServiceSub, mailRepoMock, fileRepoMock, _logger);

            service.RunFileGenerationService();

            // Asserts
            // 1. TransferReportsToPayroll NOT called
            // 2. SendMailToAdmins(subject, message) NOT called
            // 3. Count of the entries in the repo not increased

            transferToPayrollServiceSub.DidNotReceive().TransferReportsToPayroll();
            mailServiceSub.DidNotReceiveWithAnyArgs().SendMailToAdmins("", "");
            var fileRepoEntriesAfterCall = fileRepoList.Count;

            Assert.AreEqual(fileRepoEntriesCount, fileRepoEntriesAfterCall);
        }
Exemplo n.º 2
0
 public void onListen(object pass)
 {
     if (pass is String)
     {
         if (((String)pass).Contains("generate/") && gs != null)
         {
             String file = ((String)pass).Replace("generate/", "");
             FileGenerationService fgs = new FileGenerationService();
             UserControls.IsEnabled = false;
             BackgroundWorker bgWorker = new BackgroundWorker()
             {
                 WorkerReportsProgress = true
             };
             bgWorker.DoWork += (s, e) =>
             {
                 fgs.buildGameData(divUC.divisionsList, pl.plsObject, gs.gsObject, file, gs);
             };
             bgWorker.RunWorkerCompleted += (s, e) =>
             {
                 gs.hideGeneratingAnimation();
                 UserControls.IsEnabled = true;
             };
             bgWorker.RunWorkerAsync();
         }
     }
     if (pass is int)
     {
         pl.setCollectionCheck((int)gs.TotalPicksSlider.Value);
     }
     divUC.validateDivision();
 }
        public void GenerateFiles()
        {
            var repository = new Mock <ISpecificationRepository>();

            repository.Setup(x => x.GetAll()).Returns(new List <TableSpecification> {
                TestUtility.GetCustomerTableSpec()
            });
            var logger  = new Mock <ILogger>();
            var service = new FileGenerationService(logger.Object, repository.Object);

            service.AddFileGenerator(new CSharpModelFileGenerator());
            service.AddFileGenerator(new TSqlQueryFileGenerator());

            var result = service.GenerateFiles();

            Assert.IsTrue(result.ContainsKey(GeneratedFileType.CSharpModel));
            Assert.IsTrue(result.ContainsKey(GeneratedFileType.TSqlQuery));

            IEnumerable <GeneratedFile> csharp = null;
            IEnumerable <GeneratedFile> tsql   = null;

            result.TryGetValue(GeneratedFileType.CSharpModel, out csharp);
            result.TryGetValue(GeneratedFileType.TSqlQuery, out tsql);

            Assert.AreEqual(1, csharp.Count());
            Assert.AreEqual(1, tsql.Count());
        }
        public void testBuildGameDataThreeDivisonsFourPicksWithLoss()
        {
            //Custom input for a game
            GameSetupModel gs = new GameSetupModel();

            gs.maxPermutations = 1000;
            gs.totalPicks      = 4;

            PrizeLevel pl1 = new PrizeLevel();

            pl1.isInstantWin   = false;
            pl1.numCollections = 3;
            pl1.prizeValue     = 100;

            PrizeLevel pl2 = new PrizeLevel();

            pl2.isInstantWin   = false;
            pl2.numCollections = 2;
            pl2.prizeValue     = 50;

            PrizeLevel pl3 = new PrizeLevel();

            pl3.isInstantWin   = false;
            pl3.numCollections = 2;
            pl3.prizeValue     = 25;

            PrizeLevels pls = new PrizeLevels();

            pls.addPrizeLevel(pl1);
            pls.addPrizeLevel(pl2);
            pls.addPrizeLevel(pl3);

            DivisionModel dm1 = new DivisionModel();

            dm1.addPrizeLevel(pl1);

            DivisionModel dm2 = new DivisionModel();

            dm2.addPrizeLevel(pl2);

            DivisionModel dm3 = new DivisionModel();

            dm3.addPrizeLevel(pl2);
            dm3.addPrizeLevel(pl3);

            DivisionModel dm4 = new DivisionModel();

            DivisionsModel dms = new DivisionsModel();

            dms.addDivision(dm1);
            dms.addDivision(dm2);
            dms.addDivision(dm3);
            dms.addDivision(dm4);

            //File Generator
            FileGenerationService fgs = new FileGenerationService();

            fgs.buildGameData(dms, pls, gs, "testBuildGameDataThreeDivisonsFourPicksWithLoss");
        }
        public void AddDuplicateFileGenerator()
        {
            var repository = new Mock <ISpecificationRepository>();
            var logger     = new Mock <ILogger>();
            var service    = new FileGenerationService(logger.Object, repository.Object);

            service.AddFileGenerator(new CSharpModelFileGenerator());

            var ex = Assert.ThrowsException <InvalidOperationException>(() => service.AddFileGenerator(new CSharpModelFileGenerator()));

            Assert.AreEqual(string.Format("IFileGenerator with output type {0} is already present in the service collection.", GeneratedFileType.CSharpModel), ex.Message);
        }
        public void AddFileGenerator()
        {
            var repository = new Mock <ISpecificationRepository>();
            var logger     = new Mock <ILogger>();
            var service    = new FileGenerationService(logger.Object, repository.Object);

            service.AddFileGenerator(new CSharpModelFileGenerator());

            var generator = service.FileGenerators.SingleOrDefault(x => x.OutputFileType == GeneratedFileType.CSharpModel);

            Assert.IsNotNull(generator);
        }
        public void RunFileGenService_IsAllFilesGenerated()
        {
            var mailServiceSub = NSubstitute.Substitute.For <IMailService>();
            var transferToPayrollServiceSub = NSubstitute.Substitute.For <ITransferToPayrollService>();

            // Insert initial data
            var file1 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(DateTime.Now),
                Completed     = false,
                Repeat        = false
            });
            var file2 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(DateTime.Now),
                Completed     = false,
                Repeat        = false
            });
            var file3 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(DateTime.Now),
                Completed     = false,
                Repeat        = true
            });
            var fileRepoEntriesCount = fileRepoList.Count;

            // Run service call
            var service = new FileGenerationService(mailServiceSub, transferToPayrollServiceSub, mailRepoMock, fileRepoMock, _logger);

            service.RunFileGenerationService();

            // Asserts
            // 1. 3 files where to schedule, one with Repeat set to true
            // 2. TransferReportsToPayroll called
            // 3. SendMailToAdmins(subject, message) called
            // 4. Files count should be one higher (4)
            // 5. First 3 should have IsFileGenerated set to true
            // 6. Last should not yet been generated

            transferToPayrollServiceSub.Received().TransferReportsToPayroll();
            mailServiceSub.ReceivedWithAnyArgs().SendMailToAdmins("", "");
            var fileRepoEntriesAfterCall = fileRepoList.Count;

            Assert.AreEqual(fileRepoEntriesAfterCall, fileRepoEntriesCount + 1);
            Assert.AreEqual(fileRepoList[0].Completed, true);
            Assert.AreEqual(fileRepoList[1].Completed, true);
            Assert.AreEqual(fileRepoList[2].Completed, true);
            Assert.AreEqual(fileRepoList[3].Completed, false);
        }
        public void testBuildGameDataMaxDivison()
        {
            GameSetupModel gs = new GameSetupModel();

            gs.maxPermutations = 300000;
            gs.totalPicks      = 20;

            int numPrizeLevels = 12;

            PrizeLevel[] prizes = new PrizeLevel[numPrizeLevels];
            PrizeLevels  pls    = new PrizeLevels();

            for (int i = 0; i < numPrizeLevels; i++)
            {
                prizes[i] = new PrizeLevel();
                prizes[i].isInstantWin   = false;
                prizes[i].numCollections = i + 1;
                prizes[i].prizeValue     = 100 * i;
                pls.addPrizeLevel(prizes[i]);
            }

            int numberOfDivions = 30;

            DivisionModel[] divisions = new DivisionModel[numberOfDivions];
            DivisionsModel  dms       = new DivisionsModel();
            Random          rand      = new Random();

            for (int i = 0; i < numberOfDivions; i++)
            {
                divisions[i] = new DivisionModel();
                divisions[i].addPrizeLevel(prizes[rand.Next(0, 12)]);
                dms.addDivision(divisions[i]);
            }

            FileGenerationService fgs = new FileGenerationService();

            fgs.buildGameData(dms, pls, gs, "T:\\Work\\JunkOut\\MaxTest.txt");
        }
        public void testBuildGameDataFiveDivisionsNinePicksWithFailDivision()
        {
            GameSetupModel gs = new GameSetupModel();

            gs.maxPermutations = 1000;
            gs.totalPicks      = 9;

            PrizeLevel pl1 = new PrizeLevel();

            pl1.isInstantWin   = false;
            pl1.numCollections = 5;
            pl1.prizeValue     = 100;

            PrizeLevel pl2 = new PrizeLevel();

            pl2.isInstantWin   = false;
            pl2.numCollections = 4;
            pl2.prizeValue     = 50;

            PrizeLevel pl3 = new PrizeLevel();

            pl3.isInstantWin   = false;
            pl3.numCollections = 4;
            pl3.prizeValue     = 25;

            PrizeLevel pl4 = new PrizeLevel();

            pl4.isInstantWin   = false;
            pl4.numCollections = 3;
            pl4.prizeValue     = 10;

            PrizeLevel pl5 = new PrizeLevel();

            pl5.isInstantWin   = false;
            pl5.numCollections = 3;
            pl5.prizeValue     = 5;

            PrizeLevels pls = new PrizeLevels();

            pls.addPrizeLevel(pl1);
            pls.addPrizeLevel(pl2);
            pls.addPrizeLevel(pl3);
            pls.addPrizeLevel(pl4);
            pls.addPrizeLevel(pl5);


            DivisionModel dm1 = new DivisionModel();

            dm1.addPrizeLevel(pl1);

            DivisionModel dm2 = new DivisionModel();

            dm2.addPrizeLevel(pl1);
            dm2.addPrizeLevel(pl2);

            DivisionModel dm3 = new DivisionModel();

            dm3.addPrizeLevel(pl1);
            dm3.addPrizeLevel(pl3);

            DivisionModel dm4 = new DivisionModel();

            dm4.addPrizeLevel(pl2);
            dm4.addPrizeLevel(pl3);

            DivisionModel dm5 = new DivisionModel();

            dm5.addPrizeLevel(pl4);
            dm5.addPrizeLevel(pl5);

            DivisionModel dm6 = new DivisionModel();

            DivisionsModel dms = new DivisionsModel();

            dms.addDivision(dm1);
            dms.addDivision(dm2);
            dms.addDivision(dm3);
            dms.addDivision(dm4);
            dms.addDivision(dm5);
            dms.addDivision(dm6);

            FileGenerationService fgs = new FileGenerationService();

            fgs.buildGameData(dms, pls, gs, "testBuildGameDataFiveDivisionsNinePicksWithFail");
        }
Exemplo n.º 10
0
        public void testBuildGameDataFourDivisionsSixPicks()
        {
            GameSetupModel gs = new GameSetupModel();

            gs.maxPermutations = 1000;
            gs.totalPicks      = 6;

            PrizeLevel pl1 = new PrizeLevel();

            pl1.isInstantWin   = false;
            pl1.numCollections = 3;
            pl1.prizeValue     = 100;

            PrizeLevel pl2 = new PrizeLevel();

            pl2.isInstantWin   = false;
            pl2.numCollections = 3;
            pl2.prizeValue     = 50;

            PrizeLevel pl3 = new PrizeLevel();

            pl3.isInstantWin   = false;
            pl3.numCollections = 3;
            pl3.prizeValue     = 25;

            PrizeLevels pls = new PrizeLevels();

            pls.addPrizeLevel(pl1);
            pls.addPrizeLevel(pl2);
            pls.addPrizeLevel(pl3);

            DivisionModel dm1 = new DivisionModel();

            dm1.addPrizeLevel(pl1);
            dm1.addPrizeLevel(pl2);

            DivisionModel dm2 = new DivisionModel();

            dm2.addPrizeLevel(pl2);
            dm2.addPrizeLevel(pl3);

            DivisionModel dm3 = new DivisionModel();

            dm3.addPrizeLevel(pl1);
            dm3.addPrizeLevel(pl3);

            DivisionModel dm4 = new DivisionModel();

            dm4.addPrizeLevel(pl2);

            DivisionsModel dms = new DivisionsModel();

            dms.addDivision(dm1);
            dms.addDivision(dm2);
            dms.addDivision(dm3);
            dms.addDivision(dm4);

            FileGenerationService fgs = new FileGenerationService();

            fgs.buildGameData(dms, pls, gs, "testBuildGameDataFourDivisionsSixPicks");
        }
Exemplo n.º 11
0
        public void testBuildGameDataFourDivisonsFivePicks()
        {
            //Custom input for a game
            GameSetupModel gs = new GameSetupModel();

            gs.maxPermutations = 1000;
            gs.totalPicks      = 5;
            gs.isNearWin       = true;
            gs.nearWins        = 2;

            PrizeLevel pl1 = new PrizeLevel();

            pl1.isInstantWin   = false;
            pl1.numCollections = 3;
            pl1.prizeValue     = 100;

            PrizeLevel pl2 = new PrizeLevel();

            pl2.isInstantWin   = false;
            pl2.numCollections = 2;
            pl2.prizeValue     = 50;

            PrizeLevel pl3 = new PrizeLevel();

            pl3.isInstantWin   = false;
            pl3.numCollections = 2;
            pl3.prizeValue     = 25;

            PrizeLevel pl4 = new PrizeLevel();

            pl4.isInstantWin   = false;
            pl4.numCollections = 4;
            pl4.prizeValue     = 10000;

            PrizeLevel pl5 = new PrizeLevel();

            pl5.isInstantWin   = false;
            pl5.numCollections = 3;
            pl5.prizeValue     = 1000;

            PrizeLevels pls = new PrizeLevels();

            pls.addPrizeLevel(pl1);
            pls.addPrizeLevel(pl2);
            pls.addPrizeLevel(pl3);
            pls.addPrizeLevel(pl4);
            pls.addPrizeLevel(pl5);

            DivisionModel dm1 = new DivisionModel();

            dm1.addPrizeLevel(pl1);

            DivisionModel dm2 = new DivisionModel();

            dm2.addPrizeLevel(pl2);

            DivisionModel dm3 = new DivisionModel();

            dm3.addPrizeLevel(pl2);
            dm3.addPrizeLevel(pl3);

            DivisionModel dm4 = new DivisionModel();

            dm4.addPrizeLevel(pl5);

            DivisionModel dm5 = new DivisionModel();

            dm5.addPrizeLevel(pl5);
            dm5.addPrizeLevel(pl2);

            DivisionsModel dms = new DivisionsModel();

            dms.addDivision(dm1);
            dms.addDivision(dm2);
            dms.addDivision(dm3);
            dms.addDivision(dm4);
            dms.addDivision(dm5);

            //File Generator
            FileGenerationService fgs = new FileGenerationService();

            fgs.buildGameData(dms, pls, gs, "T:\\Work\\JunkOut\\testBuildGameDataFourDivisonsFivePicks.txt");
        }
        public void RunFileGenService_RescheduleDatesWhenRepeatTrue_OnlyOneFile()
        {
            var mailServiceSub = NSubstitute.Substitute.For <IMailService>();
            var transferToPayrollServiceSub = NSubstitute.Substitute.For <ITransferToPayrollService>();
            var datetimeNow = DateTime.Now;

            // Insert initial data
            var file1 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(datetimeNow),
                Repeat        = true
            });
            var file2 = fileRepoMock.Insert(new FileGenerationSchedule
            {
                DateTimestamp = Utilities.ToUnixTime(datetimeNow),
                Repeat        = false
            });

            var mail1 = mailRepoMock.Insert(new MailNotificationSchedule
            {
                DateTimestamp            = Utilities.ToUnixTime(datetimeNow),
                FileGenerationScheduleId = file1.Id,
                CustomText = "Custom test1",
            });

            var mail2 = mailRepoMock.Insert(new MailNotificationSchedule
            {
                DateTimestamp            = Utilities.ToUnixTime(datetimeNow),
                FileGenerationScheduleId = file1.Id,
                CustomText = "Custom test2",
            });

            var mail3 = mailRepoMock.Insert(new MailNotificationSchedule
            {
                DateTimestamp            = Utilities.ToUnixTime(datetimeNow),
                FileGenerationScheduleId = file2.Id,
                CustomText = "Custom test3",
            });

            var mail4 = mailRepoMock.Insert(new MailNotificationSchedule
            {
                DateTimestamp            = Utilities.ToUnixTime(datetimeNow),
                FileGenerationScheduleId = file2.Id,
                CustomText = "Custom test4",
            });

            file1.MailNotificationSchedules = new List <MailNotificationSchedule> {
                mail1, mail2
            };
            file2.MailNotificationSchedules = new List <MailNotificationSchedule> {
                mail3, mail4
            };

            var fileRepoEntriesCount = fileRepoList.Count;
            var mailRepoEntriesCount = mailRepoList.Count;

            // Run service call
            var service = new FileGenerationService(mailServiceSub, transferToPayrollServiceSub, mailRepoMock, fileRepoMock, _logger);

            service.RunFileGenerationService();

            // Asserts
            // 1. TransferReportsToPayroll called
            // 2. SendMailToAdmins(subject, message) called
            // 3. There are 1 more fileGenSchedule entries in the fileRepoMock
            // 4. The dates of the new entry are set to a month later compared to the file1
            // 5. There are 2 more entries in the mailRepoMock
            // 6. The new mailNotification objects have the correct FileGenerationScheduleId foreign keys - pointing to the correct fileGen created from the service (fileRepoList[2].Id)
            // 7. Custom text should be copied over to the new instance of the mail1 and mail2

            transferToPayrollServiceSub.Received().TransferReportsToPayroll();
            mailServiceSub.ReceivedWithAnyArgs().SendMailToAdmins("", "");
            var fileRepoEntriesAfterCall = fileRepoList.Count;
            var mailRepoEntriesAfterCall = mailRepoList.Count;

            Assert.AreEqual(fileRepoEntriesCount + 1, fileRepoEntriesAfterCall);
            Assert.AreEqual(fileRepoList[2].DateTimestamp, Utilities.ToUnixTime(datetimeNow.AddMonths(1)));
            Assert.AreEqual(mailRepoEntriesCount + 2, mailRepoEntriesAfterCall);
            Assert.AreEqual(mailRepoList[4].DateTimestamp, Utilities.ToUnixTime(datetimeNow.AddMonths(1)));
            Assert.AreEqual(mailRepoList[5].DateTimestamp, Utilities.ToUnixTime(datetimeNow.AddMonths(1)));
            Assert.AreEqual(mailRepoList[4].FileGenerationScheduleId, fileRepoList[2].Id);
            Assert.AreEqual(mailRepoList[5].FileGenerationScheduleId, fileRepoList[2].Id);
            Assert.AreEqual(mail1.CustomText, mailRepoList[4].CustomText);
            Assert.AreEqual(mail2.CustomText, mailRepoList[5].CustomText);
        }