public async Task ParallelRunTest(InMemoryMenuRepository repository) { Task[] tasks = new Task[100]; Fixture fixture = new Fixture(); for (int i = 0; i < tasks.Length; i++) { if (i % 2 == 0) { tasks[i] = Task.Run(async() => await SaveAndGetTest(repository, fixture.Create <Menu>())); } else { tasks[i] = Task.Run(async() => await DeleteTest(repository, fixture.Create <Menu>())); } } await Task.WhenAll(tasks); for (int i = 0; i < tasks.Length; i++) { Assert.False(tasks[i].IsFaulted, tasks[i].Exception?.Message); } }
public async Task SaveAndGetTest(InMemoryMenuRepository repository, Menu menu) { output.WriteLine($"Creating the menu '{menu.Id}' in the repository"); await repository.SaveAsync(menu); output.WriteLine($"Retrieving the menu '{menu.Id}' from the repository"); var dbItem = await repository.GetByIdAsync(menu.Id); Assert.NotNull(dbItem); Assert.Equal(dbItem.Id, menu.Id); Assert.Equal(dbItem.Name, menu.Name); Assert.Equal(dbItem.TenantId, menu.TenantId); Assert.Equal(dbItem.Description, menu.Description); Assert.Equal(dbItem.Enabled, menu.Enabled); Assert.Equal(dbItem.Categories, menu.Categories); }
public async Task DeleteTest(InMemoryMenuRepository repository, Menu menu) { output.WriteLine($"Creating the menu '{menu.Id}' in the repository"); await repository.SaveAsync(menu); output.WriteLine($"Retrieving the menu '{menu.Id}' from the repository"); var dbItem = await repository.GetByIdAsync(menu.Id); Assert.NotNull(dbItem); output.WriteLine($"Removing the menu '{menu.Id}' from the repository"); await repository.DeleteAsync(menu.Id); output.WriteLine($"Retrieving the menu '{menu.Id}' from the repository"); dbItem = await repository.GetByIdAsync(menu.Id); Assert.Null(dbItem); }