public void ShouldReturnAllTraders() { // Arrange TraderService tradersService = new TraderService(this.repository); // Act var allTraders = tradersService.GetAllTraders(); // Assert this.repository.Received(1).GetAll(); Assert.IsTrue(allTraders.Count == this.repository.GetAll().Count()); }
private void MakeTransaction() { Console.Clear(); Console.WriteLine("Проведение сделки"); Console.WriteLine("Чтобы провести сделку необходимо выбрать покупателя, продавца и акцию, которая будет являться предметом продажи."); Console.WriteLine("Чтобы вернуться в меню введите menu на любом из этапов заполнения"); Console.WriteLine("Список пользователей, находящихся на бирже:"); var allTraders = traderService.GetAllTraders(); Console.WriteLine("ID\tПользователь"); foreach (var trader in allTraders) { Console.WriteLine($"{trader.Id}\t{trader.FirstName} {trader.LastName}"); } int sellerId; string consoleInput; do { Console.Write("Введите идентификатор пользователя, который является продавцом: "); consoleInput = Console.ReadLine(); if (consoleInput.ToLower() == "menu") { return; } } while (!int.TryParse(consoleInput, out sellerId) || sellerId < allTraders.Min(t => t.Id) || sellerId > allTraders.Max(t => t.Id)); int buyerId; do { Console.Write("Введите идентификатор пользователя, который является покупателем: "); consoleInput = Console.ReadLine(); if (consoleInput.ToLower() == "menu") { return; } } while (!int.TryParse(consoleInput, out buyerId) || buyerId < allTraders.Min(t => t.Id) || buyerId > allTraders.Max(t => t.Id) || sellerId == buyerId); var sellersShares = from share in this.shareTableRepository.GetAll().Where(s => s.Owner.Id == sellerId) join trader in this.traderTableRepository.GetAll() on share.Owner equals trader join stock in this.stockTableRepository.GetAll() on share.Stock equals stock join company in this.companyTableRepository.GetAll() on stock.Company equals company join shareType in this.shareTypeTableRepository.GetAll() on share.ShareType equals shareType select new { share.Id, CompanyName = company.Name, share.Amount, PackagePrice = share.Amount * shareType.Multiplier * stock.PricePerUnit, ShareTypeName = shareType.Name }; Console.WriteLine("Продавец обладает следующими акциями:"); Console.WriteLine("{0, -3} {1, -15} {2, -10} {3, -9} {4,-10}", "ID", "Компания", "Количество", "Стоимость", "Тип"); foreach (var item in sellersShares) { Console.WriteLine($"{item.Id, -3} {item.CompanyName, -15} {item.Amount, -10} {item.PackagePrice, -9:0.00} {item.ShareTypeName, -10}"); } int shareId; do { Console.Write("Введите идентификатор акции, которую хочет купить покупатель: "); consoleInput = Console.ReadLine(); if (consoleInput.ToLower() == "menu") { return; } } while (!int.TryParse(consoleInput, out shareId) || !sellersShares.Any(s => s.Id == shareId) || !sellersShares.Any(o => o.Id == shareId)); try { transactionService.MakeShareTransaction(sellerId, buyerId, shareId); Console.WriteLine("Продажа проведена успешно!"); } catch (Exception ex) { Logger.ConsoleLogger.Error(ex.Message); } Console.WriteLine("Нажмите любую клавишу, чтобы вернуться в меню..."); Console.ReadKey(); }