public async Task DeleteMessageByIdWithInCorrectMessageIdInputReturnFalse()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("DeleteMessageByIdWithInCorrectMessageIdInputReturnFalse")
                          .Options;
            var dbContext       = new MarketplaceDbContext(options);
            var profile         = new MarketplaceProfile();
            var configuration   = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper          = new Mapper(configuration);
            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);
            var messageService  = new MessageService(dbContext, mapper, userManagerMock.Object);

            var user = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad21753111cc", Email = "*****@*****.**"
            };
            var user1 = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad2175311123", Email = "*****@*****.**"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var message = new Message()
            {
                MarketplaceUserId = user1.Id,
                Phone             = "0883377905",
                Name           = "Ivan",
                IssuedOn       = DateTime.UtcNow,
                MessageContent = "This is test message!",
                Email          = "*****@*****.**",
                MarkAsRead     = false,
            };

            dbContext.Messages.Add(message);
            await dbContext.SaveChangesAsync();

            user.Messages.Add(message);
            await dbContext.SaveChangesAsync();

            var userId    = "cd89dcbc-bb80-4246-b9b8-ad21753111cc";
            var messageId = "1"; //incorect messageId

            //Act
            var actual = await messageService.DeleteMessageById(userId, messageId);

            var expected = false;

            //Assert
            Assert.Equal(expected, actual);
        }
        public async Task GetUserMessagesCorrectIdMarkAsReadSetToTrueReturnZeroMessages()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("GetUserMessagesCorrectIdMarkAsReadSetToTrueReturnZeroMessages")
                          .Options;
            var dbContext       = new MarketplaceDbContext(options);
            var profile         = new MarketplaceProfile();
            var configuration   = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper          = new Mapper(configuration);
            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);
            var messageService  = new MessageService(dbContext, mapper, userManagerMock.Object);

            var user = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad21753111cc", Email = "*****@*****.**"
            };
            var user1 = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad2175311123", Email = "*****@*****.**"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var message = new Message()
            {
                MarketplaceUserId = user1.Id,
                Phone             = "0883377905",
                Name           = "Ivan",
                IssuedOn       = DateTime.UtcNow,
                MessageContent = "This is test message!",
                Email          = "*****@*****.**",
                MarkAsRead     = true,
            };

            dbContext.Messages.Add(message);
            await dbContext.SaveChangesAsync();

            user.Messages.Add(message);
            await dbContext.SaveChangesAsync();

            var userId = "cd89dcbc-bb80-4246-b9b8-ad21753111cc";
            //Act
            var result   = messageService.GetUserMessages <AdminMessageViewModel>(userId);
            var actual   = result.Count();
            var expected = 0;

            //Assert
            Assert.Equal(expected, actual);
        }
Example #3
0
        public async Task ConnectOffersAndNftIncomes()
        {
            var incomes = await _marketplaceDbContext.NftIncomingTransactions
                          .Where(income => income.OfferId == null)
                          .OrderBy(income => income.CollectionId)
                          .ThenBy(income => income.TokenId)
                          .ThenBy(income => income.UniqueProcessedBlockId)
                          .ToListAsync();

            var offers = await(
                from offer in _marketplaceDbContext.Offers
                from income in _marketplaceDbContext.NftIncomingTransactions.Where(i => i.OfferId == offer.Id)
                .DefaultIfEmpty()
                where income == null
                select offer
                )
                         .OrderBy(offer => offer.CollectionId)
                         .ThenBy(offer => offer.TokenId)
                         .ThenBy(offer => offer.CreationDate)
                         .ToListAsync();

            var incomeIndex = 0;
            var offerIndex  = 0;

            while (incomeIndex < incomes.Count && offerIndex < offers.Count)
            {
                var income = incomes[incomeIndex];
                var offer  = offers[offerIndex];
                if (income.CollectionId == offer.CollectionId && income.TokenId == offer.TokenId)
                {
                    incomeIndex++;
                    offerIndex++;
                    income.Offer = offer;
                    await _marketplaceDbContext.SaveChangesAsync();
                }

                if (income.CollectionId == offer.CollectionId)
                {
                    if (income.TokenId > offer.TokenId)
                    {
                        offerIndex++;
                    }
                    else
                    {
                        incomeIndex++;
                    }
                }
                else
                {
                    if (income.CollectionId > offer.CollectionId)
                    {
                        offerIndex++;
                    }
                    else
                    {
                        incomeIndex++;
                    }
                }
            }
        }
Example #4
0
        public async Task GetAllWishProductsCountReturnsZero()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("GetAllWishProductsCountReturnsZero")
                          .Options;
            var dbContext       = new MarketplaceDbContext(options);
            var profile         = new MarketplaceProfile();
            var configuration   = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper          = new Mapper(configuration);
            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);
            var userService     = new UserService(dbContext, mapper, userManagerMock.Object);

            var user = new MarketplaceUser()
            {
                Id = "eb243391-a7ee-42f6-bb4e-f28c74a68d84"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            //Act
            var actual   = userService.GetAllWishProductsCount(user);
            var expected = 0;

            //Assert
            Assert.Equal(expected, actual);
        }
