public async Task GetScheduleFromWebAsync_Throws_NetworkException_If_No_Connection() { var networkChecker = new Mock <INetworkChecker>(); var scheduleSettings = new Mock <IScheduleSettings>(); var httpClientService = new Mock <IHttpClientService>(); networkChecker.Setup(nc => nc.IsConnected()).Returns(false); var sut = new ScheduleDownloader(networkChecker.Object, scheduleSettings.Object, httpClientService.Object); Func <Task> act = async() => { await sut.GetScheduleFromWebAsync(DateTime.Now); }; await act.Should().ThrowAsync <NetworkException>(); }
public async Task Gets_Schedule_From_Web() { var date = DateTime.Now; var schedule = fixture.Create <WeekSchedule>(); var scheduleJson = JsonConvert.SerializeObject(schedule); var networkChecker = new Mock <INetworkChecker>(); var scheduleSettings = new Mock <IScheduleSettings>(); var httpClientService = new Mock <IHttpClientService>(); networkChecker.Setup(nc => nc.IsConnected()) .Returns(true); httpClientService.Setup(hs => hs.GetResponseAsStringAsync(It.IsAny <string>(), It.IsAny <CancellationToken>())) .ReturnsAsync(scheduleJson); scheduleSettings.Setup(ss => ss.GroupId).Returns(1); var sut = new ScheduleDownloader(networkChecker.Object, scheduleSettings.Object, httpClientService.Object); var result = await sut.GetScheduleFromWebAsync(date); result.Should().BeEquivalentTo(schedule, opt => opt.Excluding(s => s.LastUpdated)); }
static void Main(string[] args) { Console.WriteLine("Prepare data"); var instancesFolderName = "instances"; var schedulesFolderName = "schedules"; var scriptsFolderName = "scheduleScripts"; List <Instance> instancesList = new List <Instance>(); List <Schedule> scheduleList = new List <Schedule>(); Console.WriteLine($"Load instances from folder: {instancesFolderName}"); foreach (string file in Directory.EnumerateFiles(instancesFolderName, "*")) { // ### 1.1. load instances string contents = File.ReadAllText(file); // ### 1.2. parse instance file into instance Instance newInstance = new Instance(contents) { FileName = file }; // ### 1.3. update instances list instancesList.Add(newInstance); Console.WriteLine($"Instance: {file} - added "); } //if there is one arg run #MODE 2 - download schedules first if (args.Length == 1) { string scriptName = args[0]; Console.WriteLine($"Begin MODE 2, generate raport based on files from {instancesFolderName} and script name: {scriptName}"); ScheduleDownloader downloader = new ScheduleDownloader(); foreach (string file in Directory.EnumerateFiles(instancesFolderName, "*")) { string generatedFileName = file.Replace("/", "-") + "_" + downloadedSchedulName; string bashCommand = $"sh {scriptsFolderName}/{scriptName} {file} {schedulesFolderName}/{generatedFileName}"; Console.WriteLine($"Command execution: {bashCommand}"); Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); bashCommand.Bash(); //EXEC stopWatch.Stop(); TimeSpan ts = stopWatch.Elapsed; int elapsedTime = ts.Milliseconds; Console.WriteLine($"Schedule : {schedulesFolderName}/{downloadedSchedulName} - parsing"); //load schedule string contents = File.ReadAllText($"{schedulesFolderName}/{generatedFileName}"); //parse schedule file into schedule Schedule newSchedule = new Schedule(contents) { DownloadTime = elapsedTime, FileName = generatedFileName }; //update schedules list scheduleList.Add(newSchedule); Console.WriteLine($"Schedule : {schedulesFolderName}/{downloadedSchedulName} - added"); } } else //#MODE 1 { Console.WriteLine($"Begin MODE 1, generate raport based on files from {instancesFolderName} and {schedulesFolderName} folders"); foreach (string file in Directory.EnumerateFiles(schedulesFolderName, "*")) { // ### 2.1. load schedules string contents = File.ReadAllText(file); // ### 2.2 parse schedule file into schedule Schedule newSchedule = new Schedule(contents) { FileName = file }; // ### 2.3 update schedules list scheduleList.Add(newSchedule); } } Console.WriteLine($"Creating raport"); DiagnosticTool tool = new DiagnosticTool(); tool.ExportRaport(instancesList, scheduleList, dignosticFileName); Console.WriteLine($"All done"); }