diff --git a/AsbCloudWebApi.Tests/ServicesTests/UserServiceTest.cs b/AsbCloudWebApi.Tests/ServicesTests/UserServiceTest.cs new file mode 100644 index 00000000..f662823e --- /dev/null +++ b/AsbCloudWebApi.Tests/ServicesTests/UserServiceTest.cs @@ -0,0 +1,75 @@ +using AsbCloudApp.Data; +using AsbCloudApp.Services; +using AsbCloudDb.Model; +using AsbCloudInfrastructure.Services; +using AsbCloudInfrastructure.Services.Cache; +using Moq; +using System; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; +using Xunit; + +namespace AsbCloudWebApi.Tests.ServicesTests +{ + public class UserServiceTest + { + private readonly AsbCloudDbContext context; + private readonly CacheDb cacheDb; + private readonly Mock roleService; + + public UserServiceTest() + { + context = TestHelpter.MakeTestContext(); + cacheDb = new CacheDb(); + roleService = new Mock(); + + context.Users.RemoveRange(context.Users.Where(u => u.Id > 1)); + context.SaveChanges(); + } + + ~UserServiceTest() + { + context.Users.RemoveRange(context.Users.Where(u => u.Id > 1)); + context.SaveChanges(); + } + + [Fact] + public async Task InsertAsync_returns_id() + { + var service = new UserService(context, cacheDb, roleService.Object); + var dto = new UserExtendedDto + { + Id = 0, + IdCompany = 1, + Email = "test@test.test", + Login = "test", + Name = "test", + Company = new CompanyDto { Caption = "test", Id = 1 }, + Patronymic = "test", + Phone = "test", + Position = "test", + Surname = "test", + + }; + var id = await service.InsertAsync(dto, CancellationToken.None); + + Assert.NotEqual(0, id); + } + + [Fact] + public async Task InsertAsync_busy_login_throws_exceprion() + { + var service = new UserService(context, cacheDb, roleService.Object); + var dto = new UserExtendedDto + { + Id = 5, + Email = "test@test.test", + Login = "test clone" + }; + + await service.InsertAsync(dto, CancellationToken.None); + await Assert.ThrowsAsync(() => service.InsertAsync(dto, CancellationToken.None)); + } + } +}