Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Okane.Application/ExpenseService.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Reflection.Metadata.Ecma335;
using Okane.Domain;

namespace Okane.Application;
Expand All @@ -9,12 +10,16 @@ public class ExpenseService : IExpenseService
public ExpenseService(IExpensesRepository expenses) =>
_expenses = expenses;

public Expense RegisterExpense(Expense expense)
public Expense? RegisterExpense(Expense expense)
{
_expenses.Add(expense);
return expense;
}

public Expense? RemoveExpense(int id) {
return _expenses.Remove(id);
}

public IEnumerable<Expense> RetrieveAll() =>
_expenses.All();
}
1 change: 1 addition & 0 deletions Okane.Application/IExpenseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ namespace Okane.Application;
public interface IExpenseService
{
Expense RegisterExpense(Expense expense);
Expense RemoveExpense(int id);
IEnumerable<Expense> RetrieveAll();
}
2 changes: 2 additions & 0 deletions Okane.Application/IExpensesRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,7 @@ namespace Okane.Application;
public interface IExpensesRepository
{
void Add(Expense expense);
Expense? Get(int id);
Expense? Remove(int id);
IEnumerable<Expense> All();
}
27 changes: 27 additions & 0 deletions Okane.Application/InMemoryExpensesRepository.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using System.Linq.Expressions;
using Okane.Domain;

namespace Okane.Application;
Expand All @@ -20,6 +21,32 @@ public void Add(Expense expense)
expense.Id = _nextId++;
_expenses.Add(expense);
}
public Expense? Get(int id)
{
for(int i = 0; i < _expenses.Count; i++){
if(_expenses[i].Id == id)
return _expenses[i];
}

return null;
}


public Expense? Remove(int id)
{
Expense expense;

for(int i = 0; i < _expenses.Count; i++){
if(_expenses[i].Id == id){
expense = _expenses[i];
_expenses.RemoveAt(i);
_nextId--;
return expense;
}
}

return null;
}

public IEnumerable<Expense> All() => _expenses;
}
2 changes: 1 addition & 1 deletion Okane.Application/Okane.Application.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
1 change: 1 addition & 0 deletions Okane.Domain/Expense.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ public class Expense
public int Id { get; set; }
public int Amount { get; set; }
public required string Category { get; set; }
public required string Description { get; set; }
}
2 changes: 1 addition & 1 deletion Okane.Domain/Okane.Domain.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
Expand Down
36 changes: 33 additions & 3 deletions Okane.Tests/ExpensesServiceTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,14 @@ public void RegisterExpense()
var expense = _expenseService.RegisterExpense(new Expense
{
Category = "Groceries",
Amount = 10
Amount = 10,
Description = "Presidente Light 16Onz"
});

Assert.Equal(1, expense.Id);
Assert.Equal(10, expense.Amount);
Assert.Equal("Groceries", expense.Category);
Assert.Equal("Presidente Light 16Onz", expense.Description);
}

[Fact]
Expand All @@ -33,13 +35,15 @@ public void RetrieveAllExpenses()
_expenseService.RegisterExpense(new Expense
{
Category = "Groceries",
Amount = 10
Amount = 10,
Description = "Alturo Fuente, churchill, maduro."
});

_expenseService.RegisterExpense(new Expense
{
Category = "Entertainment",
Amount = 20
Amount = 20,
Description = "Presidente Light 16Onz"
});

var allExpenses = _expenseService.RetrieveAll()
Expand All @@ -50,4 +54,30 @@ public void RetrieveAllExpenses()
var firstExpense = allExpenses.First();
Assert.Equal(10, firstExpense.Amount);
}

[Fact]
public void DeleteExpense()
{
_expenseService.RegisterExpense(new Expense
{
Category = "Groceries",
Amount = 10,
Description = "Alturo Fuente, churchill, maduro."
});

_expenseService.RegisterExpense(new Expense
{
Category = "Entertainment",
Amount = 20,
Description = "Presidente Light 16Onz"
});

var expense = _expenseService.RemoveExpense(1);

var allExpenses = _expenseService.RetrieveAll()
.ToArray();

Assert.Equal(1, allExpenses.Length);
Assert.Equal("Alturo Fuente, churchill, maduro.", expense.Description);
}
}
2 changes: 1 addition & 1 deletion Okane.Tests/Okane.Tests.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

Expand Down
4 changes: 4 additions & 0 deletions Okane.WebApi/Controllers/ExpensesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,8 @@ public ExpensesController(IExpenseService expensesService) =>
// GET /expenses
[HttpGet]
public IEnumerable<Expense> Get() => _expensesService.RetrieveAll();

// POST /expenses
[HttpDelete]
public Expense Delete(int id) => _expensesService.RemoveExpense(id);
}
2 changes: 1 addition & 1 deletion Okane.WebApi/Okane.WebApi.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
Expand Down