public async Task CreateMonsterTemplate_InsertNewEntityInDatabase() { const int subCategoryId = 10; const int locationId = 12; var itemTemplateId = Guid.NewGuid(); var executionContext = new NaheulbookExecutionContext(); var monsterSubCategory = CreateMonsterSubCategory(subCategoryId); var request = CreateRequest(subCategoryId, itemTemplateId, locationId); var itemTemplate = new ItemTemplate { Id = itemTemplateId }; var expectedMonsterTemplate = CreateMonsterTemplate(monsterSubCategory, itemTemplate); _unitOfWorkFactory.GetUnitOfWork().MonsterSubCategories.GetAsync(subCategoryId) .Returns(monsterSubCategory); _unitOfWorkFactory.GetUnitOfWork().ItemTemplates.GetByIdsAsync(Arg.Is <IEnumerable <Guid> >(x => x.SequenceEqual(new[] { itemTemplateId }))) .Returns(new List <ItemTemplate> { itemTemplate }); var monsterTemplate = await _service.CreateMonsterTemplateAsync(executionContext, request); var monsterTemplateRepository = _unitOfWorkFactory.GetUnitOfWork().MonsterTemplates; Received.InOrder(() => { monsterTemplateRepository.Add(monsterTemplate); _unitOfWorkFactory.GetUnitOfWork().Received(1).SaveChangesAsync(); }); monsterTemplate.Should().BeEquivalentTo(expectedMonsterTemplate); }
public async Task CreateLootAsync_CreateALootInDb_AndReturnIt() { const int groupId = 42; var createLootRequest = new CreateLootRequest { Name = "some-name" }; var naheulbookExecutionContext = new NaheulbookExecutionContext(); var group = new Group { Id = groupId }; _unitOfWorkFactory.GetUnitOfWork().Groups.GetAsync(groupId) .Returns(group); var actualLoot = await _service.CreateLootAsync(naheulbookExecutionContext, groupId, createLootRequest); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().Loots.Add(actualLoot); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); actualLoot.Name.Should().Be("some-name"); actualLoot.Group.Should().BeSameAs(group); }
public async Task CreateItemTemplateSection_AddANewItemTemplateSectionInDatabase() { var expectedItemTemplateSection = CreateItemTemplateSection(); var createItemTemplateSectionRequest = AutoFill <CreateItemTemplateSectionRequest> .One(settings : new AutoFillSettings { MaxDepth = 0 }); var itemTemplateSection = await _service.CreateItemTemplateSectionAsync(new NaheulbookExecutionContext(), createItemTemplateSectionRequest); var itemTemplateSectionRepository = _unitOfWorkFactory.GetUnitOfWork().ItemTemplateSections; Received.InOrder(() => { itemTemplateSectionRepository.Add(itemTemplateSection); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); itemTemplateSection.Should().BeEquivalentTo(expectedItemTemplateSection); }
public async Task GetEventsForGroupAsync_ShouldLoadEventsListAndReturnIt() { const int groupId = 42; var executionContext = new NaheulbookExecutionContext(); var group = new Group { Id = groupId }; var expectedEvents = new List <Event>(); _unitOfWorkFactory.GetUnitOfWork().Groups.GetAsync(groupId) .Returns(group); _unitOfWorkFactory.GetUnitOfWork().Events.GetByGroupIdAsync(groupId) .Returns(expectedEvents); var events = await _service.GetEventsForGroupAsync(executionContext, groupId); events.Should().BeSameAs(expectedEvents); }
public async Task WhenCreatingUser_CreateUserInDatabase_AndHashPassword() { _passwordHashingService.HashPassword(SomePassword) .Returns(SomeEncryptedPassword); await _service.CreateUserAsync(SomeUsername, SomePassword); var userRepository = _unitOfWorkFactory.GetUnitOfWork().Users; Received.InOrder(() => { userRepository.Add(Arg.Is <User>(u => u.Username == SomeUsername && u.HashedPassword == SomeEncryptedPassword && !string.IsNullOrEmpty(u.ActivationCode)) ); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); }
public async Task CreateGroupAsync_CreateANewGroupInDatabase_SettingMasterToCurrentUserId() { var createGroupRequest = new CreateGroupRequest { Name = "some-name" }; var naheulbookExecutionContext = new NaheulbookExecutionContext { UserId = 10 }; var actualGroup = await _service.CreateGroupAsync(naheulbookExecutionContext, createGroupRequest); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().Groups.Add(actualGroup); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); actualGroup.Name.Should().Be("some-name"); actualGroup.MasterId.Should().Be(10); }
public async Task CreateCharacterAsync_CreateANewCharacterInDatabase_SettingOwnerToCurrentUserId() { const int userId = 10; var createCharacterRequest = new CreateCharacterRequest { Name = "some-name" }; var naheulbookExecutionContext = new NaheulbookExecutionContext { UserId = userId }; var createdCharacter = new Character(); var initialInventory = new List <Item>(); _characterFactory.CreateCharacter(createCharacterRequest) .Returns(createdCharacter); _itemUtil.CreateInitialPlayerInventoryAsync(createCharacterRequest.Money) .Returns(initialInventory); var actualCharacter = await _service.CreateCharacterAsync(naheulbookExecutionContext, createCharacterRequest); Received.InOrder(() => { _unitOfWorkFactory.GetUnitOfWork().Characters.Add(createdCharacter); _unitOfWorkFactory.GetUnitOfWork().SaveChangesAsync(); }); actualCharacter.OwnerId.Should().Be(userId); createdCharacter.Should().BeSameAs(actualCharacter); createdCharacter.Items.Should().BeSameAs(initialInventory); }
public async Task GetItemTemplateAsync_LoadItemTemplateFromDbWithFullData_AndReturnsIt() { var itemTemplateId = Guid.NewGuid(); var expectedItemTemplate = new ItemTemplate(); _unitOfWorkFactory.GetUnitOfWork().ItemTemplates.GetWithModifiersWithRequirementsWithSkillsWithSkillModifiersWithSlotsWithUnSkillsAsync(itemTemplateId) .Returns(expectedItemTemplate); var itemTemplate = await _service.GetItemTemplateAsync(itemTemplateId); itemTemplate.Should().Be(expectedItemTemplate); }
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); }
public async Task GetOrCreateUserFromFacebookAsync_ShouldReturnAlreadyExistingUser() { const string facebookId = "some-facebook-id"; var expectedUser = new User(); _fakeUnitOfWorkFactory.GetUnitOfWork().Users.GetByFacebookIdAsync(facebookId) .Returns(expectedUser); var actual = await _service.GetOrCreateUserFromFacebookAsync("some-name", facebookId); actual.Should().BeSameAs(expectedUser); await _fakeUnitOfWorkFactory.GetUnitOfWork().DidNotReceive().SaveChangesAsync(); }
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 }); }