public void TestCurrentPrice() { var sp = new StockPosition("AMD", 100, -14.11m); Assert.AreNotEqual(-14.11m, sp.GetCurrentPrice()); Assert.AreNotEqual((Decimal)(-14.11 * 100), sp.GetMarketValue()); }
private async Task GetRealTimeStockPosition(StockPosition position) { try { var stockInfo = await _stockInfoRepo.GetStockInfo(position.Ticker); if (stockInfo.Symbol != position.Ticker) { stockInfo = await _stockProxy.GetStockInfo(position.Ticker); await _stockInfoRepo.UpsertStockInfo(stockInfo); } var currentValue = stockInfo.Price * position.Shares; var gain = currentValue - position.Cost; position.CurrentPrice = stockInfo.Price; position.CurrentValue = currentValue; position.PercentageOfChange = Math.Round(stockInfo.PercentageOfChange, 4); position.Change = stockInfo.Change; position.Gain = gain; position.PercentageOfGain = Math.Round(gain / position.Cost, 4); } catch (Exception e) { throw new Exception($"GetRealTimeStockPosition Fail | stock symbol = {position.Ticker}, exception = {e}"); } }
public void GetShareValueReturnsCorrectValue() { StockPosition stockPostion = new StockPosition(new Stock(StockId.BONDS)); var shareValue = stockPostion.GetShareValue(); Assert.AreEqual(shareValue, STARTING_VALUE); }
public void GetReferencedDocuments_WriteOffTest() { var interactive = Substitute.For <IInteractiveQuestion>(); interactive.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var employee = new EmployeeCard(); uow.Save(employee); var expense = new Expense { Date = new DateTime(2021, 9, 10), Employee = employee, Operation = ExpenseOperations.Employee, Warehouse = warehouse, }; var size = new Size(); var height = new Size(); uow.Save(size); uow.Save(height); var stockPosition = new StockPosition(nomenclature, 0, size, height); var item = expense.AddItem(stockPosition, 10); expense.UpdateOperations(uow, baseParameters, interactive); uow.Save(expense); //Списываем 3 штуки var writeoff = new Writeoff() { Date = new DateTime(2021, 9, 11), }; var writeoffItem = writeoff.AddItem(item.EmployeeIssueOperation, 2); writeoff.UpdateOperations(uow); uow.Save(writeoff); uow.Commit(); var repository = new EmployeeIssueRepository(uow); var result = repository.GetReferencedDocuments(writeoffItem.EmployeeWriteoffOperation.Id); Assert.That(result.First().DocumentType, Is.EqualTo(StokDocumentType.WriteoffDoc)); Assert.That(result.First().DocumentId, Is.EqualTo(writeoff.Id)); Assert.That(result.First().ItemId, Is.EqualTo(writeoffItem.Id)); } }
public void UpdateOperations_WarehouseOperation_CanChangeWearPercentTest() { var uow = Substitute.For <IUnitOfWork>(); var nomeclature = Substitute.For <Nomenclature>(); var warehouse = Substitute.For <Warehouse>(); var position = new StockPosition(nomeclature, 0.2m, new Size(), new Size()); var writeoff = new Writeoff { Date = new DateTime(2019, 1, 15) }; writeoff.AddItem(position, warehouse, 2); Assert.That(writeoff.Items[0].WearPercent, Is.EqualTo(0.2m)); //Меняем значение процента износа writeoff.Items[0].WearPercent = 2; //Выполняем writeoff.UpdateOperations(uow); Assert.That(writeoff.Items[0].WearPercent, Is.EqualTo(2)); }
public void AddToPortfolio(StockPosition sp) { if (StockPortfolio == null) { StockPortfolio = new List <StockPosition>(); } StockPortfolio.Add(sp); }
public void TestStockPositionCreation(string ti, int q, decimal ep) { var sp = new StockPosition(ti, q, ep); Assert.IsTrue(sp.GetTicker() == ti); Assert.IsTrue(sp.GetQuantity() == q); Assert.IsTrue(sp.GetEntrancePrice() == ep); }
public void MatcheStockPosition_RangeGrowthInEmployeeSize() { var employee = new EmployeeCard { Sex = Sex.M }; var sizeType = new SizeType { CategorySizeType = CategorySizeType.Size }; var heightType = new SizeType { CategorySizeType = CategorySizeType.Height }; var size52 = new Size { Name = "52", SizeType = sizeType, UseInEmployee = true }; var height170And176 = new Size { Name = "170-176", SizeType = heightType, UseInEmployee = true }; var height170 = new Size { Name = "170", SizeType = heightType, UseInEmployee = true, SuitableSizes = new List <Size> { height170And176 } }; employee.Sizes.Add(new EmployeeSize { Size = height170And176, SizeType = heightType }); employee.Sizes.Add(new EmployeeSize { Size = size52, SizeType = sizeType }); var itemType = Substitute.For <ItemsType>(); itemType.Category.Returns(ItemTypeCategory.wear); var nomenclature = Substitute.For <Nomenclature>(); nomenclature.Id.Returns(25); nomenclature.Type.Returns(itemType); nomenclature.MatchingEmployeeSex(Sex.M).Returns(true); var protectionTools = Substitute.For <ProtectionTools>(); protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature }); var normItem = Substitute.For <NormItem>(); normItem.ProtectionTools.Returns(protectionTools); var employeeItem = new EmployeeCardItem(employee, normItem); var stockPosition = new StockPosition(nomenclature, 0, size52, height170); var result = employeeItem.MatcheStockPosition(stockPosition); Assert.That(result, Is.True); }
public void GetTotalValueReturnsCorrectValueForThreeStocksOwned() { int numberOwned = 3; StockPosition stockPostion = new StockPosition(new Stock(StockId.BONDS)); stockPostion.NumberOwned = numberOwned; var totalValue = stockPostion.GetTotalValue(); Assert.AreEqual(totalValue, STARTING_VALUE * numberOwned); }
public void TestEditOfStockInPortfolio() { var sp = new StockPosition("AMD", 10, 14.01m); var p = new Portfolio(); p.AddToPortfolio(sp); p.EditPosition(sp.GetTicker(), sp.GetQuantity() - 5, sp.GetEntrancePrice()); Assert.IsTrue(p.GetStockPortfolio()[0].GetQuantity() == 5); }
public void GetDividendPayoutReturnsCorrectValueForThreeStocksOwned() { const int NUMBER_OWNED = 3; const int DIVIDEND_AMOUNT = 10; const int DIVIDEND_MULTIPLIER = 10; const int EXPECTED_DIVIDEND_PAYOUT = DIVIDEND_AMOUNT * DIVIDEND_MULTIPLIER * NUMBER_OWNED; StockPosition stockPostion = new StockPosition(new Stock(StockId.BONDS)); stockPostion.NumberOwned = NUMBER_OWNED; var dividendPayout = stockPostion.GetDividenPayout(DIVIDEND_AMOUNT); Assert.AreEqual(dividendPayout, EXPECTED_DIVIDEND_PAYOUT); }
public override void UpdateStockAccountInfo(StockAccount account) { //first time to initialized if (account.StockPositionMap.Count <= 0) { if (null == MarketMakerMgr.GetInstance().GetFairValueMgr().MyMarketData) { return; } String symbol = MarketMakerMgr.GetInstance().GetFairValueMgr().MyMarketData.Symbol; StockPosition position = new StockPosition(); position.BaseVolume = position.TotalVolume = position.AvailVolume = 100; account.StockPositionMap[symbol] = position; } }
public void TestStockPositionCreation_NullValues(string s) { try { // ReSharper disable once UnusedVariable var stockPosition = new StockPosition(s, new int(), new int()); Assert.Fail("Did not throw exception"); } //Required for 100% code coverage finally { Assert.Pass(); } // ReSharper disable once HeuristicUnreachableCode Assert.Pass(); }
public void TestRemovalOfStockNotInPortfolio() { var sp = new StockPosition("AAPL", 40, 140.0m); var p = new Portfolio(); p.AddToPortfolio(sp); try { p.RemovePosition("GOOG"); Assert.Fail(); } catch (NullReferenceException) { Assert.Pass(); } }
public void TestAddAndRemoveStockFromPortfolio(string tkr, int qty, decimal pr) { var sp = new StockPosition(tkr, qty, pr); var p = new Portfolio(); //Test Add p.AddToPortfolio(sp); Assert.IsNotNull(p.GetStockPortfolio()); Assert.IsTrue(p.GetStockPortfolio()[0].GetTicker() == tkr); Assert.IsTrue(p.GetStockPortfolio()[0].GetQuantity() == qty); Assert.IsTrue(p.GetStockPortfolio()[0].GetEntrancePrice() == pr); //Test Remove p.RemovePosition(sp.GetTicker()); Assert.IsTrue(p.GetStockPortfolio().Count == 0); }
public static List <StockPosition> GetStockPositionsList(string cashPointNumber, string dbConnection) { var stockPositionList = new List <StockPosition>(); using (var connection = new SqlConnection(dbConnection)) { using (var command = new SqlCommand(GetActualStockPositionListQuery(cashPointNumber), connection)) { connection.Open(); using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { //if stock position IsMixed = 'yes' skip creating transaction. //TO DO add creating transaction if mixed stock position doesn't have child if (reader.GetBoolean(7) == true) { continue; } var stockPosition = new StockPosition() { StockPositionId = reader.GetInt32(0), Direction = reader.GetInt32(1), Denomination = reader.IsDBNull(2) ? null : (decimal?)reader.GetDecimal(2), //Denomination = reader.GetDecimal(2), CassetteNumber = reader.GetInt32(3), CassetteExternalNumber = reader.GetStringOrNull(4), Capacity = reader.GetInt32(5), MaterialId = reader.GetStringOrNull(6), ProductId = reader.GetStringOrNull(9), //MaterialId = reader.GetString(6) == null ? string.Empty : reader.GetString(6), Quantity = reader.GetInt32(8), //ProductId = reader.GetString(9) == null ? string.Empty : reader.GetString(9) }; stockPositionList.Add(stockPosition); } } } } return(stockPositionList); }
public void TestEditOfStockNotInPortfolio() { var sp = new StockPosition("AMD", 10, 14.01m); var p = new Portfolio(); p.AddToPortfolio(sp); try { p.EditPosition("GOOG", 50, 1000); Assert.Fail(); } catch (NullReferenceException) { Assert.Pass(); } }
public void MatcheStockPosition_WithoutGrowthCase() { var heightType = new SizeType { CategorySizeType = CategorySizeType.Height }; var sizeType = new SizeType { CategorySizeType = CategorySizeType.Size }; var size = new Size { Name = "52", SizeType = sizeType }; var itemType = Substitute.For <ItemsType>(); var nomenclature = Substitute.For <Nomenclature>(); nomenclature.Type.Returns(itemType); nomenclature.MatchingEmployeeSex(Sex.M).Returns(true); var protectionTools = Substitute.For <ProtectionTools>(); protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature }); var employee = Substitute.For <EmployeeCard>(); employee.Sex.Returns(Sex.M); var sizes = new List <EmployeeSize>(); employee.Sizes.Returns(sizes); employee.Sizes.Add(new EmployeeSize { Size = new Size { Name = "182" }, SizeType = heightType, Employee = employee }); employee.Sizes.Add(new EmployeeSize { Size = size, SizeType = sizeType, Employee = employee }); var normItem = Substitute.For <NormItem>(); normItem.ProtectionTools.Returns(protectionTools); var employeeCardItem = new EmployeeCardItem(employee, normItem); var stockPosition = new StockPosition(nomenclature, 0, size, null); Assert.That(employeeCardItem.MatcheStockPosition(stockPosition)); }
public static bool GetIsStockTransactionRequired(StockPosition position, int localQuantity) { var cassetteQuantity = 0; if (position.Direction == (int)Direction.Issue || position.Direction == (int)Direction.Recycle) { cassetteQuantity = position.Quantity - localQuantity; } if (position.Direction == (int)Direction.Collect || position.Direction == (int)Direction.Recycle) { cassetteQuantity = position.Quantity + localQuantity; } if ((cassetteQuantity < 0 && (position.Direction == (int)Direction.Issue || position.Direction == (int)Direction.Recycle)) || (cassetteQuantity > position.Capacity && (position.Direction == (int)Direction.Collect || position.Direction == (int)Direction.Recycle))) { return(true); } return(false); }
public void Given_a_portfolio_contains_a_stock_position_When_position_has_holdings_and_market_price_Then_valuation_is_holding_times_market_price() { // Criteria 1A //* Given stock positions contain a holding and a market price // Arrange var roboStock = new StockPosition() { Stock = new Stock() { Symbol = "ROBO" }, Qty = 100, Price = 8.22M }; //* When a position has both holding and market price //* Then the valuation of the position is holding x market price //Act var actual = roboStock.GetValue(); var expected = 822M; //Assert Assert.AreEqual <decimal>(expected, actual); }
public T DeserializeObject <T>(JToken jToken) { T obj = default(T); try { Type type = typeof(T); if (type.Name == "Quote") { } else if (type.Name == "EtradeAccount") { JObject respObject = jToken["json.accountBalanceResponse"].Value <JObject>(); JObject accObject = respObject["accountBalance"].Value <JObject>(); JObject accMarginObject = respObject["marginAccountBalance"].Value <JObject>(); EtradeAccount a = new EtradeAccount(); a.Id = respObject["accountId"].Value <string>(); //a.Type = respObject["accountType"].Value<string>(); //a.Balance = accObject["balance"].Value<decimal>(); a.MarginAvailable = accMarginObject["marginBalance"].Value <decimal>(); obj = (T)Convert.ChangeType(a, typeof(T)); } else if (type.Name == "StockPosition") { StockPosition p = new StockPosition(); JObject prodObject = jToken["productId"].Value <JObject>(); p.Symbol = prodObject["symbol"].Value <string>(); p.TotalCount = jToken["qty"].Value <decimal>(); obj = (T)Convert.ChangeType(p, typeof(T)); } } catch (Exception ex) { throw; } //} return(obj); }
public void MatcheStockPosition_SizeTest() { var employee = new EmployeeCard(); employee.Sex = Sex.M; var sizeType = new SizeType { CategorySizeType = CategorySizeType.Size }; var size = new Size { Name = "52", SizeType = sizeType }; employee.Sizes.Add(new EmployeeSize { Size = size, SizeType = sizeType, Employee = employee }); var itemType = Substitute.For <ItemsType>(); itemType.SizeType.Returns(sizeType); var nomenclature = Substitute.For <Nomenclature>(); nomenclature.Id.Returns(25); nomenclature.Type.Returns(itemType); nomenclature.MatchingEmployeeSex(Sex.M).Returns(true); var protectionTools = Substitute.For <ProtectionTools>(); protectionTools.MatchedNomenclatures.Returns(new[] { nomenclature }); var normItem = Substitute.For <NormItem>(); normItem.ProtectionTools.Returns(protectionTools); var employeeItem = new EmployeeCardItem(employee, normItem); var stockPosition = new StockPosition(nomenclature, 0, size, null); var result = employeeItem.MatcheStockPosition(stockPosition); Assert.That(result, Is.True); }
public void UpdateEmployeeWearItems_NextIssueDiffIdsTest() { NewSessionWithSameDB(); var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); //Поднимаем id номенклатуры до 2. uow.Save(new Nomenclature()); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); //Поднимаем id сиза до 3. uow.Save(new ProtectionTools { Name = "Id = 1" }); uow.Save(new ProtectionTools { Name = "Id = 2" }); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Month; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; expense.AddItem(position1, 1); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); using (var uow2 = UnitOfWorkFactory.CreateWithoutRoot()) { var employeeTest = uow2.GetById <EmployeeCard>(employee.Id); Assert.That(employeeTest.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2018, 11, 22))); } } }
public static Decimal VolatilityPriceChanges(StockPosition sp, int n) { Decimal[] closings = new DataManipulator().GetListOfDailyClosingPrices(sp.GetTicker(), n); return(VolatilityPriceChanges(closings)); }
public static Decimal NDayVolatility(int n, StockPosition sp) { Decimal[] prices = new DataManipulator().GetListOfDailyClosingPrices(sp.GetTicker(), n); return(StandardDeviationPopulation(prices)); }
public void GetReferencedDocuments_CollectiveExpenseTest() { var interactive = Substitute.For <IInteractiveQuestion>(); interactive.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var protectionTools = new ProtectionTools { Name = "Тестовая курточка" }; uow.Save(protectionTools); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры" }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; nomenclature.ProtectionTools.Add(protectionTools); uow.Save(nomenclature); var norm = new Norm(); norm.AddItem(protectionTools); uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); var employee2 = new EmployeeCard(); employee2.AddUsedNorm(norm); uow.Save(employee2); var expense = new CollectiveExpense() { Date = new DateTime(2021, 9, 10), Warehouse = warehouse, }; var size = new Size(); var height = new Size(); uow.Save(size); uow.Save(height); var stockPosition = new StockPosition(nomenclature, 0, size, height); var item = expense.AddItem(employee.WorkwearItems.FirstOrDefault(), stockPosition, 1); var item2 = expense.AddItem(employee2.WorkwearItems.FirstOrDefault(), stockPosition, 10); expense.UpdateOperations(uow, baseParameters, interactive); uow.Save(expense); uow.Commit(); var repository = new EmployeeIssueRepository(uow); var results = repository .GetReferencedDocuments(item.EmployeeIssueOperation.Id, item2.EmployeeIssueOperation.Id); var result1 = results.First(x => x.OperationId == item.EmployeeIssueOperation.Id); Assert.That(result1.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense)); Assert.That(result1.DocumentId, Is.EqualTo(expense.Id)); Assert.That(result1.ItemId, Is.EqualTo(item.Id)); var result2 = results.First(x => x.OperationId == item2.EmployeeIssueOperation.Id); Assert.That(result2.DocumentType, Is.EqualTo(StokDocumentType.CollectiveExpense)); Assert.That(result2.DocumentId, Is.EqualTo(expense.Id)); Assert.That(result2.ItemId, Is.EqualTo(item2.Id)); } }
public void IssuingToSubdivisionTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); uow.Save(sizeType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Name = "Тестовая номеклатура", Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size(); uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var subdivision = new Subdivision { Name = "Тестовое подразделение" }; uow.Save(subdivision); var place = new SubdivisionPlace { Name = "Тестовое место", Subdivision = subdivision }; uow.Save(place); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Object, Warehouse = warehouse, Subdivision = subdivision, Date = new DateTime(2018, 10, 22) }; var item1 = expense.AddItem(position1, 1); item1.SubdivisionPlace = place; //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); var listed = SubdivisionRepository.ItemsBalance(uow, subdivision); var balance = listed.First(); Assert.That(balance.Amount, Is.EqualTo(1)); Assert.That(balance.NomeclatureName, Is.EqualTo("Тестовая номеклатура")); Assert.That(balance.Place, Is.EqualTo("Тестовое место")); Assert.That(balance.WearPercent, Is.EqualTo(0m)); } }
public void TestGetEntranceValueOfPosition(decimal p, int q, decimal expVal) { var sp = new StockPosition("TEST", q, p); Assert.IsTrue(expVal == sp.GetEntranceValue()); }
public void IssueAndCreateIssuanceSheetTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType, HeightType = heightType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); uow.Save(protectionTools); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; var expenseItem = expense.AddItem(position1, 1); expense.CreateIssuanceSheet(null); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); expense.UpdateIssuanceSheet(); uow.Save(expense.IssuanceSheet); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); uow.Commit(); Assert.That(expense.IssuanceSheet, Is.Not.Null); var issuanceItem = expense.IssuanceSheet.Items.First(); Assert.That(issuanceItem.ExpenseItem, Is.EqualTo(expenseItem)); } }
public void UpdateOperations_IssuingMultipleRows_TwoNomenclatureSameNeedsTest() { var ask = Substitute.For <IInteractiveQuestion>(); ask.Question(string.Empty).ReturnsForAnyArgs(true); using (var uow = UnitOfWorkFactory.CreateWithoutRoot()) { var warehouse = new Warehouse(); uow.Save(warehouse); var sizeType = new SizeType(); var heightType = new SizeType(); uow.Save(sizeType); uow.Save(heightType); var nomenclatureType = new ItemsType { Name = "Тестовый тип номенклатуры", SizeType = sizeType }; uow.Save(nomenclatureType); var nomenclature = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature); var size = new Size { SizeType = sizeType }; var height = new Size { SizeType = heightType }; uow.Save(size); uow.Save(height); var position1 = new StockPosition(nomenclature, 0, size, height); var nomenclature2 = new Nomenclature { Type = nomenclatureType }; uow.Save(nomenclature2); var position2 = new StockPosition(nomenclature2, 0, size, height); var protectionTools = new ProtectionTools { Name = "СИЗ для тестирования" }; protectionTools.AddNomeclature(nomenclature); protectionTools.AddNomeclature(nomenclature2); uow.Save(protectionTools); var norm = new Norm(); var normItem = norm.AddItem(protectionTools); normItem.Amount = 1; normItem.NormPeriod = NormPeriodType.Year; normItem.PeriodCount = 1; uow.Save(norm); var employee = new EmployeeCard(); employee.AddUsedNorm(norm); uow.Save(employee); uow.Commit(); var employeeSize = new EmployeeSize { Size = size, SizeType = sizeType, Employee = employee }; var employeeHeight = new EmployeeSize { Size = height, SizeType = heightType, Employee = employee }; employee.Sizes.Add(employeeSize); employee.Sizes.Add(employeeHeight); var income = new Income { Warehouse = warehouse, Date = new DateTime(2017, 1, 1), Operation = IncomeOperations.Enter }; var incomeItem1 = income.AddItem(nomenclature); incomeItem1.Amount = 10; var incomeItem2 = income.AddItem(nomenclature2); incomeItem2.Amount = 5; income.UpdateOperations(uow, ask); uow.Save(income); var expense = new Expense { Operation = ExpenseOperations.Employee, Warehouse = warehouse, Employee = employee, Date = new DateTime(2018, 10, 22) }; expense.AddItem(position1, 1); expense.AddItem(position2, 1); var baseParameters = Substitute.For <BaseParameters>(); baseParameters.ColDayAheadOfShedule.Returns(0); //Обновление операций expense.UpdateOperations(uow, baseParameters, ask); uow.Save(expense); uow.Commit(); expense.UpdateEmployeeWearItems(); //Тут ожидаем предложение перенести дату использование второй номенклатуры на год. ask.ReceivedWithAnyArgs().Question(String.Empty); Assert.That(employee.WorkwearItems[0].NextIssue, Is.EqualTo(new DateTime(2020, 10, 22)) ); } }