Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #5
0
        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));
        }
Пример #6
0
        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);
        }
Пример #11
0
        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
            }));
        }
Пример #12
0
        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));
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }