adding
This commit is contained in:
+175
@@ -0,0 +1,175 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Azure;
|
||||
using Azure.Storage.Blobs.Models;
|
||||
using LCU.API.Internal.Document.Exceptions;
|
||||
using LCU.API.Internal.Document.Services;
|
||||
using LCU.API.Internal.DocumentLib.DataAccess;
|
||||
using Moq;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace LCU.API.Internal.DocumentTest.Services;
|
||||
|
||||
public class BlobApiServiceTest
|
||||
{
|
||||
private BlobApiService _blobApiService;
|
||||
private Mock<IBlobApiDao> _mockBlobDao;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_mockBlobDao = new Mock<IBlobApiDao>();
|
||||
_blobApiService = new BlobApiService(_mockBlobDao.Object);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocumentContent_Success()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
await using var testStream = new MemoryStream(Encoding.UTF8.GetBytes("whatever"));
|
||||
var mockContent = BlobsModelFactory.BlobDownloadStreamingResult(testStream);
|
||||
var mockContentResponse = new Mock<Response<BlobDownloadStreamingResult>>();
|
||||
|
||||
mockContentResponse.Setup(content => content.Value).Returns(mockContent).Verifiable();
|
||||
_mockBlobDao
|
||||
.Setup(x => x.GetDocumentFromBlob(docBlobId)).ReturnsAsync(mockContentResponse.Object)
|
||||
.Verifiable();
|
||||
|
||||
var returnedDocInfo = await _blobApiService.GetDocumentContent(docBlobId);
|
||||
|
||||
Assert.NotNull(returnedDocInfo);
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetDocument_ContentValueIsNull_DocumentBlobServiceExceptionThrown()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
|
||||
_mockBlobDao
|
||||
.Setup(x => x.GetDocumentFromBlob(docBlobId)).ReturnsAsync((Response<BlobDownloadStreamingResult>)null)
|
||||
.Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.GetDocumentContent(docBlobId));
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetDocument_ExceptionThrown_DocumentBlobServiceExceptionThrown()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
|
||||
_mockBlobDao
|
||||
.Setup(x => x.GetDocumentFromBlob(docBlobId)).ThrowsAsync(new Exception("Thrown from unit test"))
|
||||
.Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.GetDocumentContent(docBlobId));
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task UploadDocumentContent_Success()
|
||||
{
|
||||
var docContent = new byte[10];
|
||||
_mockBlobDao.Setup(x => x.SaveDocumentToBlob(docContent)).Verifiable();
|
||||
|
||||
await _blobApiService.UploadDocumentContent(docContent);
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UploadDocumentContent_Exception_ThrowsBlobApiServiceException()
|
||||
{
|
||||
var docContent = new byte[10];
|
||||
_mockBlobDao.Setup(x => x.SaveDocumentToBlob(docContent)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.UploadDocumentContent(docContent));
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task UpdateDocumentContent_Success()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
var docContent = new byte[10];
|
||||
_mockBlobDao.Setup(x => x.UpdateDocumentInBlob(docBlobId, docContent)).Verifiable();
|
||||
|
||||
await _blobApiService.UpdateDocumentContent(docBlobId, docContent);
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UpdateDocumentContent_Exception_ThrowsBlobApiServiceException()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
var docContent = new byte[10];
|
||||
_mockBlobDao.Setup(x => x.UpdateDocumentInBlob(docBlobId, docContent)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.UpdateDocumentContent(docBlobId, docContent));
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UpdateDocumentContent_Exception_DocumentBlobIdIsNull()
|
||||
{
|
||||
Guid? docBlobId = null;
|
||||
var docContent = new byte[10];
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.UpdateDocumentContent(docBlobId, docContent));
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public async Task DeleteDocumentContent_Success()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
_mockBlobDao.Setup(x => x.RemoveDocumentFromBlob(docBlobId)).Verifiable();
|
||||
|
||||
await _blobApiService.DeleteDocumentContent(docBlobId);
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeleteDocumentContent_Exception_ThrowsBlobApiServiceException()
|
||||
{
|
||||
var docBlobId = Guid.NewGuid();
|
||||
_mockBlobDao.Setup(x => x.RemoveDocumentFromBlob(docBlobId)).ThrowsAsync(new Exception("Thrown from unit test")).Verifiable();
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.DeleteDocumentContent(docBlobId));
|
||||
_mockBlobDao.Verify();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeleteDocumentContent_Exception_DocumentBlobIdIsNull()
|
||||
{
|
||||
Guid? docBlobId = null;
|
||||
|
||||
Assert.ThrowsAsync<BlobApiServiceException>(async() => await _blobApiService.DeleteDocumentContent(docBlobId));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocument_BlobGuidIsEmpty_ReturnsEmptyContent()
|
||||
{
|
||||
var docBlobId = Guid.Empty;
|
||||
var emptyContent = Array.Empty<byte>();
|
||||
|
||||
var result = await _blobApiService.GetDocumentContent(docBlobId);
|
||||
|
||||
Assert.AreEqual(emptyContent, result);
|
||||
_mockBlobDao.Verify(s => s.GetDocumentFromBlob(It.IsAny<Guid>()), Times.Never);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public async Task GetDocument_BlobGuidIsNull_ReturnsEmptyContent()
|
||||
{
|
||||
Guid? docBlobId = null;
|
||||
var emptyContent = Array.Empty<byte>();
|
||||
|
||||
var result = await _blobApiService.GetDocumentContent(docBlobId);
|
||||
|
||||
Assert.AreEqual(emptyContent, result);
|
||||
_mockBlobDao.Verify(s => s.GetDocumentFromBlob(It.IsAny<Guid>()), Times.Never);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user