Skip to content

Commit b127550

Browse files
committed
2 parents b98af7c + f9da89b commit b127550

File tree

78 files changed

+1976
-636
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+1976
-636
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
name: Build / unit tests
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
pull_request:
8+
branches:
9+
- main
10+
jobs:
11+
build-and-test:
12+
runs-on: ubuntu-latest
13+
14+
steps:
15+
- name: Checkout code
16+
uses: actions/checkout@v3
17+
18+
- name: Setup .NET
19+
uses: actions/setup-dotnet@v3
20+
with:
21+
dotnet-version: 6.x
22+
23+
- name: Restore dependencies
24+
run: dotnet restore
25+
26+
- name: Build
27+
run: dotnet build --configuration Release
28+
29+
- name: Run tests
30+
run: dotnet test --configuration Release --no-build

NorthwindCRUD.Tests/BaseFixture.cs

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
using System.Data.Common;
2+
using Microsoft.Data.Sqlite;
3+
using Microsoft.EntityFrameworkCore;
4+
using Microsoft.VisualStudio.TestTools.UnitTesting;
5+
6+
namespace NorthwindCRUD.Tests
7+
{
8+
public class BaseFixture
9+
{
10+
// null! indicates that the member is initialized in other code
11+
private DbConnection? connection = null!;
12+
13+
public DataHelper DataHelper { get; set; } = null!;
14+
15+
public DataHelper DataHelper2 { get; set; } = null!;
16+
17+
[TestInitialize]
18+
public void Initialize()
19+
{
20+
DataContext context = GetInMemoryDatabaseContext();
21+
DataContext context2 = GetInMemoryDatabaseContext();
22+
Assert.AreNotEqual(context.GetHashCode(), context2.GetHashCode(), "Contexts instances should be different.");
23+
Assert.AreEqual(context.Database.GetDbConnection(), context2.Database.GetDbConnection(), "Contexts instances should have the same database connection.");
24+
25+
DataHelper = new DataHelper(context);
26+
DataHelper2 = new DataHelper(context2);
27+
}
28+
29+
protected DataContext GetInMemoryDatabaseContext()
30+
{
31+
if (connection == null)
32+
{
33+
connection = CreateDbConnection();
34+
var context = CreateInMemoryDatabaseContext(connection);
35+
context.Database.EnsureCreated();
36+
37+
// DBSeeder.Seed(context);
38+
return context;
39+
}
40+
else
41+
{
42+
// Create a new Context on already initialized DB connection
43+
return CreateInMemoryDatabaseContext(connection);
44+
}
45+
}
46+
47+
protected DbConnection CreateDbConnection()
48+
{
49+
var connection = new SqliteConnection("DataSource=:memory:");
50+
connection.Open();
51+
return connection;
52+
}
53+
54+
protected DataContext CreateInMemoryDatabaseContext(DbConnection connection)
55+
{
56+
var options = new DbContextOptionsBuilder<DataContext>()
57+
.UseSqlite(connection)
58+
.EnableSensitiveDataLogging()
59+
60+
// Uncomment the following line for detailed sql EF logs.
61+
// .EnableDetailedErrors().LogTo(Console.WriteLine, LogLevel.Debug)
62+
.Options;
63+
64+
return new DataContext(options);
65+
}
66+
}
67+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
3+
namespace NorthwindCRUD.Tests
4+
{
5+
[TestClass]
6+
public class CategoryServiceFixture : BaseFixture
7+
{
8+
[TestMethod]
9+
public void ShouldCreateCategory()
10+
{
11+
var category = DataHelper.GetCategory();
12+
var createdCategory = DataHelper.CategoryService.Create(category);
13+
14+
Assert.IsNotNull(createdCategory);
15+
createdCategory = DataHelper2.CategoryService.GetById(createdCategory.CategoryId);
16+
17+
Assert.AreEqual(category.Name, createdCategory?.Name);
18+
Assert.AreEqual(category.Description, createdCategory?.Description);
19+
}
20+
21+
[TestMethod]
22+
public void ShouldUpdateCategory()
23+
{
24+
var category = DataHelper.GetCategory();
25+
string orignalName = category.Name;
26+
string orignalDescription = category.Description;
27+
var createdCategory = DataHelper.CategoryService.Create(category);
28+
29+
createdCategory.Name = "Updated Category";
30+
createdCategory.Description = "Updated Description";
31+
var updatedCategory = DataHelper.CategoryService.Update(createdCategory);
32+
33+
Assert.IsNotNull(updatedCategory);
34+
updatedCategory = DataHelper2.CategoryService.GetById(updatedCategory.CategoryId);
35+
Assert.IsNotNull(updatedCategory);
36+
Assert.AreNotEqual(orignalName, updatedCategory.Name);
37+
Assert.AreNotEqual(orignalDescription, updatedCategory.Description);
38+
Assert.AreEqual(createdCategory.Name, updatedCategory.Name);
39+
Assert.AreEqual(createdCategory.Description, updatedCategory.Description);
40+
}
41+
42+
[TestMethod]
43+
public void ShouldDeleteCategory()
44+
{
45+
var category = DataHelper.GetCategory();
46+
47+
var createdCategory = DataHelper.CategoryService.Create(category);
48+
49+
DataHelper.CategoryService.Delete(createdCategory.CategoryId);
50+
var deletedCategory = DataHelper2.CategoryService.GetById(createdCategory.CategoryId);
51+
52+
Assert.IsNull(deletedCategory);
53+
}
54+
55+
[TestMethod]
56+
public void ShouldReturnAllCategories()
57+
{
58+
DataHelper.CategoryService.Create(DataHelper.GetCategory());
59+
DataHelper.CategoryService.Create(DataHelper.GetCategory());
60+
var result = DataHelper2.CategoryService.GetAll();
61+
62+
Assert.IsNotNull(result);
63+
Assert.AreEqual(2, result.Length);
64+
}
65+
}
66+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
3+
namespace NorthwindCRUD.Tests
4+
{
5+
[TestClass]
6+
public class CustomerServiceFixture : BaseFixture
7+
{
8+
[TestMethod]
9+
public void ShouldCreateCustomer()
10+
{
11+
var customer = DataHelper.GetCustomer();
12+
var createdCustomer = DataHelper.CustomerService.Create(customer);
13+
Assert.IsNotNull(createdCustomer);
14+
Assert.AreEqual(customer, createdCustomer, "Customers instances should be the same since we are over the same context");
15+
16+
createdCustomer = DataHelper2.CustomerService.GetById(createdCustomer.CustomerId);
17+
Assert.IsNotNull(createdCustomer);
18+
Assert.AreNotEqual(customer, createdCustomer, "Customer instances should be different");
19+
20+
Assert.AreEqual(customer.CompanyName, createdCustomer.CompanyName);
21+
Assert.AreEqual(customer.ContactName, createdCustomer.ContactName);
22+
Assert.AreEqual(customer.ContactTitle, createdCustomer.ContactTitle);
23+
Assert.AreEqual(customer.Address.Street, createdCustomer.Address.Street);
24+
Assert.AreEqual(customer.Address.City, createdCustomer.Address.City);
25+
Assert.AreEqual(customer.Address.PostalCode, createdCustomer.Address.PostalCode);
26+
Assert.AreEqual(customer.Address.Country, createdCustomer.Address.Country);
27+
Assert.AreEqual(customer.Address.Phone, createdCustomer.Address.Phone);
28+
}
29+
30+
[TestMethod]
31+
public void ShouldReturnAllCustomers()
32+
{
33+
DataHelper.CustomerService.Create(DataHelper.GetCustomer());
34+
DataHelper.CustomerService.Create(DataHelper.GetCustomer());
35+
36+
var result = DataHelper2.CustomerService.GetAll();
37+
Assert.IsNotNull(result);
38+
Assert.AreEqual(2, result.Length);
39+
}
40+
}
41+
}
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
using NorthwindCRUD.Models.DbModels;
3+
4+
namespace NorthwindCRUD.Tests
5+
{
6+
[TestClass]
7+
public class EmployeeServiceFixture : BaseFixture
8+
{
9+
[TestMethod]
10+
public void ShouldCreateEmployee()
11+
{
12+
EmployeeDb employee = DataHelper.GetEmployee();
13+
14+
var createdEmployee = DataHelper.EmployeeService.Create(employee);
15+
16+
Assert.IsNotNull(createdEmployee);
17+
createdEmployee = DataHelper2.EmployeeService.GetById(createdEmployee.EmployeeId);
18+
Assert.IsNotNull(createdEmployee);
19+
Assert.AreEqual(employee.FirstName, createdEmployee.FirstName);
20+
Assert.AreEqual(employee.LastName, createdEmployee.LastName);
21+
Assert.AreEqual(employee.Title, createdEmployee.Title);
22+
}
23+
24+
[TestMethod]
25+
public void ShouldUpdateEmployee()
26+
{
27+
var employee = DataHelper.GetEmployee();
28+
string originalTitle = employee.Title;
29+
var createdEmployee = DataHelper.EmployeeService.Create(employee);
30+
31+
createdEmployee.Title = "Director";
32+
var updatedEmployee = DataHelper.EmployeeService.Update(createdEmployee);
33+
34+
Assert.IsNotNull(updatedEmployee);
35+
updatedEmployee = DataHelper2.EmployeeService.GetById(updatedEmployee.EmployeeId);
36+
Assert.IsNotNull(updatedEmployee);
37+
Assert.AreNotEqual(originalTitle, updatedEmployee.Title);
38+
Assert.AreEqual(createdEmployee.Title, updatedEmployee.Title);
39+
}
40+
41+
[TestMethod]
42+
public void ShouldDeleteEmployee()
43+
{
44+
var employee = DataHelper.GetEmployee();
45+
var createdEmployee = DataHelper.EmployeeService.Create(employee);
46+
47+
DataHelper.EmployeeService.Delete(createdEmployee.EmployeeId);
48+
var deletedEmployee = DataHelper2.EmployeeService.GetById(createdEmployee.EmployeeId);
49+
50+
Assert.IsNull(deletedEmployee);
51+
}
52+
53+
[TestMethod]
54+
public void ShouldReturnAllEmployees()
55+
{
56+
DataHelper.EmployeeService.Create(DataHelper.GetEmployee());
57+
DataHelper.EmployeeService.Create(DataHelper.GetEmployee());
58+
59+
var result = DataHelper2.EmployeeService.GetAll();
60+
61+
Assert.IsNotNull(result);
62+
Assert.AreEqual(2, result.Length);
63+
}
64+
65+
[TestMethod]
66+
public void ShouldReturnEmployeesByReportsTo()
67+
{
68+
var manager = DataHelper.GetEmployee();
69+
70+
var createdManager = DataHelper.EmployeeService.Create(manager);
71+
var employee1 = DataHelper.GetEmployee();
72+
employee1.ReportsTo = createdManager.EmployeeId;
73+
74+
var employee2 = DataHelper.GetEmployee();
75+
employee2.ReportsTo = createdManager.EmployeeId;
76+
77+
var createdEmployee1 = DataHelper.EmployeeService.Create(employee1);
78+
var createdEmployee2 = DataHelper.EmployeeService.Create(employee2);
79+
80+
var result = DataHelper.EmployeeService.GetEmployeesByReportsTo(createdManager.EmployeeId);
81+
Assert.IsNotNull(result);
82+
Assert.AreEqual(2, result.Length);
83+
Assert.IsTrue(result.All(e => e.ReportsTo == createdManager.EmployeeId));
84+
}
85+
86+
[TestMethod]
87+
public void ShouldReturnEmployeeById()
88+
{
89+
var employee = DataHelper.GetEmployee();
90+
91+
var createdEmployee = DataHelper.EmployeeService.Create(employee);
92+
93+
var result = DataHelper.EmployeeService.GetById(createdEmployee.EmployeeId);
94+
95+
Assert.IsNotNull(result);
96+
Assert.AreEqual(employee.FirstName, result.FirstName);
97+
Assert.AreEqual(employee.LastName, result.LastName);
98+
Assert.AreEqual(employee.Title, result.Title);
99+
}
100+
}
101+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
using Microsoft.VisualStudio.TestTools.UnitTesting;
2+
3+
namespace NorthwindCRUD.Tests
4+
{
5+
[TestClass]
6+
public class EmployeeTerritoryServiceFixture : BaseFixture
7+
{
8+
[TestMethod]
9+
public void ShouldAddTerritoryToEmployee()
10+
{
11+
var employeeId = DataHelper.CreateEmployee().EmployeeId;
12+
var territoryId = DataHelper.CreateTerritory().TerritoryId;
13+
14+
DataHelper.CreateEmployeeTerritory(employeeId, territoryId);
15+
16+
var territories = DataHelper2.EmployeeTerritoryService.GetTeritoriesByEmployeeId(employeeId);
17+
Assert.IsNotNull(territories);
18+
Assert.IsTrue(territories.Any(t => t.TerritoryId == territoryId));
19+
}
20+
21+
[TestMethod]
22+
public void ShouldReturnTerritoriesForEmployee()
23+
{
24+
var employeeId = DataHelper.CreateEmployee().EmployeeId;
25+
var territoryId1 = DataHelper.CreateTerritory().TerritoryId;
26+
var territoryId2 = DataHelper.CreateTerritory().TerritoryId;
27+
28+
DataHelper.CreateEmployeeTerritory(employeeId, territoryId1);
29+
DataHelper.CreateEmployeeTerritory(employeeId, territoryId2);
30+
31+
var territories = DataHelper2.EmployeeTerritoryService.GetTeritoriesByEmployeeId(employeeId);
32+
33+
Assert.IsNotNull(territories);
34+
Assert.AreEqual(2, territories.Length);
35+
Assert.IsTrue(territories.Any(t => t.TerritoryId == territoryId1));
36+
Assert.IsTrue(territories.Any(t => t.TerritoryId == territoryId2));
37+
}
38+
39+
[TestMethod]
40+
public void ShouldReturnEmployeesForTerritory()
41+
{
42+
var territoryId = DataHelper.CreateTerritory().TerritoryId;
43+
var employeeId1 = DataHelper.CreateEmployee().EmployeeId;
44+
var employeeId2 = DataHelper.CreateEmployee().EmployeeId;
45+
46+
DataHelper.CreateEmployeeTerritory(employeeId1, territoryId);
47+
DataHelper.CreateEmployeeTerritory(employeeId2, territoryId);
48+
49+
var employees = DataHelper2.EmployeeTerritoryService.GetEmployeesByTerritoryId(territoryId);
50+
51+
Assert.IsNotNull(employees);
52+
Assert.AreEqual(2, employees.Length);
53+
Assert.IsTrue(employees.Any(e => e.EmployeeId == employeeId1));
54+
Assert.IsTrue(employees.Any(e => e.EmployeeId == employeeId2));
55+
}
56+
}
57+
}

0 commit comments

Comments
 (0)