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); }
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"); }
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"); }
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); }