public async Task Handle_NotebookNotFound_ShouldThrowNotFoundException()
        {
            // Arrange
            var notebook = await _wolkDbContext.CreateAndSaveNotebook();

            var request = new DeleteNotebookCommand(notebook.Id + 1);

            // Act / Assert
            await Assert.ThrowsExceptionAsync <NotFoundException>(() =>
                                                                  _handler.Handle(request, CancellationToken.None));
        }
        public async Task Handle_NotebookNotFound_ShouldThrowNotFoundException()
        {
            // Arrange
            var notebook = await _wolkDbContext.CreateAndSaveNotebook();

            var request = new UpdateNotebookCommand {
                Id = notebook.Id + 1, Name = Guid.NewGuid().ToString()
            };

            // Act / Assert
            await Assert.ThrowsExceptionAsync <NotFoundException>(() =>
                                                                  _handler.Handle(request, CancellationToken.None));
        }
Exemple #3
0
        public async Task Handle_NoteNotFound_ShouldThrowNotFoundException()
        {
            // Arrange
            var notebook = await _wolkDbContext.CreateAndSaveNotebook();

            var note = await _wolkDbContext.CreateAndSaveNote(notebook);

            var request = new UpdateNoteCommand
            {
                Id = note.Id + 1, Content = "bladibla", Title = "Note title", NotebookId = notebook.Id
            };

            // Act / Assert
            await Assert.ThrowsExceptionAsync <NotFoundException>(() =>
                                                                  _handler.Handle(request, CancellationToken.None));
        }
Exemple #4
0
        public async Task Update_HappyFlow()
        {
            // Arrange
            var notebook1 = await WolkDbContext.CreateAndSaveNotebook();
            var notebook2 = await WolkDbContext.CreateAndSaveNotebook();

            var note = await WolkDbContext.CreateAndSaveNote(notebook1);
            var url = $"/api/note/{note.Id}";

            var model = new MutateNoteModel
            {
                Title = Guid.NewGuid().ToString(),
                Content = Guid.NewGuid().ToString(),
                NotebookId = notebook2.Id,
                NoteType = NoteType.Markdown
            };
            var request = new HttpRequestMessage(HttpMethod.Put, url)
            {
                Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, MimeTypes.Json)
            };
            var token = await GetJwt();
            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
            ShouldBeEqual(note, model);
        }
Exemple #5
0
        public async Task GetAll_HappyFlow()
        {
            // Arrange
            var notebook1 = await WolkDbContext.CreateAndSaveNotebook();

            var notebook2 = await WolkDbContext.CreateAndSaveNotebook();

            var url = "/api/notebook";

            var request = new HttpRequestMessage(HttpMethod.Get, url);
            var token   = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

            var content = await response.Content.ReadAsStringAsync();

            var notebooks = JsonConvert.DeserializeObject <NotebookDto[]>(content);

            ShouldBeEqual(notebook1, notebooks[0]);
            ShouldBeEqual(notebook2, notebooks[1]);
        }
Exemple #6
0
        public async Task Create_HappyFlow()
        {
            // Arrange
            var url      = "/api/note";
            var notebook = await WolkDbContext.CreateAndSaveNotebook();

            var model = new MutateNoteModel
            {
                Title      = Guid.NewGuid().ToString(),
                Content    = Guid.NewGuid().ToString(),
                NotebookId = notebook.Id,
                NoteType   = NoteType.Markdown
            };
            var request = new HttpRequestMessage(HttpMethod.Post, url)
            {
                Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, MimeTypes.Json)
            };
            var token = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
            var content = await response.Content.ReadAsStringAsync();

            var returnedNote = JsonConvert.DeserializeObject <NoteDto>(content);

            var note = await WolkDbContext.Notes.SingleAsync();

            ShouldBeEqual(note, returnedNote);
        }
Exemple #7
0
        public async Task Create_NotebookNotFound_ShouldReturn400()
        {
            // Arrange
            var url      = "/api/note";
            var notebook = await WolkDbContext.CreateAndSaveNotebook();

            var model = new MutateNoteModel
            {
                Title      = Guid.NewGuid().ToString(),
                Content    = Guid.NewGuid().ToString(),
                NotebookId = notebook.Id + 1,
                NoteType   = NoteType.Markdown
            };
            var request = new HttpRequestMessage(HttpMethod.Post, url)
            {
                Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, MimeTypes.Json)
            };
            var token = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
        }
Exemple #8
0
        public async Task Update_HappyFlow()
        {
            // Arrange
            var notebook = await WolkDbContext.CreateAndSaveNotebook();

            var url = $"/api/notebook/{notebook.Id}";

            var model = new MutateNotebookModel {
                Name = Guid.NewGuid().ToString()
            };
            var request = new HttpRequestMessage(HttpMethod.Put, url)
            {
                Content = new StringContent(JsonConvert.SerializeObject(model), Encoding.UTF8, MimeTypes.Json)
            };
            var token = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
            Assert.AreEqual(model.Name, notebook.Name);
        }
        public async Task Validate_ValidationErrors()
        {
            // Arrange
            var notebook = await _wolkDbContext.CreateAndSaveNotebook();

            var command = new UpdateNoteCommand
            {
                Content    = string.Empty,
                Title      = new string('a', 201),
                NotebookId = notebook.Id + 1,
                NoteType   = NoteType.NotSet
            };

            // Act
            var result = await _validator.ValidateAsync(command);

            // Assert
            Assert.AreEqual(3, result.Errors.Count);
            Assert.IsTrue(result.Errors.ElementAt(0).ErrorMessage.Contains("200 characters or fewer"));
            Assert.IsTrue(result.Errors.ElementAt(1).ErrorMessage.Contains("must not be equal to"));
            Assert.IsTrue(result.Errors.ElementAt(2).ErrorMessage.Contains("Notebook with ID"));
        }
Exemple #10
0
        public async Task Handle_ShouldAddNoteCorrectly()
        {
            // Arrange
            var notebook = await _wolkDbContext.CreateAndSaveNotebook();

            var request = new CreateNoteCommand
            {
                Content = "bladibla", Title = "Note title", NotebookId = notebook.Id
            };

            // Act
            var result = await _handler.Handle(request, CancellationToken.None);

            // Assert
            var note = await _wolkDbContext.Notes.SingleAsync();

            ShouldBeEqual(note, result);
        }
Exemple #11
0
        public async Task Get_NotebookNotFound_ShouldReturn404()
        {
            // Arrange
            var notebook = await WolkDbContext.CreateAndSaveNotebook();

            var url = $"/api/notebook/{notebook.Id + 1}";

            var request = new HttpRequestMessage(HttpMethod.Get, url);
            var token   = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode);
        }
Exemple #12
0
        public async Task Delete_HappyFlow()
        {
            // Arrange
            var notebook = await WolkDbContext.CreateAndSaveNotebook();

            var url = $"/api/notebook/{notebook.Id}";

            var request = new HttpRequestMessage(HttpMethod.Delete, url);
            var token   = await GetJwt();

            request.AddJwtBearer(token);

            // Act
            using var response = await HttpClient.SendAsync(request);

            // Assert
            Assert.AreEqual(HttpStatusCode.NoContent, response.StatusCode);
            Assert.IsFalse(await WolkDbContext.Notebooks.AnyAsync());
        }