예제 #1
0
        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);
        }
예제 #2
0
        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();
        }
예제 #4
0
        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);
        }
예제 #5
0
        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));
            }
        }
예제 #6
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());
        }