public void GroupLessonsExcludeIndividual() { var groups = new[] { "1", "2" }; var scheduleUpdaterMock = new Mock <IScheduleUpdater>(); var selectionUpdaterMock = new Mock <IStudentSelectionUpdater>(); var lessonInfo1 = new LessonInfo { Subject = "l1", Group = "g1" }; var lessonInfo2 = new LessonInfo { Subject = "l2", Group = "g2" }; var lessonInfo3 = new LessonInfo { Subject = "l3", Group = "g1" }; scheduleUpdaterMock.Setup(x => x.UpdateSchedule(It.Is <string[]>(s => s == groups))) .Returns(new[] { lessonInfo1, lessonInfo2, lessonInfo3 }); selectionUpdaterMock.Setup(x => x.Update()) .Returns(new List <StudentSelection> { new StudentSelection { Group = "g1", Name = "name", SpecCourseName = lessonInfo1.Subject } }); var individualScheduleBuilder = new IndividualScheduleBuilder(scheduleUpdaterMock.Object, selectionUpdaterMock.Object); var updateIndividualSchedule = individualScheduleBuilder.UpdateIndividualSchedule(groups); Assert.That(updateIndividualSchedule.GroupsLessons, Contains.Key(lessonInfo1.Group)); Assert.That(updateIndividualSchedule.GroupsLessons, Contains.Key(lessonInfo2.Group)); CollectionAssert.AreEquivalent(new[] { lessonInfo3 }, updateIndividualSchedule.GroupsLessons[lessonInfo1.Group]); CollectionAssert.AreEquivalent(new[] { lessonInfo2 }, updateIndividualSchedule.GroupsLessons[lessonInfo2.Group]); }
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)); } }
public void IndividualTasksCorrect() { var groups = new[] { "1", "2" }; var scheduleUpdaterMock = new Mock <IScheduleUpdater>(); var selectionUpdaterMock = new Mock <IStudentSelectionUpdater>(); var lessonInfo1 = new LessonInfo { Subject = "l1", Group = "g1" }; var lessonInfo2 = new LessonInfo { Subject = "l2", Group = "g2" }; var lessonInfo3 = new LessonInfo { Subject = "l3", Group = "g1" }; scheduleUpdaterMock.Setup(x => x.UpdateSchedule(It.Is <string[]>(s => s == groups))) .Returns(new[] { lessonInfo1, lessonInfo2, lessonInfo3 }); var studentSelection1 = new StudentSelection { Group = "g1", Name = "name", SpecCourseName = lessonInfo3.Subject }; var studentSelection2 = new StudentSelection { Group = studentSelection1.Group, Name = studentSelection1.Name, SpecCourseName = lessonInfo1.Subject }; selectionUpdaterMock.Setup(x => x.Update()) .Returns(new List <StudentSelection> { studentSelection1, studentSelection2 }); var individualScheduleBuilder = new IndividualScheduleBuilder(scheduleUpdaterMock.Object, selectionUpdaterMock.Object); var updateIndividualSchedule = individualScheduleBuilder.UpdateIndividualSchedule(groups); Assert.That(updateIndividualSchedule.StudentsLessons.Count, Is.EqualTo(1)); Assert.That(updateIndividualSchedule.StudentsLessons, Contains.Key(studentSelection1.Name)); Assert.That(updateIndividualSchedule.StudentsLessons.First().Value.Lessons, Contains.Item(lessonInfo1)); Assert.That(updateIndividualSchedule.StudentsLessons.First().Value.Lessons, Contains.Item(lessonInfo3)); Assert.That(updateIndividualSchedule.GroupsLessons, Does.Not.ContainKey(lessonInfo1.Group)); Assert.That(updateIndividualSchedule.GroupsLessons, Contains.Key(lessonInfo2.Group)); Assert.That(updateIndividualSchedule.GroupsLessons.Count, Is.EqualTo(1)); CollectionAssert.AreEquivalent(new[] { lessonInfo2 }, updateIndividualSchedule.GroupsLessons[lessonInfo2.Group]); }