Example #5
0
        public async Task SeedAsync(MarketplaceDbContext dbContext, IServiceProvider serviceProvider)
        {
            if (dbContext == null)
            {
                throw new ArgumentNullException(nameof(dbContext));
            }

            if (serviceProvider == null)
            {
                throw new ArgumentNullException(nameof(serviceProvider));
            }

            var logger = serviceProvider.GetService <ILoggerFactory>().CreateLogger(typeof(MarketplaceDbContextSeeder));

            var seeders = new List <ISeeder>
            {
                new RolesSeeder(),
                new CategoriesSeeder(),
                new SubcategoriesSeeder(),
                new ConditionsSeeder(),
                new PromotionsSeeder()
            };

            foreach (var seeder in seeders)
            {
                await seeder.SeedAsync(dbContext, serviceProvider);

                await dbContext.SaveChangesAsync();

                logger.LogInformation($"Seeder {seeder.GetType().Name} done.");
            }
        }
Example #6
0
        public async Task InvokeAsync(HttpContext context, RoleManager <IdentityRole> roleManager, UserManager <MarketplaceUser> userManager, MarketplaceDbContext dbContext)
        {
            if (!await roleManager.RoleExistsAsync(Infrastructure.GlobalConstants.AdministratorRole))
            {
                await roleManager.CreateAsync(new IdentityRole(Infrastructure.GlobalConstants.AdministratorRole));
            }
            if (!await roleManager.RoleExistsAsync(Infrastructure.GlobalConstants.UserRole))
            {
                await roleManager.CreateAsync(new IdentityRole(Infrastructure.GlobalConstants.UserRole));
            }

            if (!userManager.Users.Any())
            {
                var user = new MarketplaceUser()
                {
                    UserName     = ADMIN_EMAIL,
                    Email        = ADMIN_EMAIL,
                    FirstName    = ADMIN_FIRST_NAME,
                    LastName     = ADMIN_LAST_NAME,
                    ShoppingCart = new ShoppingCart()
                };

                user.ShoppingCart.UserId = user.Id;

                await userManager.CreateAsync(user, ADMIN_PASSWORD);

                await userManager.AddToRoleAsync(user, Infrastructure.GlobalConstants.AdministratorRole);

                await dbContext.SaveChangesAsync();
            }

            // Call the next delegate/middleware in the pipeline
            await _next(context);
        }
Example #7
0
        public async Task CreateIfUserDoesNotHasCartThrowExeption()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("CreateIfUserDoesNotHasCartThrowExeption")
                          .Options;
            var dbContext     = new MarketplaceDbContext(options);
            var profile       = new MarketplaceProfile();
            var configuration = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper        = new Mapper(configuration);
            var orderService  = new OrderService(dbContext, mapper);

            var user = new MarketplaceUser()
            {
                Id        = "8ca6c061-52de-4f0a-8885-a7501b6dae79",
                FirstName = "Ivan",
                LastName  = "Ivanov",
                Email     = "*****@*****.**"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var phone           = "0883288905";
            var shippingAddress = "ul.Stara Planina 23";
            //Act
            //Assert
            await Assert.ThrowsAsync <NullReferenceException>(() => orderService.Create(user, phone, shippingAddress));
        }
