/// <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); }
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(); }