diff --git a/UsersDBApi/Domain/DTOs/UserCredentialsDTO.cs b/UsersDBApi/Domain/DTOs/UserCredentialsDTO.cs index 2d5c5ba..b32edd7 100644 --- a/UsersDBApi/Domain/DTOs/UserCredentialsDTO.cs +++ b/UsersDBApi/Domain/DTOs/UserCredentialsDTO.cs @@ -12,9 +12,9 @@ public class UserCredentialsDTO public string Password { get; set;} - public UserCredentialsDTO(string userName, string password) + public UserCredentialsDTO(string email, string password) { - Email = userName; + Email = email; Password = password; } } diff --git a/UsersDBApi/Domain/Database/IConnection.cs b/UsersDBApi/Domain/Database/IConnection.cs new file mode 100644 index 0000000..90fc82e --- /dev/null +++ b/UsersDBApi/Domain/Database/IConnection.cs @@ -0,0 +1,9 @@ +using System.Data; + +namespace UsersDBApi.Domain.Database +{ + public interface IConnection + { + IDbConnection Get(string name); + } +} diff --git a/UsersDBApi/Domain/Errors/EmailAlreadyExists.cs b/UsersDBApi/Domain/Errors/EmailAlreadyExistsError.cs similarity index 87% rename from UsersDBApi/Domain/Errors/EmailAlreadyExists.cs rename to UsersDBApi/Domain/Errors/EmailAlreadyExistsError.cs index 8566582..adc693c 100644 --- a/UsersDBApi/Domain/Errors/EmailAlreadyExists.cs +++ b/UsersDBApi/Domain/Errors/EmailAlreadyExistsError.cs @@ -6,7 +6,7 @@ namespace UsersDBApi.Domain.Errors { - public class EmailAlreadyExists : IBaseError + public class EmailAlreadyExistsError : IBaseError { public int ErrorCode => 0x6001; diff --git a/UsersDBApi/Domain/Errors/IdNotFound.cs b/UsersDBApi/Domain/Errors/IdNotFoundError.cs similarity index 100% rename from UsersDBApi/Domain/Errors/IdNotFound.cs rename to UsersDBApi/Domain/Errors/IdNotFoundError.cs diff --git a/UsersDBApi/Domain/Errors/InvalidPassword.cs b/UsersDBApi/Domain/Errors/InvalidPasswordError.cs similarity index 87% rename from UsersDBApi/Domain/Errors/InvalidPassword.cs rename to UsersDBApi/Domain/Errors/InvalidPasswordError.cs index dc1ae0d..41b22a5 100644 --- a/UsersDBApi/Domain/Errors/InvalidPassword.cs +++ b/UsersDBApi/Domain/Errors/InvalidPasswordError.cs @@ -6,7 +6,7 @@ namespace UsersDBApi.Domain.Errors { - public class InvalidPassword : IBaseError + public class InvalidPasswordError : IBaseError { public int ErrorCode => 0x7003; diff --git a/UsersDBApi/Domain/Errors/InvalidPhoneNumber.cs b/UsersDBApi/Domain/Errors/InvalidPhoneNumberError.cs similarity index 87% rename from UsersDBApi/Domain/Errors/InvalidPhoneNumber.cs rename to UsersDBApi/Domain/Errors/InvalidPhoneNumberError.cs index 2f252bf..2654b26 100644 --- a/UsersDBApi/Domain/Errors/InvalidPhoneNumber.cs +++ b/UsersDBApi/Domain/Errors/InvalidPhoneNumberError.cs @@ -6,7 +6,7 @@ namespace UsersDBApi.Domain.Errors { - public class InvalidPhoneNumber : IBaseError + public class InvalidPhoneNumberError : IBaseError { public int ErrorCode => 0x7002; diff --git a/UsersDBApi/Domain/Errors/NameAlreadyExists.cs b/UsersDBApi/Domain/Errors/NameAlreadyExistsError.cs similarity index 87% rename from UsersDBApi/Domain/Errors/NameAlreadyExists.cs rename to UsersDBApi/Domain/Errors/NameAlreadyExistsError.cs index b66448a..5b48970 100644 --- a/UsersDBApi/Domain/Errors/NameAlreadyExists.cs +++ b/UsersDBApi/Domain/Errors/NameAlreadyExistsError.cs @@ -6,7 +6,7 @@ namespace UsersDBApi.Domain.Errors { - public class NameAlreadyExists : IBaseError + public class NameAlreadyExistsError : IBaseError { public int ErrorCode => 0x6000; diff --git a/UsersDBApi/Domain/Errors/NameNotFound.cs b/UsersDBApi/Domain/Errors/NameNotFoundError.cs similarity index 100% rename from UsersDBApi/Domain/Errors/NameNotFound.cs rename to UsersDBApi/Domain/Errors/NameNotFoundError.cs diff --git a/UsersDBApi/Infra/Database/Connection.cs b/UsersDBApi/Infra/Database/Connection.cs index d1cd234..8a9c599 100644 --- a/UsersDBApi/Infra/Database/Connection.cs +++ b/UsersDBApi/Infra/Database/Connection.cs @@ -1,18 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Configuration; +using System.Configuration; using System.Data.SqlClient; -using System.Security.Cryptography.X509Certificates; -using System.Data.Common; +using UsersDBApi.Domain.Database; +using System.Data; namespace UsersDBApi.Infra.Database { - public class Connection + public class Connection : IConnection { - static public DbConnection Get(string name) + public IDbConnection Get(string name) { string connectionString = ConfigurationManager.ConnectionStrings[name].ConnectionString; return new SqlConnection(connectionString); diff --git a/UsersDBApi/Infra/Repositories/UsersRepository.cs b/UsersDBApi/Infra/Repositories/UsersRepository.cs index 6d1e409..eabd822 100644 --- a/UsersDBApi/Infra/Repositories/UsersRepository.cs +++ b/UsersDBApi/Infra/Repositories/UsersRepository.cs @@ -4,31 +4,38 @@ using UsersDBApi.Domain.Errors; using UsersDBApi.Domain.DTOs; using UsersDBApi.Domain.repositories; -using UsersDBApi.Infra.Database; using UsersDBApi.Lib; using Dapper; using UsersDBApi.Infra.Database.Models; +using UsersDBApi.Domain.Database; namespace UsersDBApi.Infra.Repositories { public class UsersRepository : IUsersRepository { + private IConnection connection; + + public UsersRepository(IConnection connection) + { + this.connection = connection; + } + public Either CreateUser(UserDTO user) { - using (IDbConnection db = Connection.Get("usersdb")) + using (IDbConnection db = connection.Get("usersdb")) { var model = UserModel.Create(user); var name = db.Query($"SELECT * FROM users WHERE Name = '{user.Name}'"); if(name.Count() > 0 ) { - return new NameAlreadyExists(); + return new NameAlreadyExistsError(); } var email = db.Query($"SELECT * FROM users WHERE Email = '{user.Email}'"); if(email.Count() > 0 ) { - return new EmailAlreadyExists(); + return new EmailAlreadyExistsError(); } db.Execute($"INSERT INTO users (Name, Email, Phone, Password, Level, CreatedAt) Values(@Name, @Email, @Phone, @Password, @Level, @CreatedAt)", model); @@ -38,7 +45,7 @@ public Either CreateUser(UserDTO user) public Either> GetAllUsers() { - using (IDbConnection db = Connection.Get("usersdb")) + using (IDbConnection db = connection.Get("usersdb")) { var result = db.Query($"SELECT * FROM users"); if(result.Count() > 0) @@ -54,7 +61,7 @@ public Either> GetAllUsers() public Either GetUserByEmail(string email) { - using (IDbConnection db = Connection.Get("usersdb")) + using (IDbConnection db = connection.Get("usersdb")) { var result = db.Query($"SELECT * FROM users WHERE Email = '{email}'"); if(result.Count() > 0) @@ -70,7 +77,7 @@ public Either GetUserByEmail(string email) public Either GetUserById(int id) { - using (IDbConnection db = Connection.Get("usersdb")) + using (IDbConnection db = connection.Get("usersdb")) { var result = db.Query($"SELECT * FROM users WHERE Id = {id}"); if (result.Count() > 0) @@ -86,7 +93,7 @@ public Either GetUserById(int id) public Either> GetUsersByName(string name) { - using (IDbConnection db = Connection.Get("usersdb")) + using (IDbConnection db = connection.Get("usersdb")) { var result = db.Query($"SELECT * FROM users WHERE CHARINDEX('{name}', Name) > 0"); if (result.Count() > 0) diff --git a/UsersDBApi/Infra/Usecases/Users/CreateUser.cs b/UsersDBApi/Infra/Usecases/Users/CreateUser.cs index 2984da9..4422a75 100644 --- a/UsersDBApi/Infra/Usecases/Users/CreateUser.cs +++ b/UsersDBApi/Infra/Usecases/Users/CreateUser.cs @@ -38,12 +38,12 @@ public Either Handle(UserDTO user) var phoneRegex = new Regex("^\\+?[1-9][0-9]{7,14}$"); if (user.Phone == null || !phoneRegex.IsMatch(user.Phone)) { - return new InvalidPhoneNumber(); + return new InvalidPhoneNumberError(); } if(user.Password == null || user.Password.Length < 8) { - return new InvalidPassword(); + return new InvalidPasswordError(); } try diff --git a/UsersDBApi/UsersDBApi.csproj b/UsersDBApi/UsersDBApi.csproj index c71e711..3e2dcb7 100644 --- a/UsersDBApi/UsersDBApi.csproj +++ b/UsersDBApi/UsersDBApi.csproj @@ -51,23 +51,24 @@ + - + - - + + - + - + - + diff --git a/UsersDBApiTests/Infra/Database/Models/UserModelTests.cs b/UsersDBApiTests/Infra/Database/Models/UserModelTests.cs new file mode 100644 index 0000000..470085a --- /dev/null +++ b/UsersDBApiTests/Infra/Database/Models/UserModelTests.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.DTOs; +using UsersDBApi.Infra.Database.Models; + +namespace UsersDBApiTests.Infra.Database.Models +{ + [TestClass] + public class UserModelTests + { + [TestMethod] + public void CreateMustReturnUserModel() + { + var user = new UserDTO("username", "user@email.com", "3799034578", "userpass", UserLevel.Administrator); + + var result = UserModel.Create(user); + + Assert.AreEqual(user.Name, result.Name); + Assert.AreEqual(user.Email, result.Email); + Assert.AreEqual(user.Phone, result.Phone); + Assert.AreEqual(user.Password, result.Password); + Assert.AreEqual(user.Level, result.Level); + } + } +} diff --git a/UsersDBApiTests/Infra/Repositories/UsersRepositoryTests.cs b/UsersDBApiTests/Infra/Repositories/UsersRepositoryTests.cs deleted file mode 100644 index 982f038..0000000 --- a/UsersDBApiTests/Infra/Repositories/UsersRepositoryTests.cs +++ /dev/null @@ -1,22 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace UsersDBApiTests.Infra.Repositories -{ - [TestClass] - public class UsersRepositoryTests - { - [TestCategory("CreateUser")] - [TestMethod] - public void MustReturnNameAlreadyExists() - { - // Arrange - - } - } -} diff --git a/UsersDBApiTests/Infra/Usecases/CreateUserTests.cs b/UsersDBApiTests/Infra/Usecases/CreateUserTests.cs index 7c7bc7b..16e36cf 100644 --- a/UsersDBApiTests/Infra/Usecases/CreateUserTests.cs +++ b/UsersDBApiTests/Infra/Usecases/CreateUserTests.cs @@ -1,19 +1,70 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.VisualStudio.TestTools.UnitTesting; -using UsersDBApi.Infra.Usecases; +using UsersDBApi.Domain.DTOs; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; namespace UsersDBApiTests.Infra.Usecases { + [TestClass] public class CreateUserTests { [TestMethod] public void MustReturnInvalidNameError() { - // Arrange + var repository = new UsersRepositoryMock(); + var usecase = new CreateUser(repository); + var result = usecase.Handle(MockedData.UserInvalidName); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is InvalidNameError); + } + + [TestMethod] + public void MustReturnInvalidEmailError() + { + var repository = new UsersRepositoryMock(); + var usecase = new CreateUser(repository); + var result = usecase.Handle(MockedData.UserInvalidEmail); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is InvalidEmailError); + } + + [TestMethod] + public void MustReturnInvalidPhoneNumber() + { + var repository = new UsersRepositoryMock(); + var usecase = new CreateUser(repository); + var result = usecase.Handle(MockedData.UserInvalidPhone); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is InvalidPhoneNumberError); + } + + [TestMethod] + public void MustReturnInvalidPasswordError() + { + var repository = new UsersRepositoryMock(); + var usecase = new CreateUser(repository); + var result = usecase.Handle(MockedData.UserInvalidPassword); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is InvalidPasswordError); + } + + [TestMethod] + public void MustReturnCreatedUser() + { + var repository = new UsersRepositoryMock(); + var usecase = new CreateUser(repository); + var result = usecase.Handle(MockedData.NewUser); + + Assert.IsTrue(result.IsRight); + Assert.AreEqual(result.RightOrDefault().Name, MockedData.NewUser.Name); + Assert.AreEqual(result.RightOrDefault().Email, MockedData.NewUser.Email); + Assert.AreEqual(result.RightOrDefault().Phone, MockedData.NewUser.Phone); + Assert.AreEqual(result.RightOrDefault().Password, MockedData.NewUser.Password); + Assert.AreEqual(result.RightOrDefault().Level, MockedData.NewUser.Level); } } } diff --git a/UsersDBApiTests/Infra/Usecases/GetAllUsersTests.cs b/UsersDBApiTests/Infra/Usecases/GetAllUsersTests.cs new file mode 100644 index 0000000..6ab3c1a --- /dev/null +++ b/UsersDBApiTests/Infra/Usecases/GetAllUsersTests.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; + +namespace UsersDBApiTests.Infra.Usecases +{ + [TestClass] + public class GetAllUsersTests + { + [TestMethod] + public void MustReturnAllUsers() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetAllUsers(repository); + var result = usecase.Handle(); + var users = result.RightOrDefault(); + + Assert.IsTrue(result.IsRight); + + int i = 0; + foreach (var user in users) + { + Assert.AreEqual(MockedData.Users[i].Name, user.Name); + Assert.AreEqual(MockedData.Users[i].Email, user.Email); + Assert.AreEqual(MockedData.Users[i].Phone, user.Phone); + Assert.AreEqual(MockedData.Users[i].Password, user.Password); + Assert.AreEqual(MockedData.Users[i].Level, user.Level); + i++; + } + } + } +} diff --git a/UsersDBApiTests/Infra/Usecases/GetUserByEmailTest.cs b/UsersDBApiTests/Infra/Usecases/GetUserByEmailTest.cs new file mode 100644 index 0000000..381c0ae --- /dev/null +++ b/UsersDBApiTests/Infra/Usecases/GetUserByEmailTest.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; + +namespace UsersDBApiTests.Infra.Usecases +{ + [TestClass] + public class GetUserByEmailTest + { + [TestMethod] + public void MustReturnUser() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserByEmail(repository); + var result = usecase.Handle(MockedData.Users[0].Email); + var user = result.RightOrDefault(); + + Assert.IsTrue(result.IsRight); + + Assert.AreEqual(MockedData.Users[0].Name, user.Name); + Assert.AreEqual(MockedData.Users[0].Email, user.Email); + Assert.AreEqual(MockedData.Users[0].Phone, user.Phone); + Assert.AreEqual(MockedData.Users[0].Password, user.Password); + Assert.AreEqual(MockedData.Users[0].Level, user.Level); + } + + [TestMethod] + public void MustReturnEmailNotFound() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserByEmail(repository); + var result = usecase.Handle("inexistent@email.com.br"); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is EmailNotFoundError); + } + } +} diff --git a/UsersDBApiTests/Infra/Usecases/GetUserById.cs b/UsersDBApiTests/Infra/Usecases/GetUserById.cs new file mode 100644 index 0000000..2e2b407 --- /dev/null +++ b/UsersDBApiTests/Infra/Usecases/GetUserById.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; + +namespace UsersDBApiTests.Infra.Usecases +{ + [TestClass] + public class GetUserByIdTest + { + [TestMethod] + public void MustReturnUser() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserById(repository); + var result = usecase.Handle(MockedData.Users[0].Id); + var user = result.RightOrDefault(); + + Assert.IsTrue(result.IsRight); + + Assert.AreEqual(MockedData.Users[0].Name, user.Name); + Assert.AreEqual(MockedData.Users[0].Email, user.Email); + Assert.AreEqual(MockedData.Users[0].Phone, user.Phone); + Assert.AreEqual(MockedData.Users[0].Password, user.Password); + Assert.AreEqual(MockedData.Users[0].Level, user.Level); + } + + [TestMethod] + public void MustReturnEmailNotFound() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserById(repository); + var result = usecase.Handle(555); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is IdNotFoundError); + } + } +} diff --git a/UsersDBApiTests/Infra/Usecases/GetUserByName.cs b/UsersDBApiTests/Infra/Usecases/GetUserByName.cs new file mode 100644 index 0000000..95f7c3a --- /dev/null +++ b/UsersDBApiTests/Infra/Usecases/GetUserByName.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; + +namespace UsersDBApiTests.Infra.Usecases +{ + [TestClass] + public class GetUserByNameTest + { + [TestMethod] + public void MustReturnUser() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserByName(repository); + var result = usecase.Handle(MockedData.Users[0].Name); + var users = result.RightOrDefault(); + + Assert.IsTrue(result.IsRight); + Assert.IsTrue(users.Count() == 1); + + Assert.AreEqual(MockedData.Users[0].Name, users.First().Name); + Assert.AreEqual(MockedData.Users[0].Email, users.First().Email); + Assert.AreEqual(MockedData.Users[0].Phone, users.First().Phone); + Assert.AreEqual(MockedData.Users[0].Password, users.First().Password); + Assert.AreEqual(MockedData.Users[0].Level, users.First().Level); + } + + [TestMethod] + public void MustReturnEmailNotFound() + { + var repository = new UsersRepositoryMock(); + var usecase = new GetUserByName(repository); + var result = usecase.Handle("Inexistent Name"); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is NameNotFoundError); + } + } +} diff --git a/UsersDBApiTests/Infra/Usecases/SignInTests.cs b/UsersDBApiTests/Infra/Usecases/SignInTests.cs new file mode 100644 index 0000000..b621700 --- /dev/null +++ b/UsersDBApiTests/Infra/Usecases/SignInTests.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Infra.Usecases.Users; +using UsersDBApiTests.Mocks; + +namespace UsersDBApiTests.Infra.Usecases +{ + [TestClass] + public class SignInTests + { + [TestMethod] + public void MustReturnEmailNotFoundError() + { + var repository = new UsersRepositoryMock(); + var getUserByEmail = new GetUserByEmail(repository); + var usecase = new SignIn(getUserByEmail); + var result = usecase.Handle(MockedData.UserCredentialsInexistentEmail); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is EmailNotFoundError); + } + + [TestMethod] + public void MustReturUserModel() + { + var repository = new UsersRepositoryMock(); + var getUserByEmail = new GetUserByEmail(repository); + var usecase = new SignIn(getUserByEmail); + var result = usecase.Handle(MockedData.UserCredentials); + + var expectedUser = getUserByEmail.Handle(MockedData.UserCredentials.Email).RightOrDefault(); + var user = result.RightOrDefault(); + + Assert.IsTrue(result.IsRight); + Assert.AreEqual(expectedUser.Name, user.Name); + Assert.AreEqual(expectedUser.Email, user.Email); + Assert.AreEqual(expectedUser.Phone, user.Phone); + Assert.AreEqual(expectedUser.Password, user.Password); + Assert.AreEqual(expectedUser.Level, user.Level); + } + + [TestMethod] + public void MustNotReturIncorrectPasswordError() + { + var repository = new UsersRepositoryMock(); + var getUserByEmail = new GetUserByEmail(repository); + var usecase = new SignIn(getUserByEmail); + var result = usecase.Handle(MockedData.UserCredentialsIncorrectPassword); + + Assert.IsTrue(result.IsLeft); + Assert.IsTrue(result.LeftOrDefault() is IncorrectPasswordError); + } + } +} diff --git a/UsersDBApiTests/Mocks/MockedData.cs b/UsersDBApiTests/Mocks/MockedData.cs new file mode 100644 index 0000000..cd134d0 --- /dev/null +++ b/UsersDBApiTests/Mocks/MockedData.cs @@ -0,0 +1,31 @@ +using UsersDBApi.Domain.DTOs; +using UsersDBApi.Infra.Database.Models; + +namespace UsersDBApiTests.Mocks +{ + internal class MockedData + { + static public List Users => new List + { + new UserModel("Mocker User", "mocker@mail.com", "37555555", "password", UserLevel.Administrator, DateTime.Now.ToString()), + new UserModel("João Paulo", "joao@mail.com", "3712345678", "joaopass", UserLevel.User, DateTime.Now.ToString()), + new UserModel("Paulo Silva", "paulo@mail.com", "3711223344", "paulopass", UserLevel.User, DateTime.Now.ToString()), + }; + + static public UserDTO UserInvalidName => new UserDTO("", "user@mail.com.br", "3732144331", "password", UserLevel.None); + + static public UserDTO UserInvalidEmail => new UserDTO("user name", "email.com.br", "3732144331", "password", UserLevel.None); + + static public UserDTO UserInvalidPhone => new UserDTO("user name", "user@mail.com.br", "37-32144331", "password", UserLevel.None); + + static public UserDTO UserInvalidPassword => new UserDTO("user name", "user@mail.com.br", "3732144331", "", UserLevel.None); + + static public UserDTO NewUser => new UserDTO("new user", "newuser@mail.com.br", "3732144331", "newuserpass", UserLevel.None); + + static public UserCredentialsDTO UserCredentialsInexistentEmail => new UserCredentialsDTO("inexistent", "inexistent"); + + static public UserCredentialsDTO UserCredentials = new UserCredentialsDTO("joao@mail.com", "joaopass"); + + static public UserCredentialsDTO UserCredentialsIncorrectPassword = new UserCredentialsDTO("joao@mail.com", "incorrect pass"); + } +} diff --git a/UsersDBApiTests/Mocks/UsersRepositoryMock.cs b/UsersDBApiTests/Mocks/UsersRepositoryMock.cs new file mode 100644 index 0000000..584581a --- /dev/null +++ b/UsersDBApiTests/Mocks/UsersRepositoryMock.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using UsersDBApi.Domain.DTOs; +using UsersDBApi.Domain.Errors; +using UsersDBApi.Domain.repositories; +using UsersDBApi.Infra.Database.Models; +using UsersDBApi.Lib; + +namespace UsersDBApiTests.Mocks +{ + public class UsersRepositoryMock : IUsersRepository + { + public Either CreateUser(UserDTO user) + { + var newUser = UserModel.Create(user); + MockedData.Users.Add(newUser); + return newUser; + } + + public Either> GetAllUsers() + { + return MockedData.Users; + } + + public Either GetUserByEmail(string email) + { + var result = MockedData.Users.Find(item => item.Email == email); + return result == null ? new EmailNotFoundError() : result; + } + + public Either GetUserById(int id) + { + var result = MockedData.Users.Find(item => item.Id == id); + return result == null ? new IdNotFoundError() : result; + } + + public Either> GetUsersByName(string name) + { + var result = MockedData.Users.FindAll(item => item.Name.Contains(name)); + return result == null || result.Count == 0 ? new NameNotFoundError() : result; + } + } +} diff --git a/UsersDBApiTests/UnitTest1.cs b/UsersDBApiTests/UnitTest1.cs deleted file mode 100644 index 4fa4a46..0000000 --- a/UsersDBApiTests/UnitTest1.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace UsersDBApiTests -{ - [TestClass] - public class UnitTest1 - { - [TestMethod] - public void TestMethod1() - { - } - } -} \ No newline at end of file diff --git a/UsersDBApiTests/UsersDBApiTests.csproj b/UsersDBApiTests/UsersDBApiTests.csproj index ce4a79a..88bf631 100644 --- a/UsersDBApiTests/UsersDBApiTests.csproj +++ b/UsersDBApiTests/UsersDBApiTests.csproj @@ -10,6 +10,7 @@ + diff --git a/UsersDBApp/Program.cs b/UsersDBApp/Program.cs index cc136af..57a74c8 100644 --- a/UsersDBApp/Program.cs +++ b/UsersDBApp/Program.cs @@ -1,9 +1,11 @@ using System; using System.Windows.Forms; +using UsersDBApi.Domain.Database; using UsersDBApi.Domain.DTOs; using UsersDBApi.Domain.Modules.Users; using UsersDBApi.Domain.repositories; using UsersDBApi.Domain.Usecases.Users; +using UsersDBApi.Infra.Database; using UsersDBApi.Infra.Modules.Users; using UsersDBApi.Infra.Repositories; using UsersDBApi.Infra.Usecases.Users; @@ -12,7 +14,9 @@ namespace UsersDBApp { internal static class Program { - private static readonly IUsersRepository repository = new UsersRepository(); + private static readonly IConnection connection = new Connection(); + + private static readonly IUsersRepository repository = new UsersRepository(connection); private static readonly ICreateUser createUser = new CreateUser(repository); private static readonly IGetAllUsers getAllUsers = new GetAllUsers(repository); diff --git a/changes.md b/changes.md index d65bb44..71e8b05 100644 --- a/changes.md +++ b/changes.md @@ -3,4 +3,12 @@ Users DB APP Relese [1.0.0] - 2023-01-07 -- First Release \ No newline at end of file +- First Release + +[1.1.0] - 2023-01-08 + +### Changed + - Pass connection to repository on constructor + +### Added + - Added unit tests \ No newline at end of file