public void PassCorrectData() { var parserMock = new Mock <IScheduleParser>(); parserMock .Setup(p => p.ParseTable(It.IsAny <HtmlDocument>(), It.IsAny <string>())) .Returns(new List <LessonInfo>()); var downloaderMock = new Mock <IWebDownloader>(); var data = @" <!DOCTYPE html> <html> <body> <h1>My First Heading</h1> </body> </html>"; downloaderMock.Setup(d => d.GetLoadStream(It.IsAny <string>())) .Returns(new MemoryStream(Encoding.UTF8.GetBytes(data))); var scheduleUpdater = new ScheduleUpdater("Some uri", parserMock.Object, downloaderMock.Object); scheduleUpdater.UpdateSchedule(new[] { "1" }); parserMock.Verify(p => p.ParseTable(It.Is <HtmlDocument>(d => d.ParsedText == data), It.Is <string>(s => s == "1")), Times.Once); }
public void FailToDownloadReturnNull() { var downloaderMock = new Mock <IWebDownloader>(); downloaderMock.Setup(d => d.GetLoadStream(It.IsAny <string>())).Throws <Exception>(); var scheduleUpdater = new ScheduleUpdater("", Mock.Of <IScheduleParser>(), downloaderMock.Object); var result = scheduleUpdater.UpdateSchedule(new[] { "" }); Assert.That(result, Is.Null); }
public void YPWGenerator_All_Test() { ScheduleUpdater upd = new ScheduleUpdater(); var list = upd.BuildWeekList(); String url = upd.GetScheduleUrl(new ScheduleUpdater.YPW() { Year = 2015, Week = 11, Phase = "REG" }); var xml = upd.getHtml(url); upd.Run(); }
public void DownloadAllGroupsSchedule() { const string baseUri = "BASE_URI/"; var parserMock = new Mock <IScheduleParser>(); parserMock .Setup(p => p.ParseTable(It.IsAny <HtmlDocument>(), It.IsAny <string>())) .Returns(new List <LessonInfo>()); var downloaderMock = new Mock <IWebDownloader>(); downloaderMock.Setup(d => d.GetLoadStream(It.IsAny <string>())).Returns(() => new MemoryStream()); var scheduleUpdater = new ScheduleUpdater(baseUri, parserMock.Object, downloaderMock.Object); scheduleUpdater.UpdateSchedule(new[] { "1", "2", "3" }); downloaderMock.Verify(d => d.GetLoadStream(It.Is <string>(s => s == baseUri + "1")), Times.Once); downloaderMock.Verify(d => d.GetLoadStream(It.Is <string>(s => s == baseUri + "2")), Times.Once); downloaderMock.Verify(d => d.GetLoadStream(It.Is <string>(s => s == baseUri + "3")), Times.Once); }
static void Main() { var httpClient = new HttpClient(); if (!httpClient.DefaultRequestHeaders.TryAddWithoutValidation( "Authorization", Environment.GetEnvironmentVariable("ScheduleStealerAuth"))) { Console.Error.WriteLine("Can't add authorization"); } var scheduleUpdater = new ScheduleUpdater(BaseUri, new ScheduleParser(), new WebDownloader()); var studentSelectionUpdater = new StudentSelectionUpdater("http://fit.nsu.ru/uch/bak/4-kurs-raspredelenie-po-distsiplinam-po-vyboru", new WebDownloader()); var individualScheduleBuilder = new IndividualScheduleBuilder(scheduleUpdater, studentSelectionUpdater); for (;;) { try { var res = individualScheduleBuilder.UpdateIndividualSchedule(Groups); var json = JsonConvert.SerializeObject(res); var stringContent = new StringContent(json, Encoding.UTF8, "application/json"); var httpResponseMessage = httpClient.PostAsync("https://nsutable.ru/api/schedule/", stringContent).Result; Console.Out.WriteLine("{0:HH:mm:ss tt}: {1}", DateTime.Now, httpResponseMessage.Content.ReadAsStringAsync().Result); } catch (Exception e) { Console.Error.WriteLine("{0:HH:mm:ss tt}: {1}", DateTime.Now, e.Message); Thread.Sleep(new TimeSpan(0, 5, 0)); } if (Console.KeyAvailable && Console.ReadLine() == "exit") { return; } Thread.Sleep(new TimeSpan(0, 5, 0)); } }
internal static void Main() { // Test connection to SQL Server Database.SetInitializer(new MigrateDatabaseToLatestVersion <AirportSystemMsSqlDbContext, ConfigurationMSSql>()); using (AirportSystemMsSqlDbContext db = new AirportSystemMsSqlDbContext()) { db.Database.CreateIfNotExists(); foreach (var e in db.FlightTypes) { Console.WriteLine(e.Name); } } // Test Deserializers var xmlSer = new XmlDeserializer(); var jsonSer = new JsonDeserializer(); var excelSer = new ExcelDeserializer(); var xmlPath = "../../../SampleInputFiles/sample.xml"; var jsonPath = "../../../SampleInputFiles/sample.json"; var excelPath = "../../../SampleInputFiles/sample.xlsx"; // Test repository var msSqlData = new AirportSystemMsSqlData(new AirportSystemMsSqlDbContext()); var pSqlData = new AirportSystemPSqlData(new AirportSystemPSqlDbContext()); var sqliteData = new AirportSystemSqliteData(new AirportSystemSqliteDbContext()); msSqlData.Airports.Add(new Airport { Code = "LBWN", Name = "Varna Airport" }); msSqlData.Airports.Add(new Airport { Code = "LBSF", Name = "Sofia Airport" }); msSqlData.Airlines.Add(new Airline { Name = "Bongo Air" }); Console.WriteLine(); Console.WriteLine("Airports:"); Console.WriteLine("=========="); foreach (var entity in msSqlData.Airports.GetAll(null)) { Console.WriteLine("{0} - {1}", entity.Code, entity.Name); } Console.WriteLine("Airlines:"); Console.WriteLine("=========="); foreach (var entity in msSqlData.Airlines.GetAll(null)) { Console.WriteLine("{0}", entity.Name); } // Test shedule updater var su = new ScheduleUpdater(msSqlData, pSqlData, sqliteData); int countAdded = 0; countAdded = su.UpdateScheduleFromFile(xmlPath, xmlSer); Console.WriteLine("{0} FLIGHTS ADDDED!!!", countAdded); countAdded = su.UpdateScheduleFromFile(jsonPath, jsonSer); Console.WriteLine("{0} FLIGHTS ADDDED!!!", countAdded); countAdded = su.UpdateScheduleFromFile(excelPath, excelSer); Console.WriteLine("{0} FLIGHTS ADDDED!!!", countAdded); Console.WriteLine(); var f = new FlightRepository(new AirportSystemMsSqlDbContext()); var allFlights = f.GetAll(null); foreach (var item in allFlights) { var fl = (Flight)item; Console.WriteLine("{0} - {1} - {2} - {3} - {4} - {5} - {6} - {7} - {8} - {9} - {10} - {11}", fl.DestinationAirport.Name, fl.DestinationAirport.Code, fl.FlightType.Name, fl.Plane.Manufacturers.Name, fl.Terminal.Name, fl.Plane.Airlines.Name, fl.Plane.PlanePassport.RegistrationNumber, fl.Plane.PlanePassport.YearOfRegistration, fl.Plane.PlanePassport.State, fl.SheduledTime, fl.Plane.Models.Name, fl.Plane.Models.Seats); } var filteredFlights = f.GetAll(x => x.DestinationAirportId == 3); Console.WriteLine(filteredFlights.Count()); }