public async Task AnyAsync_DesignatedRoleMappingsDoNotExist_ReturnsFalse(DesignatedRoleMappingSearchCriteria criteria)
        {
            (var modixContext, var uut) = BuildTestContext();

            var result = await uut.AnyAsync(criteria, default);

            result.ShouldBeFalse();
        }
Пример #2
0
        /// <inheritdoc />
        public async Task <int> DeleteAsync(DesignatedRoleMappingSearchCriteria criteria, ulong deletedById)
        {
            var entities = await ModixContext.DesignatedRoleMappings
                           .FilterBy(criteria)
                           .ToArrayAsync();

            foreach (var entity in entities)
            {
                DoEntityDelete(entity, deletedById);
            }

            await ModixContext.SaveChangesAsync();

            return(entities.Length);
        }
        public async Task <IActionResult> AutocompleteRoles(string query, [FromQuery] bool rankOnly)
        {
            if (query.StartsWith('@'))
            {
                query = query.Substring(1);
            }

            if (rankOnly)
            {
                var criteria = new DesignatedRoleMappingSearchCriteria
                {
                    GuildId   = UserGuild.Id,
                    Type      = DesignatedRoleType.Rank,
                    IsDeleted = false
                };

                IEnumerable <DesignatedRoleMappingBrief> result = await RoleService.SearchDesignatedRolesAsync(criteria);

                if (!string.IsNullOrWhiteSpace(query))
                {
                    result = result.Where(d => d.Role.Name.OrdinalContains(query));
                }

                return(Ok(result.Take(10).Select(d => new { d.Role.Id, d.Role.Name })));
            }
            else
            {
                IEnumerable <IRole> result = UserGuild.Roles;

                if (!string.IsNullOrWhiteSpace(query))
                {
                    result = result.Where(d => d.Name.OrdinalContains(query));
                }

                return(Ok(result.Take(10).Select(d => new { d.Id, d.Name })));
            }
        }
