public async Task EditShouldEditTrade() { // Arrange this.FillDatabase(); this.editModel = new EditTradeInputModel { Id = "trade1", InvestmentWalletId = 1, Quantity = 11, Price = 120, Type = ViewModels.Trades.Enums.TradeType.Buy, SelectedCompany = new CompanyViewModel { Id = "company3", Name = "Amazon", Ticker = "amzn", }, }; // Act var result = await this.controller.Edit(this.editModel); // Assert var redirectResult = Assert.IsType <RedirectResult>(result); var editedTrade = this.db.Trades.FirstOrDefault(x => x.Id == "trade1"); Assert.Equal(TradeType.Buy, editedTrade.Type); Assert.Equal("company3", editedTrade.CompanyId); Assert.Equal("AMZN", editedTrade.Company.Ticker); Assert.Equal("Amazon", editedTrade.Company.Name); Assert.Equal(11, editedTrade.StockQuantity); Assert.Equal(-120, editedTrade.Price); Assert.Equal(1, editedTrade.InvestmentWalletId); Assert.Equal(3, this.db.Trades.Count()); }
public async Task <IActionResult> Edit(string id) { var user = await this.userManager.GetUserAsync(this.User); try { var companies = await this.companiesService.GetAllCompaniesAsync(); var result = await this.tradesService.GetTradeInfoForEdit(user.Id, id); var model = new EditTradeInputModel { Id = result.Id, CreatedOn = result.CreatedOn, Quantity = result.Quantity, Type = Enum.Parse <TradeType>(result.Type.ToString()), Price = result.Price, InvestmentWallet = new InvestmentWalletIdNameAndCurrencyViewModel { Id = result.InvestmentWallet.Id, CurrencyCode = result.InvestmentWallet.CurrencyCode, Name = result.InvestmentWallet.Name, }, AllInvestmentWallets = result.AllInvestmentWallets.Select(iw => new InvestmentWalletIdNameAndCurrencyViewModel { Id = iw.Id, CurrencyCode = iw.CurrencyCode, Name = iw.Name, }), SelectedCompany = new CompanyViewModel { Name = result.SelectedCompany.Name, Ticker = result.SelectedCompany.Ticker, Id = result.SelectedCompany.Id, }, Companies = companies.Select(c => new CompanyViewModel { Name = c.Name, Ticker = c.Ticker, Id = c.Id, }) .ToList(), }; return(this.View(model)); } catch (Exception ex) { return(this.Redirect($"/Home/Error?message={ex.Message}")); } }
public async Task <IActionResult> Edit(EditTradeInputModel input) { var user = await this.userManager.GetUserAsync(this.User); try { if (!this.ModelState.IsValid) { var companies = await this.companiesService.GetAllCompaniesAsync(); var result = await this.tradesService.GetTradeInfoForEdit(user.Id, input.Id); input.AllInvestmentWallets = result.AllInvestmentWallets.Select(iw => new InvestmentWalletIdNameAndCurrencyViewModel { Id = iw.Id, CurrencyCode = iw.CurrencyCode, Name = iw.Name, }); input.SelectedCompany = new CompanyViewModel { Name = result.SelectedCompany.Name, Ticker = result.SelectedCompany.Ticker, Id = result.SelectedCompany.Id, }; input.Companies = companies.Select(c => new CompanyViewModel { Name = c.Name, Ticker = c.Ticker, Id = c.Id, }) .ToList(); input.InvestmentWallet = new InvestmentWalletIdNameAndCurrencyViewModel { Id = result.InvestmentWallet.Id, CurrencyCode = result.InvestmentWallet.CurrencyCode, Name = result.InvestmentWallet.Name, }; input.Type = Enum.Parse <TradeType>(result.Type.ToString()); return(this.View(input)); } await this.tradesService .UpdateAsync( user.Id, input.Id, input.SelectedCompany.Id, input.InvestmentWalletId, input.Price, input.Quantity, input.CreatedOn); return(this.Redirect($"/Investments/Trades/{input.InvestmentWalletId}")); } catch (Exception ex) { return(this.Redirect($"/Home/Error?message={ex.Message}")); } }