public async Task Handler_GivenEmptyFilenameParameters_ReturnsNoValue()
        {
            var filename          = "example.pdf";
            var cancellationToken = new CancellationToken();

            var repository = new Mock <IDocumentRepository>();

            repository.Setup(x => x.GetSingle(filename)).Returns((Document)null);

            var request = new GetDocumentQuery(filename);
            var handler = new GetDocumentQueryHandler(repository.Object);

            var result = await handler.Handle(request, cancellationToken);

            result.IsSuccessful.ShouldBeFalse();
            result.Value.ShouldBeNull();
        }
        public async Task Handler_GivenValidFilename_ReturnsDocument()
        {
            var filename          = "example.pdf";
            var contentType       = "application/pdf";
            var bytes             = 1000;
            var cancellationToken = new CancellationToken();

            var dateCreated = new DateTime(2000, 12, 31, 01, 02, 03);
            var repository  = new Mock <IDocumentRepository>();

            repository.Setup(x => x.GetSingle(filename)).Returns(new Document(filename, bytes, contentType, dateCreated));

            var request = new GetDocumentQuery(filename);
            var handler = new GetDocumentQueryHandler(repository.Object);

            var result = await handler.Handle(request, cancellationToken);

            result.IsSuccessful.ShouldBeTrue();
            result.Value.ContentType.ShouldBe(contentType);
            result.Value.Filename.ShouldBe(filename);
            result.Value.Bytes.ShouldBe(bytes);
            result.Value.DateCreated.ShouldBe(dateCreated);
        }
 public void Setup()
 {
     fileRepository   = new Mock <IFileRepository>();
     domainRepository = new Mock <IDomainRepository>();
     handler          = new GetDocumentQueryHandler(fileRepository.Object, domainRepository.Object);
 }