Пример #1
0
        public async void Put_Returns404_EstablishmentNotFound_Test()
        {
            // 1: Request body
            string id          = "5dcaad2526235a471cfcccad";
            var    requestBody = new ReleaseRequest()
            {
                Date              = "05/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            // 2: Mocking GetById to return a fake release object
            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetById(It.IsAny <string>())).ReturnsAsync(new Release()
            {
                Date              = requestBody.Date,
                PaymentMethod     = requestBody.PaymentMethod,
                EstablishmentName = requestBody.EstablishmentName,
                Amount            = requestBody.Amount,
                CreatedAt         = DateTime.Now
            });

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentService, controllerMessages);

            var query = await releasesControllerLocal.Put(id, requestBody);

            var  result     = query.Result.GetType().GetProperty("Value").GetValue(query.Result);
            Type resultType = result.GetType();

            Assert.Equal(404, (int)resultType.GetProperty("StatusCode").GetValue(result));
            Assert.Equal(controllerMessages.CantFoundGivenName.Replace("$", "estabelecimento"), (string)resultType.GetProperty("Message").GetValue(result));
        }
Пример #2
0
        public async void Delete_Returns406_NotAcknowledged_Test()
        {
            // 1: Request body
            string id = "5dcaad2526235a471cfcccad";

            // 2: Mocking GetById Method to return fake data
            var fakeRelease = new Release {
                Id                = id,
                Date              = "06/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m,
                CreatedAt         = DateTime.Now,
                UpdatedAt         = DateTime.Now
            };

            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetById(It.IsAny <string>())).ReturnsAsync(fakeRelease);

            var deleteResultWrapper = new DeleteResultWrapper();

            releasesServiceMock.Setup(es => es.RemoveById(It.IsAny <string>())).ReturnsAsync(deleteResultWrapper);

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentService, controllerMessages);

            var query = await releasesControllerLocal.Delete(id);

            var result = (ResponseDetails)query.Result.GetType().GetProperty("Value").GetValue(query.Result);

            Assert.Equal(406, result.StatusCode);
            Assert.Equal(controllerMessages.CantRemove, result.Message);
        }
Пример #3
0
        public async void Get_ThrowsException_Test()
        {
            // 1: Mocking GetAll Method to throws
            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetAll()).ThrowsAsync(new InvalidOperationException());

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentService, controllerMessages);

            // 2: Call GET Action and Expects to throws
            await Assert.ThrowsAsync <InvalidOperationException>(async() => await releasesControllerLocal.Get());
        }
Пример #4
0
        public async void Delete_ThrowsException_Test()
        {
            // 1: Request id
            string id = "5dcaad2526235a471cfcccad";

            // 2: Mocking GetByName Method to throws
            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetById(It.IsAny <string>())).ThrowsAsync(new InvalidOperationException());

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentService, controllerMessages);

            // 3: Call POST Action and Expects to throws
            await Assert.ThrowsAsync <InvalidOperationException>(async() => await releasesControllerLocal.Delete(id));
        }
Пример #5
0
        public ReleasesControllerTests(DatabaseSettingsFixture dbFixture)
        {
            // 0: Setting wrapper for logger
            loggerWrapper = new LoggerWrapper <ReleasesController>();

            // 1: Setting establishment and releases service given db settings
            this.dbSettings           = dbFixture.dbSettings;
            this.establishmentService = dbFixture.establishmentService;
            this.releasesService      = dbFixture.releasesService;

            // 2: Get controller messages
            this.controllerMessages = GetControllerMessagesProperties();

            // 3: Instantiate of Establishment Controller
            this.releasesController = new ReleasesController(loggerWrapper, releasesService, establishmentService, controllerMessages);
        }
Пример #6
0
        public async void Put_Returns406_NotAcknowledged_Test()
        {
            // 1: Request body
            string id          = "5dcaad2526235a471cfcccad";
            var    requestBody = new ReleaseRequest()
            {
                Date              = "05/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            // 2: Mocking GetById Method to return fake data
            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetById(It.IsAny <string>())).ReturnsAsync(new Release()
            {
                Date              = requestBody.Date,
                PaymentMethod     = requestBody.PaymentMethod,
                EstablishmentName = requestBody.EstablishmentName,
                Amount            = requestBody.Amount,
                CreatedAt         = DateTime.Now
            });

            var establishmentServiceMock = new Mock <EstablishmentService>(dbSettings);

            establishmentServiceMock.Setup(es => es.GetByName(It.IsAny <string>())).ReturnsAsync(new Establishment()
            {
                Name = "Test 1",
                Type = "Alimentação"
            });

            var replaceOneResultWrapper = new ReplaceOneResultWrapper();

            releasesServiceMock.Setup(es => es.UpdateById(It.IsAny <string>(), It.IsAny <Release>())).ReturnsAsync(replaceOneResultWrapper);

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentServiceMock.Object, controllerMessages);

            var query = await releasesControllerLocal.Put(id, requestBody);

            var  result     = query.Result.GetType().GetProperty("Value").GetValue(query.Result);
            Type resultType = result.GetType();

            Assert.Equal(406, (int)resultType.GetProperty("StatusCode").GetValue(result));
            Assert.Equal(controllerMessages.CantUpdate, (string)resultType.GetProperty("Message").GetValue(result));
        }
