Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using LoWaiLo.Data;
- using LoWaiLo.Data.Common;
- using LoWaiLo.Data.Models;
- using LoWaiLo.Services.Contracts;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.Logging;
- using Microsoft.Extensions.Options;
- using Moq;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using Xunit;
- namespace LoWaiLo.Services.Tests
- {
- public class ShoppingCartServiceTests
- {
- private readonly IRepository<ShoppingCartProduct> shoppingCartProductsRepository;
- private readonly LoWaiLoDbContext context;
- public ShoppingCartServiceTests()
- {
- var options = new DbContextOptionsBuilder<LoWaiLoDbContext>()
- .UseInMemoryDatabase(Guid.NewGuid().ToString())
- .Options;
- this.context = new LoWaiLoDbContext(options);
- this.shoppingCartProductsRepository = new DbRepository<ShoppingCartProduct>(context);
- }
- [Fact]
- public async Task AddProductInCartShouldAddProductInCart()
- {
- var userId = "123";
- var userName = "user.abv.bg";
- var user = new ApplicationUser { Id = userId, UserName = userName, ShoppingCart = new ShoppingCart() };
- context.Users.Add(user);
- context.SaveChanges();
- var userStore = new Mock<IUserStore<ApplicationUser>>();
- userStore.Setup(s => s.FindByIdAsync(userId, CancellationToken.None)).ReturnsAsync(context.Users.First(x => x.Id == userId));
- var userManager = TestUserManager(userStore.Object);
- var productId = 1;
- var productsService = new Mock<IProductsService>();
- productsService.Setup(p => p.GetProductById(productId))
- .Returns(new Product
- {
- Id = 123,
- Name = "Панирани зеленчуци",
- MenuNumber = 3,
- Price = 3.80m,
- Weight = 300,
- Image = "https://www.dropbox.com/s/r0r2ax7al6qtbjk/03.jpg?dl=0",
- });
- var shoppingCartService = new ShoppingCartService(shoppingCartProductsRepository, productsService.Object, userManager);
- await shoppingCartService.AddProductInCart(productId, userId);
- var result1 = shoppingCartProductsRepository.All().ToList();
- Assert.Single(result1);
- Assert.Equal(user.ShoppingCartId, result1.First().ShoppingCartId);
- Assert.Equal(123, result1.First().ProductId);
- }
- public static UserManager<TUser> TestUserManager<TUser>(IUserStore<TUser> store = null) where TUser : class
- {
- store = store ?? new Mock<IUserStore<TUser>>().Object;
- var options = new Mock<IOptions<IdentityOptions>>();
- var idOptions = new IdentityOptions();
- idOptions.Lockout.AllowedForNewUsers = false;
- options.Setup(o => o.Value).Returns(idOptions);
- var userValidators = new List<IUserValidator<TUser>>();
- var validator = new Mock<IUserValidator<TUser>>();
- userValidators.Add(validator.Object);
- var pwdValidators = new List<PasswordValidator<TUser>>();
- pwdValidators.Add(new PasswordValidator<TUser>());
- var userManager = new UserManager<TUser>(store, options.Object, new PasswordHasher<TUser>(),
- userValidators, pwdValidators, new UpperInvariantLookupNormalizer(),
- new IdentityErrorDescriber(), null,
- new Mock<ILogger<UserManager<TUser>>>().Object);
- validator.Setup(v => v.ValidateAsync(userManager, It.IsAny<TUser>()))
- .Returns(Task.FromResult(IdentityResult.Success)).Verifiable();
- return userManager;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement