diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1 @@
+{}
\ No newline at end of file
diff --git a/ToDoList/ToDoList.sln b/ToDoList/ToDoList.sln
index f8c142d..fe2bc36 100644
--- a/ToDoList/ToDoList.sln
+++ b/ToDoList/ToDoList.sln
@@ -15,7 +15,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToDoList.Test", "tests\ToDo
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToDoList.Persistence", "src\ToDoList.Persistence\ToDoList.Persistence.csproj", "{9D93325A-6242-4417-AF1B-7B06DB3A7864}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToDoList.Frontend", "src\ToDoList.Frontend\ToDoList.Frontend.csproj", "{2A4A356C-0F7A-476E-88C9-E101784C9F30}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ToDoList.Frontend", "src\ToDoList.Frontend\ToDoList.Frontend.csproj", "{04CA31F5-49D8-4978-B917-98D3B10CD156}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -42,16 +42,16 @@ Global
{9D93325A-6242-4417-AF1B-7B06DB3A7864}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9D93325A-6242-4417-AF1B-7B06DB3A7864}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9D93325A-6242-4417-AF1B-7B06DB3A7864}.Release|Any CPU.Build.0 = Release|Any CPU
- {2A4A356C-0F7A-476E-88C9-E101784C9F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {2A4A356C-0F7A-476E-88C9-E101784C9F30}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {2A4A356C-0F7A-476E-88C9-E101784C9F30}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {2A4A356C-0F7A-476E-88C9-E101784C9F30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {04CA31F5-49D8-4978-B917-98D3B10CD156}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {04CA31F5-49D8-4978-B917-98D3B10CD156}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {04CA31F5-49D8-4978-B917-98D3B10CD156}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {04CA31F5-49D8-4978-B917-98D3B10CD156}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{D8E3A966-671F-4E7C-86BD-B51066E39B67} = {36FD4317-29CD-4B7B-AA95-92F1582DEC01}
{61CAF0A1-2EBB-410B-BB40-DA9590E88664} = {36FD4317-29CD-4B7B-AA95-92F1582DEC01}
{EEB409BA-8B59-4C14-84D3-301E75F542C4} = {D78FC9D1-46B7-4F93-AE9A-24719D8C82D2}
{9D93325A-6242-4417-AF1B-7B06DB3A7864} = {36FD4317-29CD-4B7B-AA95-92F1582DEC01}
- {2A4A356C-0F7A-476E-88C9-E101784C9F30} = {36FD4317-29CD-4B7B-AA95-92F1582DEC01}
+ {04CA31F5-49D8-4978-B917-98D3B10CD156} = {36FD4317-29CD-4B7B-AA95-92F1582DEC01}
EndGlobalSection
EndGlobal
diff --git a/ToDoList/data/localdb.db b/ToDoList/data/localdb.db
index cce3bb7..387de4f 100644
Binary files a/ToDoList/data/localdb.db and b/ToDoList/data/localdb.db differ
diff --git a/ToDoList/src/ToDoList.Frontend/Components/AhojSvete.razor b/ToDoList/src/ToDoList.Frontend/Components/AhojSvete.razor
new file mode 100644
index 0000000..9b3d293
--- /dev/null
+++ b/ToDoList/src/ToDoList.Frontend/Components/AhojSvete.razor
@@ -0,0 +1,12 @@
+@page "/AhojSvete"
+
+Ahoj svete
+
+
@ahojSvete
+
+Vítej v moji aplikaci.
+
+@code
+{
+ string ahojSvete = "Ahoj světe přes c# z jiné stránky!";
+}
diff --git a/ToDoList/src/ToDoList.Frontend/Components/Pages/AhojSvete.razor b/ToDoList/src/ToDoList.Frontend/Components/Pages/AhojSvete.razor
deleted file mode 100644
index b8404e9..0000000
--- a/ToDoList/src/ToDoList.Frontend/Components/Pages/AhojSvete.razor
+++ /dev/null
@@ -1,12 +0,0 @@
-@page "/AhojSvete"
-
-Home
-
-@ahojSvete
-
-Vítej v mojí aplikaci.
-
-@code
-{
- string ahojSvete = "Ahoj světe z jiné stránky!";
-}
diff --git a/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard muj.razor b/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard muj.razor
new file mode 100644
index 0000000..03501b6
--- /dev/null
+++ b/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard muj.razor
@@ -0,0 +1,82 @@
+@page "/mujDashboard"
+@rendermode InteractiveServer
+
+DashBoard
+
+
+
+
+ |
+ ID Seřadit
+
+ |
+
+ Name Seřadit
+
+ |
+
+
+
+
+ @foreach (var todoItem in toDoItems)
+ {
+
+ | @todoItem.ToDoItemId |
+ @todoItem.Name |
+
+ }
+
+
+
+@code {
+/* public string GenerateTable()
+{
+ var html = new System.Text.StringBuilder();
+ html.Append("");
+ foreach (var todoitem in toDoItems)
+ {
+ html.Append("");
+ html.Append($"| {todoitem.ToDoItemId} | ");
+ html.Append($"{todoitem.Name} | ");
+ html.Append("
");
+ }
+ html.Append("
");
+ return html.ToString();
+}*/
+ private List toDoItems = new List
+ {
+ new ToDoItemView { ToDoItemId = 1, Name = "Udělat úkol na Czechitas", IsCompleted = false },
+ new ToDoItemView { ToDoItemId = 2, Name = "Udělat nepovinný úkol na Czechitas", IsCompleted = false }
+ };
+
+ private bool isSortedByIdAscending = true;
+ private bool isSortedByNameAscending = true;
+
+ private void OrderById()
+ {
+ if (isSortedByIdAscending)
+ toDoItems = toDoItems.OrderByDescending(item => item.ToDoItemId).ToList();
+ else
+ toDoItems = toDoItems.OrderBy(item => item.ToDoItemId).ToList();
+
+ isSortedByIdAscending = !isSortedByIdAscending;
+ }
+
+ private void OrderByName()
+ {
+ if (isSortedByNameAscending)
+ toDoItems = toDoItems.OrderByDescending(item => item.Name).ToList();
+ else
+ toDoItems = toDoItems.OrderBy(item => item.Name).ToList();
+
+ isSortedByNameAscending = !isSortedByNameAscending;
+ }
+
+ public class ToDoItemView
+ {
+ public int ToDoItemId { get; set; }
+ public string Name { get; set; }
+ public string Description { get; set; }
+ public bool IsCompleted { get; set; }
+ }
+}
diff --git a/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard.razor b/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard.razor
new file mode 100644
index 0000000..219bd97
--- /dev/null
+++ b/ToDoList/src/ToDoList.Frontend/Components/Pages/DashBoard.razor
@@ -0,0 +1,48 @@
+@using ToDoList.Frontend.Views
+@using ToDoList.Frontend.Clients
+@inject IToDoItemsClient ToDoItemsClient
+@rendermode InteractiveServer
+
+Dashboard
+
+
+
+ |
+ |
+ |
+ |
+
+@if(toDoItems!=null)
+{
+
+}
+ @foreach(var toDoItem in toDoItems)
+ {
+
+ | @toDoItem.ToDoItemId |
+ @toDoItem.Name |
+ @toDoItem.Description |
+ @toDoItem.IsCompleted |
+
+ }
+
+
+
+@code
+{
+ protected override async Task OnInitializedAsync()
+ {
+ toDoItems = await ToDoItemsClient.ReadItemsAsync();
+ }
+ private List? toDoItems = [];
+
+ public void OrderByName()
+ {
+ toDoItems = toDoItems?.OrderBy(x => x.Name).ToList();
+ }
+
+ public void OrderById()
+ {
+ toDoItems = toDoItems?.OrderBy(x => x.ToDoItemId).ToList();
+ }
+}
diff --git a/ToDoList/src/ToDoList.Frontend/Components/Pages/Home.razor b/ToDoList/src/ToDoList.Frontend/Components/Pages/Home.razor
index 5c56c98..eaae7fd 100644
--- a/ToDoList/src/ToDoList.Frontend/Components/Pages/Home.razor
+++ b/ToDoList/src/ToDoList.Frontend/Components/Pages/Home.razor
@@ -1,27 +1,55 @@
@page "/"
@rendermode InteractiveServer
+Domovska stranka
-Home
+
-
+
+
}
diff --git a/ToDoList/src/ToDoList.Frontend/Program.cs b/ToDoList/src/ToDoList.Frontend/Program.cs
index b85f5ad..5b6ea19 100644
--- a/ToDoList/src/ToDoList.Frontend/Program.cs
+++ b/ToDoList/src/ToDoList.Frontend/Program.cs
@@ -5,7 +5,10 @@
// Add services to the container.
builder.Services.AddRazorComponents()
- .AddInteractiveServerComponents();
+.AddInteractiveServerComponents();
+
+builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5000") });
+builder.Services.AddScoped();
builder.Services.AddScoped(sp => new HttpClient { BaseAddress = new Uri("http://localhost:5000") });
builder.Services.AddScoped();
@@ -26,6 +29,6 @@
app.UseAntiforgery();
app.MapRazorComponents()
- .AddInteractiveServerRenderMode();
+.AddInteractiveServerRenderMode();
app.Run();
diff --git a/ToDoList/src/ToDoList.Persistence/Repositories/IRepository.cs b/ToDoList/src/ToDoList.Persistence/Repositories/IRepository.cs
index 2a984fb..e0ab452 100644
--- a/ToDoList/src/ToDoList.Persistence/Repositories/IRepository.cs
+++ b/ToDoList/src/ToDoList.Persistence/Repositories/IRepository.cs
@@ -8,3 +8,11 @@ public interface IRepository where T : class
public void Update(T item);
public void Delete(T item);
}
+public interface IRepositoryAsync where T : class
+{
+ public Task CreateAsync(T item);
+ public Task> ReadAllAsync();
+ public Task ReadByIdAsync(int id);
+ public Task UpdateAsync(T item);
+ public Task DeleteAsync(T item);
+}
diff --git a/ToDoList/src/ToDoList.Persistence/Repositories/ToDoItemsRepository.cs b/ToDoList/src/ToDoList.Persistence/Repositories/ToDoItemsRepository.cs
index 3f4cae5..8e448e5 100644
--- a/ToDoList/src/ToDoList.Persistence/Repositories/ToDoItemsRepository.cs
+++ b/ToDoList/src/ToDoList.Persistence/Repositories/ToDoItemsRepository.cs
@@ -1,9 +1,12 @@
namespace ToDoList.Persistence.Repositories;
using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using Microsoft.EntityFrameworkCore;
using ToDoList.Domain.Models;
-public class ToDoItemsRepository : IRepository
+public class ToDoItemsRepository : IRepositoryAsync
{
private readonly ToDoItemsContext context;
@@ -12,22 +15,31 @@ public ToDoItemsRepository(ToDoItemsContext context)
this.context = context;
}
- public void Create(ToDoItem item)
+ public async Task CreateAsync(ToDoItem item)
{
- context.ToDoItems.Add(item);
- context.SaveChanges();
+ await context.ToDoItems.AddAsync(item);
+ await context.SaveChangesAsync();
}
- public IEnumerable ReadAll() => context.ToDoItems.ToList();
- public ToDoItem? ReadById(int id) => context.ToDoItems.Find(id);
- public void Update(ToDoItem item)
+
+ public async Task> ReadAllAsync()
+ {
+ return await context.ToDoItems.ToListAsync();
+ }
+
+ public async Task ReadByIdAsync(int id)
+ {
+ return await context.ToDoItems.FindAsync(id);
+ }
+
+ public async Task UpdateAsync(ToDoItem item)
{
context.Entry(item).CurrentValues.SetValues(item);
- context.SaveChanges();
+ await context.SaveChangesAsync();
}
- public void Delete(ToDoItem item)
+ public async Task DeleteAsync(ToDoItem item)
{
context.ToDoItems.Remove(item);
- context.SaveChanges();
+ await context.SaveChangesAsync();
}
}
diff --git a/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsController.cs b/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsController.cs
index bf9faf7..3d97cd6 100644
--- a/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsController.cs
+++ b/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsController.cs
@@ -1,5 +1,9 @@
namespace ToDoList.WebApi.Controllers;
+
using Microsoft.AspNetCore.Mvc;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
using ToDoList.Domain.DTOs;
using ToDoList.Domain.Models;
using ToDoList.Persistence.Repositories;
@@ -8,123 +12,113 @@ namespace ToDoList.WebApi.Controllers;
[Route("api/[controller]")]
public class ToDoItemsController : ControllerBase
{
- private readonly IRepository repository;
+ private readonly IRepositoryAsync repository;
- public ToDoItemsController(IRepository repository)
+ public ToDoItemsController(IRepositoryAsync repository)
{
this.repository = repository;
}
[HttpPost]
- public ActionResult Create(ToDoItemCreateRequestDto request)
+ public async Task> CreateAsync(ToDoItemCreateRequestDto request)
{
- //map to Domain object as soon as possible
var item = request.ToDomain();
- //try to create an item
try
{
- repository.Create(item);
+ await repository.CreateAsync(item);
}
catch (Exception ex)
{
- return Problem(ex.Message, null, StatusCodes.Status500InternalServerError); //500
+ return Problem(ex.Message, null, StatusCodes.Status500InternalServerError);
}
- //respond to client
return CreatedAtAction(
- nameof(ReadById),
+ nameof(ReadByIdAsync),
new { toDoItemId = item.ToDoItemId },
- ToDoItemGetResponseDto.FromDomain(item)); //201
+ ToDoItemGetResponseDto.FromDomain(item));
}
[HttpGet]
- public ActionResult> Read()
+ public async Task>> ReadAsync()
{
IEnumerable itemsToGet;
+
try
{
- itemsToGet = repository.ReadAll();
+ itemsToGet = await repository.ReadAllAsync();
}
catch (Exception ex)
{
- return Problem(ex.Message, null, StatusCodes.Status500InternalServerError); //500
+ return Problem(ex.Message, null, StatusCodes.Status500InternalServerError);
}
- //respond to client
- return (itemsToGet is null || !itemsToGet.Any())
- ? NotFound() //404
- : Ok(itemsToGet.Select(ToDoItemGetResponseDto.FromDomain)); //200
+ return itemsToGet is null || !itemsToGet.Any()
+ ? NotFound()
+ : Ok(itemsToGet.Select(ToDoItemGetResponseDto.FromDomain));
}
[HttpGet("{toDoItemId:int}")]
- public ActionResult ReadById(int toDoItemId)
+ public async Task> ReadByIdAsync(int toDoItemId)
{
- //try to retrieve the item by id
ToDoItem? itemToGet;
+
try
{
- itemToGet = repository.ReadById(toDoItemId);
+ itemToGet = await repository.ReadByIdAsync(toDoItemId);
}
catch (Exception ex)
{
- return Problem(ex.Message, null, StatusCodes.Status500InternalServerError); //500
+ return Problem(ex.Message, null, StatusCodes.Status500InternalServerError);
}
- //respond to client
- return (itemToGet is null)
- ? NotFound() //404
- : Ok(ToDoItemGetResponseDto.FromDomain(itemToGet)); //200
+ return itemToGet is null
+ ? NotFound()
+ : Ok(ToDoItemGetResponseDto.FromDomain(itemToGet));
}
[HttpPut("{toDoItemId:int}")]
- public IActionResult UpdateById(int toDoItemId, [FromBody] ToDoItemUpdateRequestDto request)
+ public async Task UpdateByIdAsync(int toDoItemId, [FromBody] ToDoItemUpdateRequestDto request)
{
- //map to Domain object as soon as possible
var updatedItem = request.ToDomain();
updatedItem.ToDoItemId = toDoItemId;
- //try to update the item by retrieving it with given id
try
{
- //retrieve the item
- var itemToUpdate = repository.ReadById(toDoItemId);
+ var itemToUpdate = await repository.ReadByIdAsync(toDoItemId);
if (itemToUpdate is null)
{
- return NotFound(); //404
+ return NotFound();
}
- repository.Update(updatedItem);
+ await repository.UpdateAsync(updatedItem);
}
catch (Exception ex)
{
- return Problem(ex.Message, null, StatusCodes.Status500InternalServerError); //500
+ return Problem(ex.Message, null, StatusCodes.Status500InternalServerError);
}
- //respond to client
- return NoContent(); //204
+ return NoContent();
}
[HttpDelete("{toDoItemId:int}")]
- public IActionResult DeleteById(int toDoItemId)
+ public async Task DeleteByIdAsync(int toDoItemId)
{
- //try to delete the item
try
{
- var itemToDelete = repository.ReadById(toDoItemId);
+ var itemToDelete = await repository.ReadByIdAsync(toDoItemId);
if (itemToDelete is null)
{
- return NotFound(); //404
+ return NotFound();
}
- repository.Delete(itemToDelete);
+ await repository.DeleteAsync(itemToDelete);
}
catch (Exception ex)
{
return Problem(ex.Message, null, StatusCodes.Status500InternalServerError);
}
- //respond to client
- return NoContent(); //204
+ return NoContent();
}
}
diff --git a/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsRequests.http b/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsRequests.http
index 4ef60a7..7f0bdd0 100644
--- a/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsRequests.http
+++ b/ToDoList/src/ToDoList.WebApi/Controllers/ToDoItemsRequests.http
@@ -27,7 +27,7 @@ Content-Type: application/json
###
//Update existing ToDoItem by id
-@itemToUpdateId = 1
+@itemToUpdateId = 9
PUT {{host}}:{{port}}/api/ToDoItems/{{itemToUpdateId}}
Content-Type: application/json
@@ -41,5 +41,5 @@ Content-Type: application/json
###
//Delete exisiting ToDoItem by id
-@itemToDeleteId = 1
+@itemToDeleteId = 4
DELETE {{host}}:{{port}}/api/ToDoItems/{{itemToDeleteId}}
diff --git a/ToDoList/src/ToDoList.WebApi/Program.cs b/ToDoList/src/ToDoList.WebApi/Program.cs
index c90426b..7f0d542 100644
--- a/ToDoList/src/ToDoList.WebApi/Program.cs
+++ b/ToDoList/src/ToDoList.WebApi/Program.cs
@@ -10,7 +10,7 @@
//Persistence services
builder.Services.AddDbContext(); // pridalo ToDoItemsContext
- builder.Services.AddScoped, ToDoItemsRepository>(); // pridalo ToDoItemsRepository
+ builder.Services.AddScoped, ToDoItemsRepository>(); // pridalo ToDoItemsRepository
}
var app = builder.Build();
diff --git a/ToDoList/tests/ToDoList.Test/IntegrationTests/DeleteTests.cs b/ToDoList/tests/ToDoList.Test/IntegrationTests/DeleteTests.cs
index 6f10514..a58f64e 100644
--- a/ToDoList/tests/ToDoList.Test/IntegrationTests/DeleteTests.cs
+++ b/ToDoList/tests/ToDoList.Test/IntegrationTests/DeleteTests.cs
@@ -9,7 +9,7 @@ namespace ToDoList.Test.IntegrationTests;
public class DeleteTests
{
[Fact]
- public void Delete_ValidId_ReturnsNoContent()
+ public async void Delete_ValidId_ReturnsNoContent()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -25,14 +25,14 @@ public void Delete_ValidId_ReturnsNoContent()
context.SaveChanges();
// Act
- var result = controller.DeleteById(toDoItem.ToDoItemId);
+ var result = await controller.DeleteByIdAsync(toDoItem.ToDoItemId);
// Assert
Assert.IsType(result);
}
[Fact]
- public void Delete_InvalidId_ReturnsNotFound()
+ public async void Delete_InvalidId_ReturnsNotFound()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -49,7 +49,7 @@ public void Delete_InvalidId_ReturnsNotFound()
// Act
var invalidId = -1;
- var result = controller.DeleteById(invalidId);
+ var result =await controller.DeleteByIdAsync(invalidId);
// Assert
Assert.IsType(result);
diff --git a/ToDoList/tests/ToDoList.Test/IntegrationTests/GetByIdTests.cs b/ToDoList/tests/ToDoList.Test/IntegrationTests/GetByIdTests.cs
index a16bc7f..a2a96be 100644
--- a/ToDoList/tests/ToDoList.Test/IntegrationTests/GetByIdTests.cs
+++ b/ToDoList/tests/ToDoList.Test/IntegrationTests/GetByIdTests.cs
@@ -9,7 +9,7 @@ namespace ToDoList.Test.IntegrationTests;
public class GetByIdTests
{
[Fact]
- public void GetById_ValidId_ReturnsItem()
+ public async Task GetById_ValidId_ReturnsItem()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -25,7 +25,7 @@ public void GetById_ValidId_ReturnsItem()
context.SaveChanges();
// Act
- var result = controller.ReadById(toDoItem.ToDoItemId);
+ var result = await controller.ReadByIdAsync(toDoItem.ToDoItemId);
var resultResult = result.Result;
var value = result.GetValue();
@@ -40,7 +40,7 @@ public void GetById_ValidId_ReturnsItem()
}
[Fact]
- public void GetById_InvalidId_ReturnsNotFound()
+ public async Task GetById_InvalidId_ReturnsNotFound()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -58,7 +58,7 @@ public void GetById_InvalidId_ReturnsNotFound()
// Act
var invalidId = -1;
- var result = controller.ReadById(invalidId);
+ var result =await controller.ReadByIdAsync(invalidId);
var resultResult = result.Result;
// Assert
diff --git a/ToDoList/tests/ToDoList.Test/IntegrationTests/GetTests.cs b/ToDoList/tests/ToDoList.Test/IntegrationTests/GetTests.cs
index 118c62e..7666254 100644
--- a/ToDoList/tests/ToDoList.Test/IntegrationTests/GetTests.cs
+++ b/ToDoList/tests/ToDoList.Test/IntegrationTests/GetTests.cs
@@ -9,7 +9,7 @@ namespace ToDoList.Test.IntegrationTests;
public class GetTests
{
[Fact]
- public void Get_AllItems_ReturnsAllItems()
+ public async Task Get_AllItems_ReturnsAllItems()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -26,7 +26,7 @@ public void Get_AllItems_ReturnsAllItems()
context.SaveChanges();
// Act
- var result = controller.Read();
+ var result =await controller.ReadAsync();
var resultResult = result.Result;
var value = result.GetValue();
diff --git a/ToDoList/tests/ToDoList.Test/IntegrationTests/PostTests.cs b/ToDoList/tests/ToDoList.Test/IntegrationTests/PostTests.cs
index 0c02405..7cb98c4 100644
--- a/ToDoList/tests/ToDoList.Test/IntegrationTests/PostTests.cs
+++ b/ToDoList/tests/ToDoList.Test/IntegrationTests/PostTests.cs
@@ -9,7 +9,7 @@ namespace ToDoList.Test.IntegrationTests;
public class PostTests
{
[Fact]
- public void Post_ValidRequest_ReturnsNewItem()
+ public async void Post_ValidRequest_ReturnsNewItem()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -22,7 +22,7 @@ public void Post_ValidRequest_ReturnsNewItem()
);
// Act
- var result = controller.Create(request);
+ var result = await controller.CreateAsync(request);
var resultResult = result.Result;
var value = result.GetValue();
diff --git a/ToDoList/tests/ToDoList.Test/IntegrationTests/PutTests.cs b/ToDoList/tests/ToDoList.Test/IntegrationTests/PutTests.cs
index bcda2b4..b0547b0 100644
--- a/ToDoList/tests/ToDoList.Test/IntegrationTests/PutTests.cs
+++ b/ToDoList/tests/ToDoList.Test/IntegrationTests/PutTests.cs
@@ -10,7 +10,7 @@ namespace ToDoList.Test.IntegrationTests;
public class PutTests
{
[Fact]
- public void Put_ValidId_ReturnsNoContent()
+ public async Task Put_ValidId_ReturnsNoContent()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -32,14 +32,14 @@ public void Put_ValidId_ReturnsNoContent()
);
// Act
- var result = controller.UpdateById(toDoItem.ToDoItemId, request);
+ var result = await controller.UpdateByIdAsync(toDoItem.ToDoItemId, request);
// Assert
Assert.IsType(result);
}
[Fact]
- public void Put_InvalidId_ReturnsNotFound()
+ public async Task Put_InvalidId_ReturnsNotFound()
{
// Arrange
var context = new ToDoItemsContext("Data Source=../../../../../data/localdb.db");
@@ -62,7 +62,7 @@ public void Put_InvalidId_ReturnsNotFound()
// Act
var invalidId = -1;
- var result = controller.UpdateById(invalidId, request);
+ var result = await controller.UpdateByIdAsync(invalidId, request);
// Assert
Assert.IsType(result);
diff --git a/ToDoList/tests/ToDoList.Test/ToDoList.Test.csproj b/ToDoList/tests/ToDoList.Test/ToDoList.Test.csproj
index 13060b5..99fd0eb 100644
--- a/ToDoList/tests/ToDoList.Test/ToDoList.Test.csproj
+++ b/ToDoList/tests/ToDoList.Test/ToDoList.Test.csproj
@@ -22,6 +22,7 @@
+
diff --git a/ToDoList/tests/ToDoList.Test/UnitTests/DeleteTests.cs b/ToDoList/tests/ToDoList.Test/UnitTests/DeleteTests.cs
index 022b226..528de41 100644
--- a/ToDoList/tests/ToDoList.Test/UnitTests/DeleteTests.cs
+++ b/ToDoList/tests/ToDoList.Test/UnitTests/DeleteTests.cs
@@ -11,76 +11,76 @@ namespace ToDoList.Test.UnitTests;
public class DeleteUnitTests
{
[Fact]
- public void Delete_DeleteByIdValidItemId_ReturnsNoContent()
+ public async Task Delete_DeleteByIdValidItemId_ReturnsNoContent_Async()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadById(Arg.Any()).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
+ repositoryMock.ReadByIdAsync(Arg.Any()).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
var someId = 1;
// Act
- var result = controller.DeleteById(someId);
+ var result = await controller.DeleteByIdAsync(someId);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
- repositoryMock.Received(1).Delete(Arg.Any());
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
+ await repositoryMock.Received(1).DeleteAsync(Arg.Any());
}
[Fact]
- public void Delete_DeleteByIdInvalidItemId_ReturnsNotFound()
+ public async Task Delete_DeleteByIdInvalidItemId_ReturnsNotFound_Async()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadById(Arg.Any()).Returns(null as ToDoItem);
+ repositoryMock.ReadByIdAsync(Arg.Any()).Returns(null as ToDoItem);
var someId = 1;
// Act
- var result = controller.DeleteById(someId);
+ var result = await controller.DeleteByIdAsync(someId);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
- repositoryMock.Received(0).Delete(Arg.Any()); // make sure nothing was deleted
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
+ await repositoryMock.Received(0).DeleteAsync(Arg.Any());
}
[Fact]
- public void Delete_DeleteByIdExceptionOccurredDuringRepositoryReadById_ReturnsInternalServerError()
+ public async Task Delete_DeleteByIdExceptionOccurredDuringRepositoryReadById_ReturnsInternalServerError_Async()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadById(Arg.Any()).Throws(new Exception());
+ repositoryMock.When(r => r.ReadByIdAsync(Arg.Any())).Do(x => throw new Exception());
var someId = 1;
// Act
- var result = controller.DeleteById(someId);
+ var result = await controller.DeleteByIdAsync(someId);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
Assert.Equal(StatusCodes.Status500InternalServerError, ((ObjectResult)result).StatusCode);
}
[Fact]
- public void Delete_DeleteByIdExceptionOccurredDuringRepositoryDelete_ReturnsInternalServerError()
+ public async Task Delete_DeleteByIdExceptionOccurredDuringRepositoryDelete_ReturnsInternalServerError_Async()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadById(Arg.Any()).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
- repositoryMock.When(r => r.Delete(Arg.Any())).Do(r => throw new Exception());
+ repositoryMock.ReadByIdAsync(Arg.Any()).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
+ repositoryMock.When(r => r.DeleteAsync(Arg.Any())).Do(x => throw new Exception());
var someId = 1;
// Act
- var result = controller.DeleteById(someId);
+ var result = await controller.DeleteByIdAsync(someId);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
- repositoryMock.Received(1).Delete(Arg.Any());
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
+ await repositoryMock.Received(1).DeleteAsync(Arg.Any());
Assert.Equal(StatusCodes.Status500InternalServerError, ((ObjectResult)result).StatusCode);
}
}
diff --git a/ToDoList/tests/ToDoList.Test/UnitTests/GetByIdTests.cs b/ToDoList/tests/ToDoList.Test/UnitTests/GetByIdTests.cs
index d864cb0..a850c0e 100644
--- a/ToDoList/tests/ToDoList.Test/UnitTests/GetByIdTests.cs
+++ b/ToDoList/tests/ToDoList.Test/UnitTests/GetByIdTests.cs
@@ -12,57 +12,57 @@ namespace ToDoList.Test.UnitTests;
public class GetByIdUnitTests
{
[Fact]
- public void Get_ReadByIdWhenSomeItemAvailable_ReturnsOk()
+ public async Task Get_ReadByIdWhenSomeItemAvailable_ReturnsOk()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var someId = 1;
- repositoryMock.ReadById(someId).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
+ repositoryMock.ReadByIdAsync(someId).Returns(new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false });
// Act
- var result = controller.ReadById(someId);
+ var result = await controller.ReadByIdAsync(someId);
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadById(someId);
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
}
[Fact]
- public void Get_ReadByIdWhenItemIsNull_ReturnsNotFound()
+ public async Task Get_ReadByIdWhenItemIsNull_ReturnsNotFound()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var someId = 1;
- repositoryMock.ReadById(someId).ReturnsNull();
+ repositoryMock.ReadByIdAsync(someId).ReturnsNull();
// Act
- var result = controller.ReadById(someId);
+ var result = await controller.ReadByIdAsync(someId);
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadById(someId);
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
}
[Fact]
- public void Get_ReadByIdUnhandledException_ReturnsInternalServerError()
+ public async Task Get_ReadByIdUnhandledException_ReturnsInternalServerError()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var someId = 1;
- repositoryMock.ReadById(someId).Throws(new Exception());
+ repositoryMock.ReadByIdAsync(someId).Throws(new Exception());
// Act
- var result = controller.ReadById(someId);
+ var result =await controller.ReadByIdAsync(someId);
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadById(someId);
+ await repositoryMock.Received(1).ReadByIdAsync(someId);
Assert.Equivalent(new StatusCodeResult(StatusCodes.Status500InternalServerError), resultResult);
}
diff --git a/ToDoList/tests/ToDoList.Test/UnitTests/GetTests.cs b/ToDoList/tests/ToDoList.Test/UnitTests/GetTests.cs
index 97c92c1..a904d47 100644
--- a/ToDoList/tests/ToDoList.Test/UnitTests/GetTests.cs
+++ b/ToDoList/tests/ToDoList.Test/UnitTests/GetTests.cs
@@ -12,55 +12,55 @@ namespace ToDoList.Test.UnitTests;
public class GetUnitTests
{
[Fact]
- public void Get_ReadWhenSomeItemAvailable_ReturnsOk()
+ public async Task Get_ReadWhenSomeItemAvailable_ReturnsOk()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadAll().Returns([new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false }]);
+ repositoryMock.ReadAllAsync().Returns([new ToDoItem { Name = "testItem", Description = "testDescription", IsCompleted = false }]);
// Act
- var result = controller.Read();
+ var result = await controller.ReadAsync();
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadAll();
+ repositoryMock.Received(1).ReadAllAsync();
}
[Fact]
- public void Get_ReadWhenNoItemAvailable_ReturnsNotFound()
+ public async Task Get_ReadWhenNoItemAvailable_ReturnsNotFound()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
- repositoryMock.ReadAll().ReturnsNull();
+ repositoryMock.ReadAllAsync().ReturnsNull();
// Act
- var result = controller.Read();
+ var result = await controller.ReadAsync();
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadAll();
+ await repositoryMock.Received(1).ReadAllAsync();
}
[Fact]
- public void Get_ReadUnhandledException_ReturnsInternalServerError()
+ public async Task Get_ReadUnhandledException_ReturnsInternalServerError()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
//repositoryMock.When(r => r.ReadAll()).Do(r => throw new Exception());
- repositoryMock.ReadAll().Throws(new Exception());
+ repositoryMock.ReadAllAsync().Throws(new Exception());
// Act
- var result = controller.Read();
+ var result = await controller.ReadAsync();
var resultResult = result.Result;
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).ReadAll();
+ repositoryMock.Received(1).ReadAllAsync();
Assert.Equivalent(new StatusCodeResult(StatusCodes.Status500InternalServerError), resultResult);
}
diff --git a/ToDoList/tests/ToDoList.Test/UnitTests/PostTests.cs b/ToDoList/tests/ToDoList.Test/UnitTests/PostTests.cs
index 94d076c..7ee103b 100644
--- a/ToDoList/tests/ToDoList.Test/UnitTests/PostTests.cs
+++ b/ToDoList/tests/ToDoList.Test/UnitTests/PostTests.cs
@@ -11,10 +11,10 @@ namespace ToDoList.Test.UnitTests;
public class PostUnitTests
{
[Fact]
- public void Post_CreateValidRequest_ReturnsCreatedAtAction()
+ public async Task Post_CreateValidRequest_ReturnsCreatedAtAction()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var request = new ToDoItemCreateRequestDto(
Name: "Jmeno",
@@ -23,13 +23,13 @@ public void Post_CreateValidRequest_ReturnsCreatedAtAction()
);
// Act
- var result = controller.Create(request);
+ var result = await controller.CreateAsync(request);
var resultResult = result.Result;
var value = result.GetValue();
// Assert
Assert.IsType(resultResult);
- repositoryMock.Received(1).Create(Arg.Any());
+ await repositoryMock.Received(1).CreateAsync(Arg.Any());
// These asserts are optional
Assert.NotNull(value);
@@ -40,20 +40,20 @@ public void Post_CreateValidRequest_ReturnsCreatedAtAction()
}
[Fact]
- public void Post_CreateUnhandledException_ReturnsInternalServerError()
+ public async Task Post_CreateUnhandledException_ReturnsInternalServerError()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var request = new ToDoItemCreateRequestDto(
Name: "Jmeno",
Description: "Popis",
IsCompleted: false
);
- repositoryMock.When(r => r.Create(Arg.Any())).Do(r => throw new Exception());
+ repositoryMock.When(r => r.CreateAsync(Arg.Any())).Do(r => throw new Exception());
// Act
- var result = controller.Create(request);
+ var result = await controller.CreateAsync(request);
var resultResult = result.Result;
// Assert
diff --git a/ToDoList/tests/ToDoList.Test/UnitTests/PutTests.cs b/ToDoList/tests/ToDoList.Test/UnitTests/PutTests.cs
index 19bc185..e134fad 100644
--- a/ToDoList/tests/ToDoList.Test/UnitTests/PutTests.cs
+++ b/ToDoList/tests/ToDoList.Test/UnitTests/PutTests.cs
@@ -12,10 +12,10 @@ namespace ToDoList.Test.UnitTests;
public class PutUnitTests
{
[Fact]
- public void Put_UpdateByIdWhenItemUpdated_ReturnsNoContent()
+ public async Task Put_UpdateByIdWhenItemUpdated_ReturnsNoContent()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var request = new ToDoItemUpdateRequestDto(
Name: "Jmeno",
@@ -24,44 +24,44 @@ public void Put_UpdateByIdWhenItemUpdated_ReturnsNoContent()
);
var someId = 1;
var readToDoItem = new ToDoItem { Name = "Jmeno", Description = "Popis", IsCompleted = false, ToDoItemId = someId };
- repositoryMock.ReadById(someId).Returns(readToDoItem);
+ repositoryMock.ReadByIdAsync(someId).Returns(readToDoItem);
// Act
- var result = controller.UpdateById(someId, request);
+ var result = await controller.UpdateByIdAsync(someId, request);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
- repositoryMock.Received(1).Update(Arg.Any());
+ repositoryMock.Received(1).ReadByIdAsync(someId);
+ repositoryMock.Received(1).UpdateAsync(Arg.Any());
}
[Fact]
- public void Put_UpdateByIdWhenIdNotFound_ReturnsNotFound()
+ public async Task Put_UpdateByIdWhenIdNotFound_ReturnsNotFound()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var request = new ToDoItemUpdateRequestDto(
Name: "Jmeno",
Description: "Popis",
IsCompleted: false
);
- repositoryMock.ReadById(Arg.Any()).ReturnsNull();
+ repositoryMock.ReadByIdAsync(Arg.Any()).ReturnsNull();
var someId = 1;
// Act
- var result = controller.UpdateById(someId, request);
+ var result = await controller.UpdateByIdAsync(someId, request);
// Assert
Assert.IsType(result);
- repositoryMock.Received(1).ReadById(someId);
+ repositoryMock.Received(1).ReadByIdAsync(someId);
}
[Fact]
- public void Put_UpdateByIdUnhandledException_ReturnsInternalServerError()
+ public async Task Put_UpdateByIdUnhandledException_ReturnsInternalServerError()
{
// Arrange
- var repositoryMock = Substitute.For>();
+ var repositoryMock = Substitute.For>();
var controller = new ToDoItemsController(repositoryMock);
var request = new ToDoItemUpdateRequestDto(
Name: "Jmeno",
@@ -71,11 +71,11 @@ public void Put_UpdateByIdUnhandledException_ReturnsInternalServerError()
var someId = 1;
var readToDoItem = new ToDoItem { Name = "Jmeno", Description = "Popis", IsCompleted = false, ToDoItemId = someId };
- repositoryMock.ReadById(Arg.Any()).Returns(readToDoItem);
- repositoryMock.When(r => r.Update(Arg.Any())).Do(r => throw new Exception());
+ repositoryMock.ReadByIdAsync(Arg.Any()).Returns(readToDoItem);
+ repositoryMock.When(r => r.UpdateAsync(Arg.Any())).Do(r => throw new Exception());
// Act
- var result = controller.UpdateById(someId, request);
+ var result = await controller.UpdateByIdAsync(someId, request);
// Assert
Assert.IsType(result);