public async Task <IActionResult> CreateAsync([FromBody] CreateAttachmentCommand command) { await DispatchAsync(command); var cached = GetDto <AttachmentDto>(command.Id); return(Created("api/attachments", cached)); }
public async Task Validate_NoValidationErrors() { // Arrange var note = await _wolkDbContext.CreateAndSaveNote(); var request = new CreateAttachmentCommand { Contents = new byte[] { 1, 2, 3 }, Filename = new string('a', 299), NoteId = note.Id }; // Act var result = await _validator.ValidateAsync(request, CancellationToken.None); // Assert Assert.IsFalse(result.Errors.Any()); }
public async Task Validate_ValidationErrors() { // Arrange var note = await _wolkDbContext.CreateAndSaveNote(); var request = new CreateAttachmentCommand { Contents = new byte[0], Filename = new string('a', 301), NoteId = note.Id + 1 }; // Act var result = await _validator.ValidateAsync(request, CancellationToken.None); // Assert Assert.AreEqual(3, result.Errors.Count); Assert.IsTrue(result.Errors.ElementAt(0).ErrorMessage.Contains("Please provide a file.")); Assert.IsTrue(result.Errors.ElementAt(1).ErrorMessage.Contains("300 characters or fewer")); Assert.IsTrue(result.Errors.ElementAt(2).ErrorMessage.Contains("Note with ID")); }
public async Task Handle_ShouldAddAttachmentCorrectly() { // Arrange var note = await _wolkDbContext.CreateAndSaveNote(); var request = new CreateAttachmentCommand { Contents = new byte[] { 1, 2, 3, 4 }, Filename = "file.txt", NoteId = note.Id }; var mime = "text/plain"; _mockMimeService .Setup(m => m.GetMimeType(request.Filename)) .Returns(mime); // Act var result = await _handler.Handle(request, CancellationToken.None); // Assert Assert.AreEqual(request.Filename, result.Filename); Assert.AreEqual(request.NoteId, result.NoteId); Assert.AreEqual(4, result.FileSize); Assert.AreEqual(mime, result.MimeType); var attachment = await _wolkDbContext.Attachments.SingleAsync(); ShouldBeEqual(attachment, result); Assert.IsFalse(string.IsNullOrWhiteSpace(attachment.InternalFilename)); var expectedFilePath = Path.Combine(_configuration.UploadsPath, attachment.InternalFilename); _mockFileService .Verify(m => m.WriteAllBytes(expectedFilePath, request.Contents), Times.Once); }