Пример #1
0
        public async Task AddItemToAsync_ShouldCreateAnItemInDatabase_ThenReturnsAFullyLoadedItem()
        {
            const int itemId         = 25;
            const int characterId    = 10;
            var       itemTemplateId = Guid.NewGuid();
            var       itemData       = new ItemData();
            var       itemTemplate   = new ItemTemplate();
            var       request        = new CreateItemRequest {
                ItemData = itemData, ItemTemplateId = itemTemplateId
            };
            var createdItem = new Item {
                Id = itemId
            };
            var fullyLoadedItem = new Item();

            _unitOfWorkFactory.GetUnitOfWork().ItemTemplates.GetAsync(itemTemplateId)
            .Returns(itemTemplate);
            _itemFactory.CreateItem(ItemOwnerType.Character, characterId, itemTemplate, itemData)
            .Returns(createdItem);
            _unitOfWorkFactory.GetUnitOfWork().Items.GetWithAllDataAsync(itemId)
            .Returns(fullyLoadedItem);

            var actualItem = await _service.AddItemToAsync(ItemOwnerType.Character, characterId, request);

            Received.InOrder(() =>
            {
                _unitOfWorkFactory.GetUnitOfWork().Items.Add(createdItem);
                _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync();
            });
            actualItem.Should().BeSameAs(fullyLoadedItem);
        }