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