public bool ValidateShareInfo(ShareRegistrationInfo shareInfo, ILogger logger)
 {
     if (shareInfo.Cost < 1)
     {
         logger.WriteWarn("Share cannot have cost less than 1");
         return(false);
     }
     return(true);
 }
        public int RegisterShare(ShareRegistrationInfo shareInfo)
        {
            var shareToAdd = new ShareEntity()
            {
                ShareName = shareInfo.Name,
                ShareCost = shareInfo.Cost
            };

            sharesRepository.Add(shareToAdd);
            sharesRepository.SaveChanges();

            return(shareToAdd.ShareID);
        }
        public void ShouldNotValidateShareInfo()
        {
            //Arrange
            TradeValidator        tradeValidator = new TradeValidator(clientsRepository, shareRepository, clientsSharesRepository);
            ShareRegistrationInfo shareInfo      = new ShareRegistrationInfo()
            {
                Name = "CostCorp",
                Cost = 0
            };
            //Act
            var isValid = tradeValidator.ValidateShareInfo(shareInfo, logger);

            //Assert
            Assert.AreEqual(false, isValid);
        }
        public void ShouldRegisterShare()
        {
            //Arrange
            ShareService          shareService = new ShareService(shareRepository);
            ShareRegistrationInfo shareInfo    = new ShareRegistrationInfo()
            {
                Name = "Hardsoft",
                Cost = 10
            };
            //Act
            int id = shareService.RegisterShare(shareInfo);

            //Assert
            shareRepository.Received(1).Add(Arg.Is <ShareEntity>(
                                                w => w.ShareName == shareInfo.Name &&
                                                w.ShareCost == shareInfo.Cost));
            shareRepository.Received(1).SaveChanges();
            Assert.AreEqual(1, id);
        }
        public void ShouldRegisterNewShare()
        {
            // Arrange
            this.shareTableRepository = Substitute.For <IShareTableRepository>();
            SharesService         sharesService = new SharesService(this.shareTableRepository);
            ShareRegistrationInfo args          = new ShareRegistrationInfo();

            args.CompanyName = "Horns and hooves";
            args.Type        = this.type;
            args.Status      = true;

            // Act
            var shareId = sharesService.RegisterNewShare(args);

            // Assert
            this.shareTableRepository.Received(1).Add(Arg.Is <ShareEntity>(
                                                          s => s.CompanyName == args.CompanyName &&
                                                          s.Type == args.Type &&
                                                          s.Status == args.Status));
            this.shareTableRepository.Received(1).SaveChanges();
        }
Beispiel #6
0
        public int RegisterNewShare(ShareRegistrationInfo args)
        {
            var entityToAdd = new ShareEntity()
            {
                CreatedAt   = DateTime.Now,
                CompanyName = args.CompanyName,
                Type        = args.Type,
                Status      = true
            };

            if (this.tableRepository.Contains(entityToAdd))
            {
                throw new ArgumentException("This share type has been registered. Can't continue.");
            }

            this.tableRepository.Add(entityToAdd);

            this.tableRepository.SaveChanges();

            return(entityToAdd.Id);
        }
        public void ShouldNotRegisterNewShareIfItExists()
        {
            // Arrange
            this.shareTableRepository = Substitute.For <IShareTableRepository>();
            SharesService         sharesService = new SharesService(this.shareTableRepository);
            ShareRegistrationInfo args          = new ShareRegistrationInfo();

            args.CompanyName = "Horns and hooves";
            args.Type        = this.type;
            args.Status      = true;

            // Act
            sharesService.RegisterNewShare(args);

            this.shareTableRepository.Contains(Arg.Is <ShareEntity>( // Now Contains returns true (table contains this share type)
                                                   s => s.CompanyName == args.CompanyName &&
                                                   s.Type == args.Type &&
                                                   s.Status == args.Status)).Returns(true);

            sharesService.RegisterNewShare(args); // Try to reg. same twice and get exception

            // Assert
        }
        private void processUserInput(string userInput)
        {
            string[] splitedUserInput = userInput.Split(' ', '\t', ';');
            switch (splitedUserInput[0].ToLower())
            {
            case "addclient":
                ClientRegistrationInfo clientInfo = new ClientRegistrationInfo()
                {
                    FirstName   = splitedUserInput[1],
                    LastName    = splitedUserInput[2],
                    PhoneNumber = splitedUserInput[3]
                };
                registerEntity(validator.ValidateClientInfo, clientService.RegisterClient, clientInfo);
                break;

            case "addshare":
                ShareRegistrationInfo shareInfo = new ShareRegistrationInfo()
                {
                    Name = splitedUserInput[1],
                    Cost = decimal.Parse(splitedUserInput[2])
                };
                registerEntity(validator.ValidateShareInfo, shareService.RegisterShare, shareInfo);
                break;

            case "changesharestoclient":
                ClientsSharesInfo clientsShareInfo = new ClientsSharesInfo()
                {
                    ClientID = int.Parse(splitedUserInput[1]),
                    ShareID  = int.Parse(splitedUserInput[2]),
                    Amount   = int.Parse(splitedUserInput[3])
                };
                registerEntity(validator.ValidateShareToClient, clientsSharesService.ChangeClientsSharesAmount, clientsShareInfo);
                break;

            case "changeclientmoney":
                changeClientsMoney(splitedUserInput);
                break;

            case "showorange":
                showClientsList(clientService.GetClientsFromOrangeZone());
                break;

            case "showblack":
                showClientsList(clientService.GetClientsFromBlackZone());
                break;

            case "showfullclients":
                showClientsList(clientService.GetAllClients());
                break;

            case "showfullshares":
                var fullList = shareService.GetAllShares();
                logger.WriteInfo(phraseProvider.GetPhrase("ShareHeader"));
                foreach (ShareEntity share in fullList)
                {
                    string sharesInfo = $"{share.ShareID.ToString()} {share.ShareName} {share.ShareCost.ToString()}";
                    logger.WriteInfo(sharesInfo);
                }
                logger.WriteInfo("Successfully showed full share list");
                break;

            case "help":
                logger.WriteInfo(phraseProvider.GetPhrase("Help"));
                break;

            case "e":
                break;

            default:
                logger.WriteWarn("Unknown command");
                return;
            }
        }