Пример #7
0
        public async void Put_SuccessStatus200_Test()
        {
            // 1: POST Request body
            var postRequestBody = new ReleaseRequest()
            {
                Date              = "05/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            var establishmentServiceMock = new Mock <EstablishmentService>(dbSettings);

            establishmentServiceMock.Setup(es => es.GetByName(It.IsAny <string>())).ReturnsAsync(
                new Establishment()
            {
                Name = "Test 1",
                Type = "Alimentação"
            });

            // 2: Call POST Action passing body request with a new release
            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesService, establishmentServiceMock.Object, controllerMessages);

            var postQuery = await releasesControllerLocal.Post(postRequestBody);

            var postResultValue = (Release)postQuery.Result.GetType().GetProperty("Value").GetValue(postQuery.Result);

            // 3: PUT Request body
            string id          = postResultValue.Id;
            var    requestBody = new ReleaseRequest {
                Date              = "06/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            var query = await releasesControllerLocal.Put(id, requestBody);

            var statusCode = (int)query.Result.GetType().GetProperty("StatusCode").GetValue(query.Result);
            var result     = (Release)query.Result.GetType().GetProperty("Value").GetValue(query.Result);

            Assert.Equal(200, statusCode);
            Assert.Equal("06/05/2019", result.Date);
        }
Пример #8
0
        public async void Post_ThrowsException_Test()
        {
            // 0: Creating testing objects
            ReleaseRequest testRelease = new ReleaseRequest()
            {
                Date              = "05/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            // 1: Mocking GetByName Method to throws
            var establishmentServiceMock = new Mock <EstablishmentService>(dbSettings);

            establishmentServiceMock.Setup(es => es.GetByName(It.IsAny <string>())).ThrowsAsync(new InvalidOperationException());

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesService, establishmentServiceMock.Object, controllerMessages);

            // 2: Call POST Action and Expects to throws
            await Assert.ThrowsAsync <InvalidOperationException>(async() => await releasesControllerLocal.Post(testRelease));
        }
Пример #9
0
        public async void Put_ThrowsException_Test()
        {
            // 1: Request body
            string id          = "5dcaad2526235a471cfcccad";
            var    requestBody = new ReleaseRequest()
            {
                Date              = "05/05/2019",
                PaymentMethod     = PaymentMethod.Credito,
                EstablishmentName = "Test 1",
                Amount            = 55.55m
            };

            // 2: Mocking GetByName Method to throws
            var releasesServiceMock = new Mock <ReleasesService>(dbSettings);

            releasesServiceMock.Setup(es => es.GetById(It.IsAny <string>())).ThrowsAsync(new InvalidOperationException());

            var releasesControllerLocal = new ReleasesController(loggerWrapper, releasesServiceMock.Object, establishmentService, controllerMessages);

            // 3: Call POST Action and Expects to throws
            await Assert.ThrowsAsync <InvalidOperationException>(async() => await releasesControllerLocal.Put(id, requestBody));
        }
Пример #10
0
        public ReleasesControllerTests()
        {
            var mockReleaseSet = new Mock <DbSet <Release> >();

            _existingRelease          = TestDataGraph.Releases.ExistingRelease;
            _existingReleaseUpdated   = TestDataGraph.Releases.UpdatedSingleArtistRelease;
            _newSingleArtistRelease   = TestDataGraph.Releases.NewSingleArtistRelease;
            _newVariousArtistsRelease = TestDataGraph.Releases.NewVariousArtistsRelease;
            var releasesData = TestDataGraph.Releases.ReleasesRaw.AsQueryable();

            SetupMockDbSet(mockReleaseSet, releasesData);

            SetupMockSetOnMockContext(mockReleaseSet);

            _mockReleaseRepository = new Mock <ReleaseRepository>(MockContext.Object);
            _mockReleaseRepository.Setup(mrr => mrr.GetAllAlphabetical()).Returns(Task.FromResult(TestDataGraph.Releases.ReleasesAlphabetizedByTitle));
            _mockReleaseRepository.Setup(mrr => mrr.GetById(_existingRelease.ReleaseId)).Returns(Task.FromResult(_existingRelease));
            _mockReleaseRepository.Setup(mrr => mrr.GetById(_existingReleaseUpdated.ReleaseId)).Returns(Task.FromResult(_existingReleaseUpdated));

            _mockReleaseService = new Mock <ReleaseService>();

            _controller = new ReleasesController(_mockReleaseRepository.Object, _mockReleaseService.Object);
        }
Пример #11
0
 public void TestInitialize()
 {
     _releaseRepositoryMock = new Mock <IReleaseRepository>();
     _sut         = new ReleasesController(_releaseRepositoryMock.Object);
     _sut.Request = new HttpRequestMessage();
 }