public async Task Handle_SetsDraftToFalse_WhenThereIsAParentId(bool intitialStatus) { //arrange var owner = new User { Username = "******" }; DbContext.Users.Add(owner); var parent = new Prompt { Owner = owner }; DbContext.Prompts.Add(parent); await DbContext.SaveChangesAsync(); var user = new GetUserViewModel { Id = owner.Id }; _mockUserService.Setup(e => e.TryGetCurrentUser(out user)).Returns(true); var command = new CreatePromptCommand { OwnerId = user.Id, SaveDraft = intitialStatus, ParentId = parent.Id }; //act var actual = await _handler.Handle(command); //assert Prompt?actualPrompt = DbContext.Prompts.Find(actual); Assert.False(actualPrompt.IsDraft); }
Handle_ThrowsCreatePromptUnauthorizedParentException_WhenParentIdIsGiven_AndWhenThereIsNoCurrentUser() { //arrange var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var parent = new Prompt { OwnerId = user.Id }; DbContext.Prompts.Add(parent); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { ParentId = parent.Id }; //act + assert await Assert.ThrowsAsync <CreatePromptUnauthorizedParentException>( async() => await _handler.Handle(command)); }
public async Task Handle_CreatesAPromptWithTheParentId_WhenParentIdIsGiven_AndTheCurrentUserIsTheSameId() { //arrange var owner = new User { Username = "******" }; DbContext.Users.Add(owner); await DbContext.SaveChangesAsync(); var parent = new Prompt { OwnerId = owner.Id }; DbContext.Prompts.Add(parent); await DbContext.SaveChangesAsync(); var user = new GetUserViewModel { Id = owner.Id }; _mockUserService.Setup(e => e.TryGetCurrentUser(out user)).Returns(true); var command = new CreatePromptCommand { ParentId = parent.Id, OwnerId = owner.Id }; //act var actual = await _handler.Handle(command); //assert Prompt?actualPrompt = await DbContext.Prompts.FindAsync(actual); Assert.NotNull(actualPrompt); Assert.Equal(parent.Id, actualPrompt.ParentId); }
public async Task ValidateAsync_ReturnsIsValidTrue_WhenScriptZipHasValidZipHeaders_AndTheExpectedFilenames() { //arrange CreatePromptCommand command = CreateValidCommand(); var expectedFiles = new[] { "contextModifier.js", "inputModifier.js", "outputModifier.js", "shared.js" }; await using (var memoryStream = new MemoryStream()) { using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create)) { foreach (var file in expectedFiles) { zip.CreateEntry(file); } } command.ScriptZip = memoryStream.ToArray(); } //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.True(actual.IsValid); }
Handle_ThrowsCreatePromptUnauthorizedParentException_WhenParentIdIsGiven_AndTheCurrentUserIsNotTheSameId() { //arrange var owner = new User { Username = "******" }; var ownerTwo = new User { Username = "******" }; DbContext.Users.Add(owner); DbContext.Users.Add(ownerTwo); await DbContext.SaveChangesAsync(); var parent = new Prompt { OwnerId = owner.Id }; DbContext.Prompts.Add(parent); await DbContext.SaveChangesAsync(); var user = new GetUserViewModel { Id = ownerTwo.Id }; _mockUserService.Setup(e => e.TryGetCurrentUser(out user)).Returns(true); var command = new CreatePromptCommand { ParentId = parent.Id }; //act + assert await Assert.ThrowsAsync <CreatePromptUnauthorizedParentException>( async() => await _handler.Handle(command)); }
public async Task Handle_Throws_WhenThereIsNoValidOwner(int ownerId) { //arrange var command = new CreatePromptCommand { OwnerId = ownerId }; //act + assert await Assert.ThrowsAnyAsync <Exception>(async() => await _handler.Handle(command)); }
public async Task ValidateAsync_ReturnsIsValidFalse_WhenCommandIsEmpty() { //arrange var command = new CreatePromptCommand(); //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.False(actual.IsValid); }
public async Task ValidateAsync_ReturnsIsValidFalse_WhenScriptZipIsAnEmptyArray() { //arrange CreatePromptCommand command = CreateValidCommand(); command.ScriptZip = new byte[] { }; //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.False(actual.IsValid); }
public async Task ValidateAsync_ReturnsIsValidFalse_WhenScriptZipHasValidZipHeaders_AndNoOtherContents() { //arrange CreatePromptCommand command = CreateValidCommand(); command.ScriptZip = new byte[] { 0x50, 0x4b, 0x03, 0x04 }; //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.False(actual.IsValid); }
public async Task ValidateAsync_ReturnsIsValidTrue_WhenTitleContentAndTagsAreFilledIn_AndHasAParentId() { //arrange var command = new CreatePromptCommand { Title = "NewTitle", PromptContent = "PromptContent", ParentId = 1 }; //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.True(actual.IsValid); }
public async Task <ActionResult> Create(int?parentId, CancellationToken cancellationToken) { GetServerFlagViewModel?flag = await _mediator.Send(new GetServerFlagQuery(ServerFlagName.CreateDisabled), cancellationToken); var command = new CreatePromptCommand { ParentId = parentId }; return(View(new CreatePromptViewModel { Command = command, CreationDisabled = flag.Enabled, DisabledMessage = flag.Message })); }
public async Task Handle_AddsANewPromptToTheDatabase_AndReturnsThePromptId() { //arrange var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { OwnerId = user.Id }; //act var actual = await _handler.Handle(command); //assert Assert.Single(DbContext.Prompts); Assert.NotNull(DbContext.Prompts.Find(actual)); }
public async Task Handle_CreatesAPromptWithScriptZipSetToNull() { //arrange var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { OwnerId = user.Id, ScriptZip = null }; //act var actualId = await _handler.Handle(command); //assert Prompt?actualPrompt = await DbContext.Prompts.FindAsync(actualId); Assert.Null(actualPrompt.ScriptZip); }
public async Task Handle_CreatesAPromptWithAPublishDate_WhenItIsNotADraft() { //arrange var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { OwnerId = user.Id, SaveDraft = false }; //act var actual = await _handler.Handle(command); //assert Prompt?actualPrompt = await DbContext.Prompts.FindAsync(actual); Assert.NotNull(actualPrompt.PublishDate); }
public async Task Handle_SetsPromptToDraft_WhenSaveDraftIsTrue() { //arrange var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { OwnerId = user.Id, SaveDraft = true }; //act var actual = await _handler.Handle(command); //assert Prompt?prompt = DbContext.Prompts.Find(actual); Assert.True(prompt.IsDraft); }
public async Task Handle_CreatesAPromptWithNovelAiScenarioSetToExpectedValue() { //arrange const string?expectedString = "{\"test\":\"test\"}"; var user = new User { Username = "******" }; DbContext.Users.Add(user); await DbContext.SaveChangesAsync(); var command = new CreatePromptCommand { OwnerId = user.Id, NovelAiScenario = expectedString }; //act var actualId = await _handler.Handle(command); //assert Prompt?actualPrompt = await DbContext.Prompts.FindAsync(actualId); Assert.Equal(expectedString, actualPrompt.NovelAiScenario); }
ValidateAsync_ReturnsIsValidFalse_WhenScriptZipHasValidZipHeaders_AndFiveFiles_ButNotTheExpectedFilenames() { //arrange CreatePromptCommand command = CreateValidCommand(); await using (var memoryStream = new MemoryStream()) { using (var zip = new ZipArchive(memoryStream, ZipArchiveMode.Create)) { for (var i = 0; i < 5; i++) { zip.CreateEntry(i.ToString()); } } command.ScriptZip = memoryStream.ToArray(); } //act ValidationResult?actual = await _validator.ValidateAsync(command); //assert Assert.False(actual.IsValid); }