예제 #1
0
        public void FilterBySecurityRequest_RetrieveResults_Successful_DeleteAddedEntries()
        {
            // Contains Trades which are created in the Test Case
            IList <Trade> localTradesList = new List <Trade>();

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Buy, 20, 113, "FilterTestCase", "D00", new Security()
                {
                    Symbol = "TestSymbol"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("D00", 20);
                executionDetails.Add("D01", -20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Sell, 20, 113, "FilterTestCase", "D02", new Security()
                {
                    Symbol = "GOOG"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("D02", -20);
                executionDetails.Add("D03", 20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Save New Trade
            {
                Trade trade = new Trade(TradeSide.Buy, 20, 113, "FilterTestCase", "D04", new Security()
                {
                    Symbol = "TestSymbol"
                }, new DateTime(2015, 01, 21, 18, 20, 57));

                Dictionary <string, int> executionDetails = new Dictionary <string, int>();
                executionDetails.Add("D04", 20);
                executionDetails.Add("D05", -20);

                trade.ExecutionDetails = executionDetails;

                //add Trade to database
                _tradeRespository.AddUpdate(trade);

                // Add to list
                localTradesList.Add(trade);
            }

            // Wait for Transactions to complete
            Thread.Sleep(1000);

            //get the Trades filtered by Execution Provider
            IList <Trade> tradesReturned = _tradeRespository.FilterBySecurity(new Security()
            {
                Symbol = "TestSymbol"
            });

            Assert.IsNotNull(tradesReturned, "Values Retrieved");
            Assert.AreEqual(localTradesList.Count - 1, tradesReturned.Count, "Values Retrieved");

            Assert.IsTrue(tradesReturned[0].ExecutionDetails["D00"].Equals(localTradesList[0].ExecutionDetails["D00"]), "Matching 1st Trade 1st Execution");
            Assert.IsTrue(tradesReturned[0].ExecutionDetails["D01"].Equals(localTradesList[0].ExecutionDetails["D01"]), "Matching 1st Trade 2st Execution");

            Assert.IsTrue(tradesReturned[1].ExecutionDetails["D04"].Equals(localTradesList[2].ExecutionDetails["D04"]), "Matching 2nd Trade 1st Execution");
            Assert.IsTrue(tradesReturned[1].ExecutionDetails["D05"].Equals(localTradesList[2].ExecutionDetails["D05"]), "Matching 2nd Trade 2st Execution");

            // Delete Trades Generated for Test Case
            foreach (Trade trade in localTradesList)
            {
                _tradeRespository.Delete(trade);
            }
        }