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);
        }