public async Task Test(string fileName) { using var stream = File.Open($"TemplateTests/{fileName}", FileMode.Open); IFormFile file = Substitute.For <IFormFile>(); file.OpenReadStream().Returns(stream); var command = new ProductTemplateCommand(Substitute.For <AppSettings>()); var parsed = await command.ParseProductTemplate(file, new VerifiedUserContext(new ClaimsPrincipal())); Assert.IsTrue(parsed.Count == 1); // total product count Assert.IsTrue(parsed.FirstOrDefault()?.Product.ID == "example_id"); // price schedules test Assert.IsTrue(parsed.FirstOrDefault()?.PriceSchedule.ID == "example_ps_id"); Assert.IsTrue(parsed.FirstOrDefault()?.PriceSchedule.ProductID == "example_id"); // specs test Assert.IsTrue(parsed.FirstOrDefault()?.Specs.Count == 2); Assert.IsTrue(parsed.FirstOrDefault()?.Specs.All(s => s.ProductID == "example_id")); // spec options test var spec = parsed.FirstOrDefault()?.Specs.FirstOrDefault(s => s.ID == "example_spec_id_color"); Assert.IsTrue(parsed.FirstOrDefault()?.SpecOptions.Count == 2); // images test Assert.IsTrue(parsed.FirstOrDefault()?.Images.Count == 1); Assert.IsTrue(parsed.FirstOrDefault()?.Images.FirstOrDefault()?.ProductID == "example_id"); // attachments test Assert.IsTrue(parsed.FirstOrDefault()?.Attachments.Count == 1); Assert.IsTrue(parsed.FirstOrDefault()?.Attachments.FirstOrDefault()?.ProductID == "example_id"); }
public async Task TimerTest(string fileName, string type) { using var stream = File.Open($"TemplateTests/{fileName}", FileMode.Open); var file = Substitute.For <IFormFile>(); file.OpenReadStream().Returns(stream); var command = new ProductTemplateCommand(Substitute.For <AppSettings>()); var timer = new Stopwatch(); timer.Start(); switch (type) { case "flat": await command.ParseProductTemplateFlat(file, new VerifiedUserContext(new ClaimsPrincipal())); break; case "related": await command.ParseProductTemplate(file, new VerifiedUserContext(new ClaimsPrincipal())); break; } timer.Stop(); Assert.IsTrue(timer.Elapsed.Minutes < 5, $"Elapsed time for {type}: {timer.Elapsed.Minutes}"); }