Пример #1
0
        public async Task CreateMonsterAsync_ShouldCreateNewEntryInDatabase_AndLinkItToGroup()
        {
            const int groupId          = 42;
            var       request          = CreateRequest();
            var       executionContext = new NaheulbookExecutionContext();
            var       group            = new Group {
                Id = groupId
            };

            _unitOfWorkFactory.GetUnitOfWork().Groups.GetAsync(groupId)
            .Returns(group);
            _jsonUtil.Serialize(request.Data)
            .Returns("some-json-data");
            _jsonUtil.Serialize(request.Modifiers)
            .Returns("some-json-modifiers");

            var actualMonster = await _service.CreateMonsterAsync(executionContext, groupId, request);

            Received.InOrder(() =>
            {
                _activeStatsModifierUtil.InitializeModifierIds(request.Modifiers);
                _unitOfWorkFactory.GetUnitOfWork().Monsters.Add(actualMonster);
                _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync();
            });

            actualMonster.Should().BeEquivalentTo(new Monster
            {
                Name      = "some-monster-name",
                Data      = "some-json-data",
                Modifiers = "some-json-modifiers",
                Group     = group
            });
        }