Esempio n. 1
0
        /// <inheritdoc />
        public async Task <long> CreateAsync(TagCreationData data)
        {
            if (data is null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            var entity = data.ToEntity();

            await ModixContext.Tags.AddAsync(entity);

            await ModixContext.SaveChangesAsync();

            entity.CreateAction.NewTagId = entity.Id;
            await ModixContext.SaveChangesAsync();

            return(entity.Id);
        }
Esempio n. 2
0
        public async Task CreateAsync_DataIsNotNull_InsertsTag(TagCreationData data)
        {
            (var modixContext, var uut) = BuildTestContext();

            var id = await uut.CreateAsync(data);

            modixContext.Tags.ShouldContain(x => x.Id == id);
            var tag = modixContext.Tags.First(x => x.Id == id);

            tag.GuildId.ShouldBe(data.GuildId);
            tag.CreateAction.CreatedById.ShouldBe(data.CreatedById);
            tag.Name.ShouldBe(data.Name);
            tag.Content.ShouldBe(data.Content);
            tag.Uses.ShouldBe(data.Uses);
            tag.CreateActionId.ShouldNotBeNull();
            tag.DeleteActionId.ShouldBeNull();

            modixContext.Tags.Where(x => x.Id != tag.Id).Select(x => x.Id).ShouldBe(Tags.Entities.Select(x => x.Id));
            modixContext.Tags.Where(x => x.Id != tag.Id).EachShould(x => x.ShouldNotHaveChanged());

            modixContext.TagActions.ShouldContain(x => x.Id == tag.CreateActionId);
            var createAction = modixContext.TagActions.First(x => x.Id == tag.CreateActionId);

            createAction.GuildId.ShouldBe(data.GuildId);
            createAction.Type.ShouldBe(TagActionType.TagCreated);
            createAction.Created.ShouldBeInRange(
                DateTimeOffset.Now - TimeSpan.FromSeconds(1),
                DateTimeOffset.Now + TimeSpan.FromSeconds(1));
            createAction.NewTagId.ShouldBe(tag.Id);
            createAction.OldTagId.ShouldBeNull();

            modixContext.TagActions.Where(x => x.Id != createAction.Id).Select(x => x.Id).ShouldBe(TagActions.Entities.Select(x => x.Id));
            modixContext.TagActions.Where(x => x.Id != createAction.Id).EachShould(x => x.ShouldNotHaveChanged());

            await modixContext.ShouldHaveReceived(2)
            .SaveChangesAsync();
        }