Exemplo n.º 1
0
        public void List_ShouldReturn_CreatedTransfers()
        {
            Transfer createdTransfer1, createdTransfer2;
            IEnumerable <Transfer> queriedTransfers;

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var categoriesController = new CategoriesController(dataLayer))
                    using (var currenciesController = new CurrenciesController(dataLayer))
                        using (var partnersController = new PartnersController(dataLayer))
                            using (var transfersController = new TransfersController(dataLayer))
                            {
                                var category = categoriesController.CreateCategory(TestDataProvider.CreateNewCategory());
                                var partner  = partnersController.CreatePartner(TestDataProvider.CreateNewPartner());
                                var currency = currenciesController.CreateCurrency(TestDataProvider.CreateNewCurrency());

                                var newTransfer1 = TestDataProvider.CreateNewTransfer(
                                    category.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                createdTransfer1 = transfersController.CreateTransfer(newTransfer1);
                                var newTransfer2 = TestDataProvider.CreateNewTransfer(
                                    category.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                createdTransfer2 = transfersController.CreateTransfer(newTransfer2);
                                queriedTransfers = transfersController.List();
                            }

            AssertTransfersInList(queriedTransfers, createdTransfer1, createdTransfer2);
        }
Exemplo n.º 2
0
        public TransfersControllerTests()
        {
            _trustRepository     = new Mock <ITrustsRepository>();
            _academiesRepository = new Mock <IAcademiesRepository>();
            _projectsRepository  = new Mock <IProjectsRepository>();
            _session             = new Mock <ISession>();

            var tempDataProvider = new Mock <ITempDataProvider>();
            var httpContext      = new DefaultHttpContext();
            var sessionFeature   = new SessionFeature {
                Session = _session.Object
            };

            httpContext.Features.Set <ISessionFeature>(sessionFeature);

            var tempDataDictionaryFactory =
                new TempDataDictionaryFactory(tempDataProvider.Object);
            var tempData = tempDataDictionaryFactory.GetTempData(httpContext);

            _subject = new TransfersController(
                _trustRepository.Object,
                _academiesRepository.Object,
                _projectsRepository.Object
                )
            {
                TempData = tempData, ControllerContext = { HttpContext = httpContext }
            };
        }
Exemplo n.º 3
0
        public void Get_Normally_ShouldReturn_TransferWithId()
        {
            CreatedAtActionResult actionResult;
            Transfer createdTransfer, queriedTransfer;

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var categoriesController = new CategoriesController(dataLayer))
                    using (var currenciesController = new CurrenciesController(dataLayer))
                        using (var partnersController = new PartnersController(dataLayer))
                            using (var transfersController = new TransfersController(dataLayer))
                            {
                                var category = categoriesController.CreateCategory(TestDataProvider.CreateNewCategory());
                                var partner  = partnersController.CreatePartner(TestDataProvider.CreateAnotherNewPartner());
                                var currency = currenciesController.CreateCurrency(TestDataProvider.CreateNewCurrency());

                                var newTransfer = TestDataProvider.CreateNewTransfer(
                                    category.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                actionResult    = (CreatedAtActionResult)transfersController.Create(newTransfer);
                                createdTransfer = (Transfer)actionResult.Value;
                                queriedTransfer = transfersController.Get(createdTransfer.Id);
                            }

            Assert.AreEqual(actionResult.ActionName, "Get");
            Assert.IsTrue(
                queriedTransfer.IsEqualTo(createdTransfer),
                "The two transfers should be equal. "
                + $"Expected: {createdTransfer.Stringify()}, actual: {queriedTransfer.Stringify()}.");
        }
Exemplo n.º 4
0
        public void Delete_Normally_ShouldWork()
        {
            Transfer createdTransfer, queriedTransfer;
            IEnumerable <Transfer> listedTransfers;

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var categoriesController = new CategoriesController(dataLayer))
                    using (var currenciesController = new CurrenciesController(dataLayer))
                        using (var partnersController = new PartnersController(dataLayer))
                            using (var transfersController = new TransfersController(dataLayer))
                            {
                                var category = categoriesController.CreateCategory(TestDataProvider.CreateNewCategory());
                                var partner  = partnersController.CreatePartner(TestDataProvider.CreateAnotherNewPartner());
                                var currency = currenciesController.CreateCurrency(TestDataProvider.CreateAnotherNewCurrency());

                                var newTransfer = TestDataProvider.CreateNewTransfer(
                                    category.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                createdTransfer = transfersController.CreateTransfer(newTransfer);

                                queriedTransfer = transfersController.Get(createdTransfer.Id);
                                transfersController.Delete(createdTransfer.Id);
                                listedTransfers = transfersController.List();
                            }

            Assert.AreEqual(createdTransfer.Id, queriedTransfer.Id, "Unexpected ID.");
            Assert.AreEqual(false, listedTransfers.Any(), "There should be no transfers returned.");
        }
Exemplo n.º 5
0
        public async Task Then_Gets_Financial_Breakdown_From_Mediator(
            long accountId,
            GetFinancialBreakdownResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] TransfersController transfersController)
        {
            mockMediator
            .Setup(x => x.Send(It.Is <GetFinancialBreakdownQuery>(y => y.AccountId == accountId), It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var actionResult = await transfersController.GetFinancialBreakdown(accountId);

            var okObjectResult = actionResult as OkObjectResult;
            var value          = okObjectResult.Value;
            var getFinancialBreakdownResponse = value as GetFinancialBreakdownResponse;

            Assert.IsNotNull(actionResult);
            Assert.IsNotNull(okObjectResult);
            Assert.IsNotNull(value);
            Assert.IsNotNull(getFinancialBreakdownResponse);

            Assert.AreEqual(mediatorResult.Commitments, getFinancialBreakdownResponse.Commitments);
            Assert.AreEqual(mediatorResult.AcceptedPledgeApplications, getFinancialBreakdownResponse.AcceptedPledgeApplications);
            Assert.AreEqual(mediatorResult.ApprovedPledgeApplications, getFinancialBreakdownResponse.ApprovedPledgeApplications);
            Assert.AreEqual(mediatorResult.TransferConnections, getFinancialBreakdownResponse.TransferConnections);
        }
Exemplo n.º 6
0
 public void Update_WhenRecordDoesNotExist_ShouldThrow()
 {
     using (var dataLayer = DataLayerHelper.CreateDataLayer())
         using (var controller = new TransfersController(dataLayer))
         {
             var transferUpdate = TestDataProvider.CreateTransferUpdate(1, 1, 1, 1);
             controller.Update(transferUpdate);
         }
 }
Exemplo n.º 7
0
 public void Create_WhenRecordExists_ShouldThrow()
 {
     using (var dataLayer = DataLayerHelper.CreateDataLayer())
         using (var controller = new TransfersController(dataLayer))
         {
             var newTransfer = TestDataProvider.CreateNewTransfer(1, 1, 1, TestDataProvider.CreateNewTransferItem());
             controller.Create(newTransfer);
             controller.Create(newTransfer);
         }
 }
Exemplo n.º 8
0
        public void Arrange()
        {
            _query    = new GetTransferConnectionInvitationAuthorizationQuery();
            _response = new GetTransferConnectionInvitationAuthorizationResponse {
                AuthorizationResult = AuthorizationResult.FeatureAgreementNotSigned, IsValidSender = true, TransferAllowancePercentage = .25m
            };
            _mapperConfig = new MapperConfiguration(c => c.AddProfile <TransferMappings>());
            _mapper       = _mapperConfig.CreateMapper();
            _mediator     = new Mock <IMediator>();
            _mediator.Setup(m => m.SendAsync(_query)).ReturnsAsync(_response);

            _controller = new TransfersController(null, _mapper, _mediator.Object);
        }
        public void Arrange()
        {
            _query = new GetTransferConnectionInvitationsQuery();

            _response = new GetTransferConnectionInvitationsResponse
            {
                TransferConnectionInvitations = new List <TransferConnectionInvitationDto>()
            };

            _mapperConfig = new MapperConfiguration(c => c.AddProfile <TransferMappings>());
            _mapper       = _mapperConfig.CreateMapper();
            _mediator     = new Mock <IMediator>();
            _mediator.Setup(m => m.SendAsync(_query)).ReturnsAsync(_response);

            _controller = new TransfersController(null, _mapper, _mediator.Object);
        }
Exemplo n.º 10
0
        public TransfersControllerTests()
        {
            this.rpc = new Mock <IRpcFactory>();
            this.propertyManagementRpc = new Mock <IPropertyManagementRpc>();
            this.rawTransactionRpc     = new Mock <IRawTransactionRpc>();

            var anyCancellationToken = It.IsAny <CancellationToken>();

            this.rpc.Setup(f => f.CreatePropertyManagementRpcAsync(anyCancellationToken))
            .ReturnsAsync(this.propertyManagementRpc.Object);

            this.rpc.Setup(f => f.CreateRawTransactionRpcAsync(anyCancellationToken))
            .ReturnsAsync(this.rawTransactionRpc.Object);

            this.watcher            = new Mock <ITransactionConfirmationWatcher>();
            this.callbackRepository = new Mock <ICallbackRepository>();
            this.ruleRepository     = new Mock <IRuleRepository>();

            var builder = new ConfigurationBuilder();

            builder.AddInMemoryCollection(new System.Collections.Generic.Dictionary <string, string>
            {
                { "Api:Default:TransactionTimeout", "00:10" },
                { "Api:Default:RequiredConfirmation", "6" },
                { "Zcoin:Network:Type", "Mainnet" },
                { "Zcoin:Property:Id", "3" },
                { "Zcoin:Property:Type", "Divisible" },
                { "Zcoin:Property:Issuer", "Mainnet:a8ULhhDgfdSiXJhSZVdhb8EuDc6R3ogsaM" },
                { "Zcoin:Property:Distributor", "Mainnet:a8ULhhDgfdSiXJhSZVdhb8EuDc6R3ogsaM" },
            });

            this.configuration = builder.Build();
            this.zcoinConfig   = this.configuration.GetZcoinSection();
            this.apiConfig     = this.configuration.GetApiSection();

            this.helper = new ControllerHelper(this.callbackRepository.Object);

            this.subject = new TransfersController
                           (
                this.rpc.Object,
                this.watcher.Object,
                this.ruleRepository.Object,
                this.configuration,
                this.helper
                           );
        }
Exemplo n.º 11
0
        public void Create_WhenTitleNull_ShouldThrow()
        {
            var newTransfer = new NewTransfer
            {
                CategoryId = 1,
                PartnerId  = 1,
                CurrencyId = 1,
                Title      = null,
                Time       = DateTime.UtcNow,
                Discount   = 0.3M,
                Note       = null,
                Items      = null,
            };

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var controller = new TransfersController(dataLayer))
                    controller.Create(newTransfer);
        }
Exemplo n.º 12
0
 public void Arrange()
 {
     _configuration = new EmployerFinanceConfiguration {
         TransferAllowancePercentage = .25m
     };
     _transferAllowance = new TransferAllowance
     {
         RemainingTransferAllowance = 123.456m,
         StartingTransferAllowance  = 234.56M,
     };
     _query    = new GetTransferAllowanceQuery();
     _response = new GetTransferAllowanceResponse {
         TransferAllowance = _transferAllowance, TransferAllowancePercentage = _configuration.TransferAllowancePercentage
     };
     _mapperConfig = new MapperConfiguration(c => c.AddProfile <TransferMappings>());
     _mapper       = _mapperConfig.CreateMapper();
     _mediator     = new Mock <IMediator>();
     _mediator.Setup(m => m.SendAsync(_query)).ReturnsAsync(_response);
     _controller = new TransfersController(null, _mapper, _mediator.Object);
 }
Exemplo n.º 13
0
        public void Create_Normally_ShouldReturn_Transfer()
        {
            NewTransfer newTransfer;
            Transfer    transfer;

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var categoriesController = new CategoriesController(dataLayer))
                    using (var currenciesController = new CurrenciesController(dataLayer))
                        using (var partnersController = new PartnersController(dataLayer))
                            using (var transfersController = new TransfersController(dataLayer))
                            {
                                var category = categoriesController.CreateCategory(TestDataProvider.CreateNewCategory());
                                var partner  = partnersController.CreatePartner(TestDataProvider.CreateAnotherNewPartner());
                                var currency = currenciesController.CreateCurrency(TestDataProvider.CreateAnotherNewCurrency());

                                newTransfer = TestDataProvider.CreateNewTransfer(
                                    category.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                transfer = transfersController.CreateTransfer(newTransfer);
                            }

            Assert.AreEqual(newTransfer.CategoryId, transfer.Category.Id, "Unexpected category.");
            Assert.AreEqual(newTransfer.CurrencyId, transfer.Currency.Id, "Unexpected currency.");
            Assert.AreEqual(newTransfer.Discount, transfer.Discount, "Unexpected discount.");
            Assert.IsTrue(transfer.Id > 0, $"Transfer ID is expected to greater than 0. Actual: {transfer.Id}.");
            Assert.AreEqual(newTransfer.Items.Length, transfer.Items.Length, "Unexpected transfer item count.");
            Assert.AreEqual(newTransfer.Items[0].Discount, transfer.Items[0].Discount, "Unexpected item discount.");
            Assert.IsTrue(
                transfer.Items[0].Id > 0,
                $"Item ID is expected to greater than 0. Actual: {transfer.Items[0].Id}.");
            Assert.AreEqual(newTransfer.Items[0].Name, transfer.Items[0].Name, "Unexpected item name.");
            Assert.AreEqual(newTransfer.Items[0].Price, transfer.Items[0].Price, "Unexpected item price.");
            Assert.AreEqual(newTransfer.Note, transfer.Note, "Unexpected note.");
            Assert.AreEqual(newTransfer.PartnerId, transfer.Partner.Id, "Unexpected partner.");
            Assert.AreEqual(newTransfer.Time, transfer.Time, "Unexpected time.");
            Assert.AreEqual(newTransfer.Title, transfer.Title, "Unexpected title.");
        }
Exemplo n.º 14
0
        public async Task Then_Gets_Index_From_Mediator(
            long accountId,
            GetIndexQueryResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] TransfersController transfersController)
        {
            mockMediator
            .Setup(x => x.Send(It.Is <GetIndexQuery>(y => y.AccountId == accountId), It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var actionResult = await transfersController.GetIndex(accountId);

            var okObjectResult   = actionResult as OkObjectResult;
            var value            = okObjectResult.Value;
            var getIndexResponse = value as GetIndexResponse;

            Assert.IsNotNull(actionResult);
            Assert.IsNotNull(okObjectResult);
            Assert.IsNotNull(value);
            Assert.IsNotNull(getIndexResponse);

            Assert.AreEqual(mediatorResult.PledgesCount, getIndexResponse.PledgesCount);
            Assert.AreEqual(mediatorResult.ApplicationsCount, getIndexResponse.ApplicationsCount);
        }
        public async Task Then_Gets_Validity_From_Mediator(
            long senderId,
            long receiverId,
            int?pledgeApplicationId,
            GetTransferValidityQueryResult mediatorResult,
            [Frozen] Mock <IMediator> mockMediator,
            [Greedy] TransfersController controller)
        {
            mockMediator
            .Setup(mediator => mediator.Send(
                       It.Is <GetTransferValidityQuery>(query =>
                                                        query.SenderId == senderId && query.ReceiverId == receiverId && query.PledgeApplicationId == pledgeApplicationId),
                       It.IsAny <CancellationToken>()))
            .ReturnsAsync(mediatorResult);

            var controllerResult = await controller.GetTransferValidity(senderId, receiverId, pledgeApplicationId) as ObjectResult;

            Assert.IsNotNull(controllerResult);
            controllerResult.StatusCode.Should().Be((int)HttpStatusCode.OK);
            var model = controllerResult.Value as GetTransferValidityResponse;

            Assert.IsNotNull(model);
            model.IsValid.Should().Be(mediatorResult.IsValid);
        }
Exemplo n.º 16
0
 public void Arrange()
 {
     _controller = new TransfersController(null, null, null);
 }
Exemplo n.º 17
0
 public void Get_WhenRecordDoesNotExist_ShouldThrow()
 {
     using (var dataLayer = DataLayerHelper.CreateDataLayer())
         using (var controller = new TransfersController(dataLayer))
             controller.Get(0);
 }
Exemplo n.º 18
0
        public void Update_Normally_ShouldWork()
        {
            Category       category2;
            Transfer       createdTransfer, updatedTransfer;
            TransferUpdate transferUpdate;

            using (var dataLayer = DataLayerHelper.CreateDataLayer())
                using (var categoriesController = new CategoriesController(dataLayer))
                    using (var currenciesController = new CurrenciesController(dataLayer))
                        using (var partnersController = new PartnersController(dataLayer))
                            using (var transfersController = new TransfersController(dataLayer))
                            {
                                var category1 = categoriesController.CreateCategory(TestDataProvider.CreateNewCategory());
                                var partner   = partnersController.CreatePartner(TestDataProvider.CreateNewPartner());
                                var currency  = currenciesController.CreateCurrency(TestDataProvider.CreateAnotherNewCurrency());

                                category2 = categoriesController.CreateCategory(TestDataProvider.CreateAnotherNewCategory());

                                var newTransfer = TestDataProvider.CreateNewTransfer(
                                    category1.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateNewTransferItem());
                                createdTransfer = transfersController.CreateTransfer(newTransfer);

                                transferUpdate = TestDataProvider.CreateTransferUpdate(
                                    createdTransfer.Id,
                                    category2.Id,
                                    partner.Id,
                                    currency.Id,
                                    TestDataProvider.CreateTransferItemUpdate(createdTransfer.Items[0].Id));
                                transfersController.Update(transferUpdate);
                                updatedTransfer = transfersController.Get(createdTransfer.Id);
                            }

            // Note that EF Core behaves slightly differently when an in-memory database is used, these checks are not
            // necessarily enough. Use "curl" or something similar, preferably a REST test-client to make sure
            // everything works as expected.
            Assert.IsTrue(
                updatedTransfer.Category.IsEqualTo(category2),
                $"Unexpected category. Expected: ${category2}. Actual: ${updatedTransfer.Category}.");
            Assert.IsTrue(
                updatedTransfer.Currency.IsEqualTo(createdTransfer.Currency),
                $"Unexpected currency. Expected: ${createdTransfer.Currency}. Actual: ${updatedTransfer.Currency}.");
            Assert.AreEqual(transferUpdate.Discount, updatedTransfer.Discount, "Unexpected discount.");
            Assert.AreEqual(
                transferUpdate.Items.Length,
                updatedTransfer.Items.Length,
                "Unexpected transfer item count.");
            Assert.AreEqual(
                transferUpdate.Items[0].Discount,
                updatedTransfer.Items[0].Discount,
                "Unexpected item discount.");
            Assert.AreEqual(
                createdTransfer.Items[0].Id,
                updatedTransfer.Items[0].Id,
                "Unexpected item ID");
            Assert.AreEqual(transferUpdate.Items[0].Name, updatedTransfer.Items[0].Name, "Unexpected item name.");
            Assert.AreEqual(transferUpdate.Items[0].Price, updatedTransfer.Items[0].Price, "Unexpected item price.");
            Assert.AreEqual(transferUpdate.Note, updatedTransfer.Note, "Unexpected note.");
            Assert.IsTrue(
                updatedTransfer.Partner.IsEqualTo(createdTransfer.Partner),
                $"Unexpected partner. Expected: ${createdTransfer.Partner}. Actual: ${updatedTransfer.Partner}.");
            Assert.AreEqual(transferUpdate.Time, updatedTransfer.Time, "Unexpected time.");
            Assert.AreEqual(transferUpdate.Title, updatedTransfer.Title, "Unexpected title.");
        }
Exemplo n.º 19
0
 public void Create_WhenParamNull_ShouldThrow()
 {
     using (var dataLayer = DataLayerHelper.CreateDataLayer())
         using (var controller = new TransfersController(dataLayer))
             controller.Create(null);
 }
Exemplo n.º 20
0
        public static Transfer CreateTransfer(this TransfersController controller, NewTransfer newTransfer)
        {
            var actionResult = (CreatedAtActionResult)controller.Create(newTransfer);

            return((Transfer)actionResult.Value);
        }
 public void Arrange()
 {
     _mediatorMock = new Mock <IMediator>();
     _controller   = new TransfersController(null, null, _mediatorMock.Object);
 }