1
0
mirror of https://github.com/XFox111/GUTSchedule.git synced 2026-04-22 06:58:01 +03:00

Parser improvements and fixes, Tests (#23)

* Added unit tests, fixed and improved parser

* Updated translation files

* Updated unit tests to work with credentials

* Updated validation CI config

* Updated changelogs, improved CI/CD processes
This commit is contained in:
Michael Gordeev
2020-04-20 17:51:42 +03:00
committed by GitHub
parent 8579f9bbc6
commit a07cb6fd3e
20 changed files with 267 additions and 36 deletions
@@ -0,0 +1,96 @@
using System;
using System.Threading.Tasks;
using GUTSchedule.Models;
using NUnit.Framework;
namespace GUTSchedule.Test
{
public class AnonymousScheduleUnitTest
{
[Test]
public async Task FacultiesListTest()
{
var list = await Parser.GetFaculties();
Assert.IsNotNull(list);
Assert.IsTrue(list.Count > 0);
Console.WriteLine("Faculties list:");
list.ForEach(i =>
Console.WriteLine($"{i.name} ({i.id})"));
}
[Test]
public async Task GroupListTest()
{
var faculties = await Parser.GetFaculties();
if (faculties == null || faculties.Count < 1)
{
Assert.Warn("No faculties found");
return;
}
var (id, name) = faculties[new Random().Next(0, faculties.Count)];
Console.WriteLine($"Randomly selected faculty: {name} ({id})");
var list = await Parser.GetGroups(id);
Assert.IsNotNull(list);
Assert.IsTrue(list.Count > 0);
Console.WriteLine("Groups list:");
list.ForEach(i =>
Console.WriteLine($"{i.name} ({i.id})"));
}
[Test]
public async Task ScheduleListTest()
{
var faculties = await Parser.GetFaculties();
if (faculties == null || faculties.Count < 1)
{
Assert.Warn("No faculties found");
return;
}
var faculty = faculties[new Random().Next(0, faculties.Count)];
Console.WriteLine($"Randomly selected faculty: {faculty.name} ({faculty.id})");
var groups = await Parser.GetGroups(faculty.id);
if (groups == null || groups.Count < 1)
{
Assert.Warn("No groups found");
return;
}
var group = groups[new Random().Next(0, groups.Count)];
Console.WriteLine($"Randomly selected group: {group.name} ({group.id})");
try
{
var list = await Parser.GetSchedule(new DefaultExportParameters
{
Course = "0",
FacultyId = faculty.id,
GroupId = group.id,
EndDate = DateTime.Today.AddDays(7),
StartDate = DateTime.Today
});
Assert.IsNotNull(list);
Assert.IsTrue(list.Count > 0);
Console.WriteLine("Events list:");
foreach (var i in list)
{
Console.WriteLine("--------------------------------------------------");
Console.WriteLine($"[{i.Group}] {i.Order}. {i.Name} ({i.Type})");
Console.WriteLine(i.Cabinet);
Console.WriteLine(i.StartTime.ToShortDateString());
Console.WriteLine($"{i.StartTime.ToShortTimeString()}-{i.EndTime.ToShortTimeString()}");
Console.WriteLine(i.Opponent);
}
}
catch (NullReferenceException e)
{
Assert.Warn(e.Message);
}
}
}
}
@@ -0,0 +1,40 @@
using NUnit.Framework;
using System.Threading.Tasks;
using GUTSchedule.Models;
using System;
using Newtonsoft.Json;
using System.IO;
namespace GUTSchedule.Test
{
public class CabinetScheduleUnitTest
{
[Test]
public async Task ScheduleListTest()
{
dynamic secrets = JsonConvert.DeserializeObject(File.ReadAllText(Directory.GetCurrentDirectory() + "\\TestCredential.json"));
var list = await Parser.GetSchedule(new CabinetExportParameters
{
Email = secrets.testEmail,
Password = secrets.testPassword,
EndDate = DateTime.Today.AddDays(7),
StartDate = DateTime.Today
});
Assert.IsNotNull(list);
Assert.IsTrue(list.Count > 0);
Console.WriteLine("Events list:");
foreach (var i in list)
{
Console.WriteLine("--------------------------------------------------");
Console.WriteLine($"[{i.Group}] {i.Order}. {i.Name} ({i.Type})");
Console.WriteLine(i.Cabinet);
Console.WriteLine(i.StartTime.ToShortDateString());
Console.WriteLine($"{i.StartTime.ToShortTimeString()}-{i.EndTime.ToShortTimeString()}");
Console.WriteLine(i.Opponent);
}
}
}
}
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<IsPackable>false</IsPackable>
<UserSecretsId>f8ba6b25-bdcb-442c-98aa-3bcf31300ad0</UserSecretsId>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.UserSecrets" Version="3.0.0" />
<PackageReference Include="nunit" Version="3.12.0" />
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\GUTSchedule\GUTSchedule.csproj" />
</ItemGroup>
<ItemGroup>
<None Update="TestCredential.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
@@ -0,0 +1,4 @@
{
"testEmail": "%EMAIL%",
"testPassword": "%PASSWORD%"
}