示例#1
0
        public async Task RemoveItemForUser_ShouldRemoveItem_IfUserItemCanBeFoundByItemName()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);
                int     userId          = 1;
                int     itemId          = 1;
                string  itemName        = "Shortsword";
                context.Add(new Item {
                    Id = itemId, Name = itemName
                });
                context.Add(new UserItem {
                    ItemId = itemId, UserId = userId
                });
                context.SaveChanges();

                // Act
                await userItemQueries.RemoveItemForUser(userId, new ItemDto { Name = itemName });

                // Assert
                Assert.Empty(context.UserItems);
            }
        }
示例#2
0
        public async Task DoesUserHaveItem_ShouldReturnTrue_IfCanBeMatchedOnUserAndItemName()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper   = GetAutoMapperMapper();
                int     userId   = 1;
                int     itemId   = 1;
                string  itemName = "Longsword";
                context.Add(new Item {
                    Id = itemId, Name = itemName
                });
                context.Add(new UserItem {
                    ItemId = itemId, UserId = userId
                });
                context.SaveChanges();
                var userItemQueries = new UserItemQueries(context, mapper);

                // Act
                bool matchFound = await userItemQueries
                                  .DoesUserHaveItem(userId, new ItemDto { Name = itemName });

                // Assert
                Assert.True(matchFound);
            }
        }
示例#3
0
        public async Task AddItemForUser_ShouldDoNothing_IfValidArgumentsAndMaximumNumberOfItemsNotReached()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);
                int     itemId          = 1;
                int     userId          = 1;
                context.Add(new User {
                    Id = userId, Name = "Rick Sanchez"
                });
                context.Add(new Item {
                    Id = itemId, Name = "Weapon"
                });
                for (int i = 0; i < UserItemDto.MaximumNumberOfAnyItemAllowed - 1; i++)
                {
                    context.Add(new UserItem {
                        ItemId = itemId, UserId = userId
                    });
                }
                context.SaveChanges();

                // Act
                await userItemQueries.AddItemForUser(userId, new ItemDto { Id = itemId });

                // Assert
                Assert.Equal(UserItemDto.MaximumNumberOfAnyItemAllowed, context.UserItems.Count());
            }
        }
示例#4
0
        public async Task GetAllItemsForUser_ShouldReturnEmptyList_IfUserCannotBeMatchedOrDataDoesntExist()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);

                // Act
                IEnumerable <UserItemDto> userItems = await userItemQueries.GetAllItemsForUser(1);

                // Assert
                Assert.Empty(userItems);
            }
        }
示例#5
0
        public async Task DoesUserHaveItem_ShouldReturnFalse_IfNoUserItemCanBeMatched()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);

                // Act
                bool matchFound = await userItemQueries
                                  .DoesUserHaveItem(1, new ItemDto { Id = 1, Name = "ExampleItem" });

                // Assert
                Assert.False(matchFound);
            }
        }
示例#6
0
        public async Task GetMatchingItemsForUser_ShouldReturnNull_IfUserCannotBeMatchedOrDataDoesntExist()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);

                // Act
                UserItemDto userItem = await userItemQueries
                                       .GetMatchingItemsForUser(1, new ItemDto { Id = 1, Name = "Weapon" });

                // Assert
                Assert.Null(userItem);
            }
        }
示例#7
0
        public async Task GetMatchingItemsForUser_ShouldReturnUserItem_IfUserAndItemIdCanBeMatched()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                int    userId   = 1;
                string userName = "******";
                context.Add(new User {
                    Id = userId, Name = userName
                });

                int    numberOfSwords = 46;
                int    swordId        = 1;
                string swordName      = "Longsword";
                context.Add(new Item {
                    Id = swordId, Name = swordName
                });

                for (int i = 0; i < numberOfSwords; i++)
                {
                    context.Add(new UserItem {
                        ItemId = swordId, UserId = userId
                    });
                }

                context.SaveChanges();

                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);

                // Act
                UserItemDto userItem = await userItemQueries
                                       .GetMatchingItemsForUser(userId, new ItemDto { Id = swordId });

                // Assert
                Assert.NotNull(userItem);
                Assert.Equal(userId, userItem.UserId);
                Assert.Equal(userName, userItem.UserName);
                Assert.Equal(numberOfSwords, userItem.ItemCount);
                Assert.Equal(swordId, userItem.ItemId);
                Assert.Equal(swordName, userItem.ItemName);
            }
        }
示例#8
0
        public async Task RemoveItemForUser_ShouldDoNothing_IfUserItemCannotBeFound()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);
                int     itemId          = 1;
                context.Add(new UserItem {
                    Id = itemId, UserId = 2
                });
                context.SaveChanges();

                // Act
                await userItemQueries.RemoveItemForUser(1, new ItemDto { Id = itemId });

                // Assert
                Assert.Single(context.UserItems);
            }
        }
示例#9
0
        public async Task AddItemForUser_ShouldDoNothing_IfUserCannotBeMatched()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);
                int     itemId          = 1;
                context.Add(new Item {
                    Id = itemId, Name = "Weapon"
                });
                context.SaveChanges();

                // Act
                await userItemQueries.AddItemForUser(1, new ItemDto { Id = itemId });

                // Assert
                Assert.Empty(context.UserItems);
            }
        }
示例#10
0
        public async Task GetAllItemsForUser_ShouldReturnListOfUserItemsWithCorrectCounts_IfDataCanBeMatched()
        {
            using (ApplicationDbContext context = ApplicationDbContextHelper.GetContext())
            {
                // Arrange
                int    userId   = 1;
                string userName = "******";
                context.Add(new User {
                    Id = userId, Name = userName
                });

                int    numberOfSwords = 46;
                int    swordId        = 1;
                string swordName      = "Longsword";
                context.Add(new Item {
                    Id = swordId, Name = swordName
                });

                int    numberOfBatteries = 3;
                int    batteryId         = 2;
                string batteryName       = "Large Battery";
                context.Add(new Item {
                    Id = batteryId, Name = batteryName
                });

                for (int i = 0; i < numberOfSwords; i++)
                {
                    context.Add(new UserItem {
                        ItemId = swordId, UserId = userId
                    });
                }
                for (int i = 0; i < numberOfBatteries; i++)
                {
                    context.Add(new UserItem {
                        ItemId = batteryId, UserId = userId
                    });
                }

                context.SaveChanges();

                IMapper mapper          = GetAutoMapperMapper();
                var     userItemQueries = new UserItemQueries(context, mapper);

                // Act
                IEnumerable <UserItemDto> actualUserItems = await userItemQueries.GetAllItemsForUser(userId);

                // Assert
                var expectedUserItems = new List <UserItemDto>
                {
                    new UserItemDto
                    {
                        UserId    = userId,
                        UserName  = userName,
                        ItemCount = numberOfSwords,
                        ItemId    = swordId,
                        ItemName  = swordName
                    },
                    new UserItemDto
                    {
                        UserId    = userId,
                        UserName  = userName,
                        ItemCount = numberOfBatteries,
                        ItemId    = batteryId,
                        ItemName  = batteryName
                    }
                };
                Assert.Equal
                (
                    JsonConvert.SerializeObject(expectedUserItems),
                    JsonConvert.SerializeObject(actualUserItems)
                );
            }
        }