/// <inheritdoc /> public async Task <bool> TryUpdateAsync(ulong roleId, Action <GuildRoleMutationData> updateAction) { if (updateAction == null) { throw new ArgumentNullException(nameof(updateAction)); } var entity = await ModixContext.Set <GuildRoleEntity>() .Where(x => x.RoleId == roleId) .FirstOrDefaultAsync(); if (entity == null) { return(false); } var data = GuildRoleMutationData.FromEntity(entity); updateAction.Invoke(data); data.ApplyTo(entity); ModixContext.UpdateProperty(entity, x => x.Name); ModixContext.UpdateProperty(entity, x => x.Position); await ModixContext.SaveChangesAsync(); return(true); }
public async Task TryUpdateAsync_GuildRoleExists_UpdatesGuildRolesAndReturnsTrue(ulong roleId) { (var modixContext, var uut) = BuildTestContext(); var guildRole = modixContext.Set <GuildRoleEntity>().Single(x => x.RoleId == roleId); var mutatedData = new GuildRoleMutationData() { Name = "UpdatedRole", Position = 20 }; var result = await uut.TryUpdateAsync(roleId, data => { data.Name.ShouldBe(guildRole.Name); data.Position.ShouldBe(guildRole.Position); data.Name = mutatedData.Name; data.Position = mutatedData.Position; }); result.ShouldBeTrue(); guildRole.Name.ShouldBe(mutatedData.Name); guildRole.Position.ShouldBe(mutatedData.Position); modixContext.Set <GuildRoleEntity>() .AsQueryable() .Select(x => x.RoleId) .ShouldBe(GuildRoles.Entities .Select(x => x.RoleId)); modixContext.Set <GuildRoleEntity>() .Where(x => x.RoleId != roleId) .EachShould(x => x.ShouldNotHaveChanged()); await modixContext.ShouldHaveReceived(1) .SaveChangesAsync(); }
public TestContext( bool roleExists) { GuildRoleMutationData = new GuildRoleMutationData(); MockCreateTransaction = new Mock <IRepositoryTransaction>(); MockGuildRoleRepository = new Mock <IGuildRoleRepository>(); MockGuildRoleRepository .Setup(x => x.BeginCreateTransactionAsync()) .ReturnsAsync(() => MockCreateTransaction.Object); MockGuildRoleRepository .Setup(x => x.TryUpdateAsync(It.IsAny <ulong>(), It.IsAny <Action <GuildRoleMutationData> >())) .Returns <ulong, Action <GuildRoleMutationData> >((roleId, updateAction) => { if (roleExists) { updateAction.Invoke(GuildRoleMutationData); } return(Task.FromResult(roleExists)); }); }