Пример #4
0
 /// <inheritdoc />
 public Task <IReadOnlyCollection <DesignatedRoleMappingBrief> > SearchDesignatedRolesAsync(DesignatedRoleMappingSearchCriteria searchCriteria)
 => DesignatedRoleMappingRepository.SearchBriefsAsync(searchCriteria);
 /// <inheritdoc />
 public async Task <IReadOnlyCollection <DesignatedRoleMappingBrief> > SearchBriefsAsync(DesignatedRoleMappingSearchCriteria criteria)
 => await ModixContext.Set <DesignatedRoleMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .AsExpandable()
 .Select(DesignatedRoleMappingBrief.FromEntityProjection)
 .ToArrayAsync();
 /// <inheritdoc />
 public Task <bool> AnyAsync(
     DesignatedRoleMappingSearchCriteria criteria,
     CancellationToken cancellationToken)
 => ModixContext.Set <DesignatedRoleMappingEntity>().AsNoTracking()
 .FilterBy(criteria)
 .AnyAsync(cancellationToken);
        public async Task DeleteAsync_DesignatedRoleMappingsDoNotExist_DoesNotUpdateDesignatedRoleMappingsAndReturns0(DesignatedRoleMappingSearchCriteria criteria, ulong deletedById)
        {
            (var modixContext, var uut) = BuildTestContext();

            var result = await uut.DeleteAsync(criteria, deletedById);

            result.ShouldBe(0);

            modixContext.Set <DesignatedRoleMappingEntity>()
            .AsQueryable()
            .Select(x => x.Id)
            .ShouldBe(DesignatedRoleMappings.Entities
                      .Select(x => x.Id));

            modixContext.Set <DesignatedRoleMappingEntity>()
            .EachShould(x => x.ShouldNotHaveChanged());

            modixContext.Set <ConfigurationActionEntity>()
            .AsQueryable()
            .Select(x => x.Id)
            .ShouldBe(ConfigurationActions.Entities
                      .Where(x => x.DesignatedRoleMappingId != null)
                      .Select(x => x.Id));

            modixContext.Set <ConfigurationActionEntity>()
            .EachShould(x => x.ShouldNotHaveChanged());

            await modixContext.ShouldHaveReceived(1)
            .SaveChangesAsync();
        }
        public async Task DeleteAsync_DesignatedRoleMappingsAreNotDeleted_UpdatesDesignatedRoleMappingsAndReturnsCount(DesignatedRoleMappingSearchCriteria criteria, ulong deletedById, long[] designatedRoleMappingIds)
        {
            (var modixContext, var uut) = BuildTestContext();

            var result = await uut.DeleteAsync(criteria, deletedById);

            result.ShouldBe(designatedRoleMappingIds
                            .Where(x => DesignatedRoleMappings.Entities
                                   .Any(y => (y.Id == x) && (y.DeleteActionId == null)))
                            .Count());

            modixContext.Set <DesignatedRoleMappingEntity>()
            .AsQueryable()
            .Select(x => x.Id)
            .ShouldBe(DesignatedRoleMappings.Entities.Select(x => x.Id));

            modixContext.Set <DesignatedRoleMappingEntity>()
            .Where(x => designatedRoleMappingIds.Contains(x.Id) && (x.DeleteActionId == null))
            .EachShould(entity =>
            {
                var originalEntity = DesignatedRoleMappings.Entities.First(x => x.Id == entity.Id);

                entity.GuildId.ShouldBe(originalEntity.GuildId);
                entity.RoleId.ShouldBe(originalEntity.RoleId);
                entity.Type.ShouldBe(originalEntity.Type);
                entity.CreateActionId.ShouldBe(originalEntity.CreateActionId);
                entity.DeleteActionId.ShouldNotBeNull();

                modixContext.Set <ConfigurationActionEntity>().ShouldContain(x => x.Id == entity.DeleteActionId);
                var deleteAction = modixContext.Set <ConfigurationActionEntity>().First(x => x.Id == entity.DeleteActionId);

                deleteAction.GuildId.ShouldBe(entity.GuildId);
                deleteAction.Type.ShouldBe(ConfigurationActionType.DesignatedRoleMappingDeleted);
                deleteAction.Created.ShouldBeInRange(
                    DateTimeOffset.Now - TimeSpan.FromMinutes(1),
                    DateTimeOffset.Now + TimeSpan.FromMinutes(1));
                deleteAction.CreatedById.ShouldBe(deletedById);
                deleteAction.DesignatedRoleMappingId.ShouldBeNull();
                deleteAction.DesignatedRoleMappingId.ShouldBe(entity.Id);
                deleteAction.DesignatedRoleMappingId.ShouldBeNull();
            });

            modixContext.Set <DesignatedRoleMappingEntity>()
            .AsEnumerable()
            .Where(x => !designatedRoleMappingIds.Contains(x.Id) || DesignatedRoleMappings.Entities
                   .Any(y => (y.Id == x.Id) && (x.DeleteActionId == null)))
            .EachShould(x => x.ShouldNotHaveChanged());

            modixContext.Set <ConfigurationActionEntity>()
            .AsEnumerable()
            .Where(x => DesignatedRoleMappings.Entities
                   .Any(y => (y.DeleteActionId == x.Id) && designatedRoleMappingIds.Contains(y.Id)))
            .EachShould(x => x.ShouldNotHaveChanged());

            await modixContext.ShouldHaveReceived(1)
            .SaveChangesAsync();
        }
        public async Task SearchBriefsAsync_DesignatedRoleMappingsDoNotExist_ReturnsEmpty(DesignatedRoleMappingSearchCriteria criteria)
        {
            (var modixContext, var uut) = BuildTestContext();

            var result = await uut.SearchBriefsAsync(criteria);

            result.ShouldNotBeNull();
            result.ShouldBeEmpty();
        }
        public async Task SearchBriefsAsync_DesignatedRoleMappingsExist_ReturnsMatchingBriefs(DesignatedRoleMappingSearchCriteria criteria, long[] resultIds)
        {
            (var modixContext, var uut) = BuildTestContext();

            var result = await uut.SearchBriefsAsync(criteria);

            result.ShouldNotBeNull();
            result.Select(x => x.Id).ShouldBe(resultIds);
            result.EachShould(x => x.ShouldMatchTestData());
        }
 /// <inheritdoc />
 public Task <bool> AnyAsync(DesignatedRoleMappingSearchCriteria criteria)
 => ModixContext.DesignatedRoleMappings.AsNoTracking()
 .FilterBy(criteria)
 .AnyAsync();