Example #8
0
        public async Task GetUserRolesWithInCorrectIdThrowsNull()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("GetUserRolesWithInCorrectIdThrowsNull")
                          .Options;
            var dbContext     = new MarketplaceDbContext(options);
            var profile       = new MarketplaceProfile();
            var configuration = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper        = new Mapper(configuration);

            var usersList = new List <MarketplaceUser>()
            {
                new MarketplaceUser()
                {
                    Id = "eb243391-a7ee-42f6-bb4e-f28c74a68d84", FirstName = "Ivan", Email = "*****@*****.**"
                },
                new MarketplaceUser()
                {
                    Id = "eb243391-a7ee-42f6-bb4e-f28c74a68d83", FirstName = "Gosho", Email = "*****@*****.**"
                },
            };

            dbContext.Users.Add(usersList[0]);
            dbContext.Users.Add(usersList[1]);
            await dbContext.SaveChangesAsync();

            var roleName  = "user";
            var listRoles = new List <string>()
            {
                "user", "admin"
            };

            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(x => x.GetUsersInRoleAsync(roleName))
            .Returns(Task.FromResult <IList <MarketplaceUser> >(usersList.ToList()));

            userManagerMock.Setup(x => x.GetRolesAsync(usersList[0]))
            .Returns(Task.FromResult <IList <string> >(listRoles));

            var userService = new UserService(dbContext, mapper, userManagerMock.Object);

            var id = "";
            //Act
            var result = await userService.GetUserRoles(id);

            var actual   = result.ToList();
            var expected = new List <string>();

            //Assert
            Assert.Equal(expected, actual);
        }
        public async Task CreateWithInCorrectInputIdReturnFalse()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("CreateWithInCorrectInputIdReturnFalse")
                          .Options;
            var dbContext     = new MarketplaceDbContext(options);
            var profile       = new MarketplaceProfile();
            var configuration = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper        = new Mapper(configuration);

            var user = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad21753111cc", Email = "*****@*****.**"
            };
            var user1 = new MarketplaceUser()
            {
                Id = "cd89dcbc-bb80-4246-b9b8-ad2175311111", Email = "*****@*****.**"
            };
            var listUsers = new List <MarketplaceUser>();

            listUsers.Add(user);
            listUsers.Add(user1);
            dbContext.Users.Add(user);
            dbContext.Users.Add(user1);
            await dbContext.SaveChangesAsync();

            var role = "Administrator";

            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(x => x.GetUsersInRoleAsync(role))
            .Returns(Task.FromResult <IList <MarketplaceUser> >(listUsers.ToList()));

            userManagerMock.Setup(x => x.IsInRoleAsync(user, role))
            .Returns(Task.FromResult(true));

            var messageService = new MessageService(dbContext, mapper, userManagerMock.Object);

            var userId  = "";
            var name    = "Ivan";
            var email   = "*****@*****.**";
            var phone   = "0883477980";
            var message = "This is test message!";

            //Act
            var actual = await messageService.Create(userId, name, email, phone, message);

            var expected = false;

            //Assert
            Assert.Equal(expected, actual);
        }
Example #10
0
        public async Task DeleteByIdWithInCorrectInputReturnsFalse()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("DeleteByIdWithInCorrectInputReturnsFalse")
                          .Options;
            var dbContext     = new MarketplaceDbContext(options);
            var profile       = new MarketplaceProfile();
            var configuration = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper        = new Mapper(configuration);

            var user = new MarketplaceUser()
            {
                Id = "eb243391-a7ee-42f6-bb4e-f28c74a68d84", FirstName = "Georgi", LastName = "Horozov", Email = "*****@*****.**"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var userStoreMock   = new Mock <IUserStore <MarketplaceUser> >();
            var userManagerMock = new Mock <UserManager <MarketplaceUser> >(userStoreMock.Object, null, null, null, null, null, null, null, null);

            userManagerMock.Setup(m => m.FindByIdAsync(user.Id))
            .Returns(Task.FromResult <MarketplaceUser>(null));

            var userService = new UserService(dbContext, mapper, userManagerMock.Object);

            var userId = "eb243391-a7ee-42f6-bb4e-f28c74a68d84";
            //Act
            var actual = await userService.DeleteById(userId);

            var expected = false;

            //Assert
            Assert.Equal(expected, actual);
        }
Example #11
0
        public async Task CreateWithCorrectInputOrderShouldReturnTrue()
        {
            //Arrange
            var options = new DbContextOptionsBuilder <MarketplaceDbContext>()
                          .UseInMemoryDatabase("AddProductShouldReturnTrue")
                          .Options;
            var dbContext     = new MarketplaceDbContext(options);
            var profile       = new MarketplaceProfile();
            var configuration = new MapperConfiguration(x => x.AddProfile(profile));
            var mapper        = new Mapper(configuration);
            var orderService  = new OrderService(dbContext, mapper);

            var user = new MarketplaceUser()
            {
                Id        = "8ca6c061-52de-4f0a-8885-a7501b6dae79",
                FirstName = "Ivan",
                LastName  = "Ivanov",
                Email     = "*****@*****.**"
            };

            dbContext.Users.Add(user);
            await dbContext.SaveChangesAsync();

            var cart = new ShoppingCart()
            {
                Id     = "86f81ed7-312e-4760-a594-1c40389440bd",
                UserId = user.Id
            };

            dbContext.ShoppingCarts.Add(cart);
            await dbContext.SaveChangesAsync();

            var product = new Product()
            {
                Id       = "532b377e-83f1-43db-a697-1e623107ae60",
                Name     = "TestProduct",
                Price    = 5.45m,
                Quantity = 1
            };

            dbContext.Products.Add(product);
            await dbContext.SaveChangesAsync();

            var shoppingCartProduct = new ShoppingCartProduct()
            {
                ProductId      = product.Id,
                Quantity       = product.Quantity,
                ShoppingCartId = cart.Id
            };

            cart.Products.Add(shoppingCartProduct);
            dbContext.ShoppingCarts.Update(cart);
            await dbContext.SaveChangesAsync();

            var phone           = "0883288905";
            var shippingAddress = "ul.Stara Planina 23";
            //Act
            var actual = await orderService.Create(user, phone, shippingAddress);

            var expected = true;

            //Assert
            Assert.True(actual.Equals(expected));
        }