示例#1
0
        public void AddDocument_AddsNewDocument()
        {
            var init = _context.Documents.Count();

            var uploader = _context.Staff.SingleOrDefault(x => x.FirstName == "Lily");

            Assert.IsNotNull(uploader);

            var document = new Document
            {
                Url      = "http://ftp.test.com/DocAdd", Description = "Add Document Test", Date = DateTime.Today,
                Approved = false, UploaderId = uploader.Id
            };

            _controller.AddDocument((document));

            var result = _context.Documents.Count();

            var newDocument = _context.Documents.SingleOrDefault(x => x.Url == "http://ftp.test.com/DocAdd");

            Assert.AreEqual(init + 1, result);
            Assert.IsNotNull(newDocument);
            Assert.AreEqual(true, newDocument.IsGeneral);
            Assert.AreEqual(false, newDocument.Approved);
        }
        public async Task AddDocument_GivenCorrectInput_AddsDocument(
            [Frozen] Mock <IDocumentService> documentServiceMock,
            [Frozen] Mock <IFormFile> formFileMock,
            MemoryStream fileContentStream,
            Task <string> addDocumentServiceTask,
            AddFileRequest request)
        {
            // Arrange
            formFileMock.Setup(formFile => formFile.OpenReadStream())
            .Returns(fileContentStream);

            documentServiceMock.Setup(service =>
                                      service.AddAsync(request.File.Name, request.File.ContentType,
                                                       ByteSize.FromBytes(request.File.Length), fileContentStream))
            .Returns(addDocumentServiceTask)
            .Verifiable();

            DocumentsController sut = new DocumentsController(documentServiceMock.Object);

            // Act
            Task  addDocumentTask = sut.AddDocument(request);
            await addDocumentTask;

            // Verify
            addDocumentTask.Should().BeSameAs(addDocumentServiceTask);

            documentServiceMock.Verify();
        }
        public void SuccesfullDocumentUpload()
        {
            ActionResult <AddDocumentResponse> expectedResult = null;
            IFormFile file = null;
            var       documentServiceMock = new Mock <IDocumentService>();

            documentServiceMock
            .Setup(x => x.AddDocument(It.IsAny <DocumentModel>()));
            var controller = new DocumentsController(documentServiceMock.Object);

            "Given I have a PDF to upload"
            .x(() => file = new FormFile(new MemoryStream(Encoding.UTF8.GetBytes("Document")), 0, 0, "TestDoc", "testdoc.pdf"));

            "When I send the PDF to the API"
            .x(() =>
            {
                expectedResult = controller.AddDocument(1, file);
            });

            "Then it is uploaded succesfully"
            .x(() =>
            {
                ((OkResult)expectedResult.Result).StatusCode.Should().Be(200);
            });
        }
        public void InvalidDocumentUpload()
        {
            ActionResult <AddDocumentResponse> expectedResult = null;
            IFormFile file = null;
            var       documentServiceMock = new Mock <IDocumentService>();

            documentServiceMock
            .Setup(x => x.AddDocument(It.IsAny <DocumentModel>()));
            var controller = new DocumentsController(documentServiceMock.Object);

            "Given I have a non-pdf to upload"
            .x(() =>
            {
                file = new FormFile(new MemoryStream(Encoding.UTF8.GetBytes("Document")), 0, 0, "TestDoc",
                                    "TestDoc.txt");
            });

            "When I send the non-pdf to the API"
            .x(() =>
            {
                expectedResult = controller.AddDocument(1, file);
            });

            "Then the API does not accept the file and returns a 400 status"
            .x(() =>
            {
                ((ObjectResult)expectedResult.Result).StatusCode.Should().Be(400);
                ((ObjectResult)expectedResult.Result).Value.Should().Be("Invalid file type");
            });
        }
        public async Task AddDocument_Success()
        {
            //Arrange------------------------------------------------------------------------------------------------------------------------------
            _mockRepo.Setup(x => x.DocumentRepository.GetAsync(It.IsAny <Expression <Func <Document, bool> > >()))
            .ReturnsAsync(It.IsAny <Document>());

            _mockRepo.Setup(x => x.DocumentRepository.InsertAsync(It.IsAny <Document>()));
            _mockRepo.Setup(x => x.SaveAsync()).ReturnsAsync(true);


            _mockUploadService.Setup(x => x.UploadFileToLocal(It.IsAny <IFormFile>(),
                                                              It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()))
            .ReturnsAsync(UnitTestsDataInput.fileUploadedDto_Success);

            _mockMapper.Setup(x => x.Map(It.IsAny <DocumentForCreateDto>(), It.IsAny <Document>()))
            .Returns(UnitTestsDataInput.Users.First().Documents.First());

            _mockMapper.Setup(x => x.Map <DocumentForReturnDto>(It.IsAny <Document>()))
            .Returns(new DocumentForReturnDto());

            var httpContext = new DefaultHttpContext();

            httpContext.Request.Scheme    = "222";
            _controller.ControllerContext = new ControllerContext()
            {
                HttpContext = httpContext
            };

            //Act----------------------------------------------------------------------------------------------------------------------------------
            var result = await _controller.AddDocument(It.IsAny <string>(), new DocumentForCreateDto());

            var okResult = result as CreatedAtRouteResult;

            //Assert-------------------------------------------------------------------------------------------------------------------------------
            Assert.NotNull(okResult);
            Assert.IsType <DocumentForReturnDto>(okResult.Value);
            Assert.Equal(201, okResult.StatusCode);
        }