PageRenderTime 30ms CodeModel.GetById 5ms RepoModel.GetById 0ms app.codeStats 0ms

/V2.2/trunk/RI/StockTraderRI.Tests.AcceptanceTest/StockTraderRI.Tests.AcceptanceTest/Desktop/StockTraderRIDesktopFixture.cs

#
C# | 382 lines | 263 code | 58 blank | 61 comment | 0 complexity | f60329e78b6c0139b75a5fe3d70dc846 MD5 | raw file
  1. //===================================================================================
  2. // Microsoft patterns & practices
  3. // Composite Application Guidance for Windows Presentation Foundation and Silverlight
  4. //===================================================================================
  5. // Copyright (c) Microsoft Corporation. All rights reserved.
  6. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
  7. // OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
  8. // LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  9. // FITNESS FOR A PARTICULAR PURPOSE.
  10. //===================================================================================
  11. // The example companies, organizations, products, domain names,
  12. // e-mail addresses, logos, people, places, and events depicted
  13. // herein are fictitious. No association with any real company,
  14. // organization, product, domain name, email address, logo, person,
  15. // places, or events is intended or should be inferred.
  16. //===================================================================================
  17. using System;
  18. using System.Text;
  19. using System.Collections.Generic;
  20. using System.Linq;
  21. using Microsoft.VisualStudio.TestTools.UnitTesting;
  22. using System.IO;
  23. using System.Diagnostics;
  24. using System.Threading;
  25. using System.Windows.Automation;
  26. using System.Windows.Automation.Peers;
  27. using System.Windows.Automation.Text;
  28. using System.Windows.Automation.Provider;
  29. using AcceptanceTestLibrary.ApplicationHelper;
  30. using AcceptanceTestLibrary.Common;
  31. using StockTraderRI.Tests.AcceptanceTest.TestEntities.Page;
  32. using StockTraderRI.Tests.AcceptanceTest.TestEntities.Assertion;
  33. using StockTraderRI.Tests.AcceptanceTest.TestEntities.Action;
  34. using AcceptanceTestLibrary.ApplicationObserver;
  35. using AcceptanceTestLibrary.Common.Desktop;
  36. using System.Reflection;
  37. using AcceptanceTestLibrary.TestEntityBase;
  38. namespace StockTraderRI.Tests.AcceptanceTest.Desktop
  39. {
  40. /// <summary>
  41. /// Acceptance test fixture for WPF application
  42. /// </summary>
  43. #if DEBUG
  44. [DeploymentItem(@"..\Desktop\StockTraderRI\bin\Debug", "WPF")]
  45. [DeploymentItem(@".\StockTraderRI.Tests.AcceptanceTest\bin\Debug")]
  46. #else
  47. [DeploymentItem(@"..\Desktop\StockTraderRI\bin\Release", "WPF")]
  48. [DeploymentItem(@".\StockTraderRI.Tests.AcceptanceTest\bin\Release")]
  49. #endif
  50. [TestClass]
  51. public class StockTraderRIDesktopFixture : FixtureBase<WpfAppLauncher>
  52. {
  53. #region Additional test attributes
  54. // Use TestInitialize to run code before running each test
  55. [TestInitialize()]
  56. public void MyTestInitialize()
  57. {
  58. string currentOutputPath = (new System.IO.DirectoryInfo(Assembly.GetExecutingAssembly().Location)).Parent.FullName;
  59. StockTraderRIPage<WpfAppLauncher>.Window = base.LaunchApplication(currentOutputPath + GetDesktopApplication(), GetDesktopApplicationProcess())[0];
  60. }
  61. // Use TestCleanup to run code after each test has run
  62. [TestCleanup()]
  63. public void MyTestCleanup()
  64. {
  65. PageBase<WpfAppLauncher>.DisposeWindow();
  66. Process p = WpfAppLauncher.GetCurrentAppProcess();
  67. base.UnloadApplication(p);
  68. }
  69. #endregion
  70. #region Test Methods
  71. #region Application Launch Test
  72. [TestMethod]
  73. public void DesktopApplicationLoadTest()
  74. {
  75. Assert.IsNotNull(StockTraderRIPage<WpfAppLauncher>.Window, "StockTraderRI is not launched.");
  76. }
  77. #endregion
  78. #endregion
  79. #region Position summary Module Load Test
  80. /// <summary>
  81. /// Tests if position summary details are loaded.
  82. /// </summary>
  83. [TestMethod]
  84. public void DesktopApplicationPositionSummaryTest()
  85. {
  86. InvokePositionSummaryAssert();
  87. }
  88. /// <summary>
  89. /// Tests the number of columns from position summary view table.
  90. /// </summary>
  91. ///
  92. [TestMethod]
  93. public void DesktopApplicationPositionSummaryColumnCountTest()
  94. {
  95. //For now the test data is hardcoded in resource file. But if the datasource is available it will be read from the datasource
  96. StockTraderRIAssertion<WpfAppLauncher>.DesktopAssertPositionSummaryColumnCount();
  97. }
  98. /// <summary>
  99. /// Tests the number of rows from position summary view table.
  100. /// </summary>
  101. [TestMethod]
  102. public void DesktopApplicationPositionSummaryRowCountTest()
  103. {
  104. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryRowCount();
  105. }
  106. /// <summary>
  107. /// Tests the computed value (Market value & Gain Loss %) with the value loaded in the screen
  108. /// </summary>
  109. ///
  110. [TestMethod]
  111. public void DesktopApplicationPositionSummaryDataTest()
  112. {
  113. //For each Stock or Symbol take the old value and get the value from Web service and monitor that
  114. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryValuesForSymbol();
  115. }
  116. #endregion
  117. #region Market Trend Test
  118. /// <summary>
  119. /// Tests the Historical Data Block is loaded
  120. /// </summary>
  121. ///
  122. [TestMethod]
  123. public void DesktopApplicationMarketTrendTest()
  124. {
  125. StockTraderRIAssertion<WpfAppLauncher>.AssertHistoricalDataText();
  126. }
  127. /// <summary>
  128. /// Tests the Pie Chart Data Block is loaded
  129. /// </summary>
  130. ///
  131. [TestMethod]
  132. public void DesktopApplicationPieChartTextLoadTest()
  133. {
  134. StockTraderRIAssertion<WpfAppLauncher>.AssertPieChartTextBlock();
  135. }
  136. #endregion
  137. #region PositionBuySellTab Test
  138. [TestMethod]
  139. public void DesktopPositionBuySellTabControlsLoadTest()
  140. {
  141. InvokeDesktopPositionBuySellTabControlsLoad("Buy");
  142. }
  143. [TestMethod]
  144. public void DesktopAttemptBuyStockWithValidData()
  145. {
  146. InvokeAttemptBuySellOrderWithValidData("Buy");
  147. }
  148. [TestMethod]
  149. public void DesktopAttemptBuyStockWithInValidData()
  150. {
  151. InvokeAttemptBuySellOrderWithInValidData("Buy");
  152. }
  153. [TestMethod]
  154. public void DesktopAttemptSellStockWithValidData()
  155. {
  156. InvokeAttemptBuySellOrderWithValidData("Sell");
  157. }
  158. [TestMethod]
  159. public void DesktopAttemptSellStockWithInValidData()
  160. {
  161. InvokeAttemptBuySellOrderWithInValidData("Sell");
  162. }
  163. [TestMethod]
  164. public void DesktopAttemptStockBuySellCancelByCancelButton()
  165. {
  166. InvokeAttemptOrderCancelByCancelButton();
  167. }
  168. [TestMethod]
  169. public void DesktopProcessMultipleStockBuySellBySubmitAllButtonforValidData()
  170. {
  171. InvokeProcessMultipleStockBuySellBySubmitAllButtonforValidData();
  172. }
  173. [TestMethod]
  174. public void DesktopProcessMultipleStockBuySellBySubmitAllButtonforInValidData()
  175. {
  176. InvokeProcessMultipleStockBuySellBySubmitAllButtonforInValidData();
  177. }
  178. [TestMethod]
  179. public void DesktopProcessMultipleStockBuySellByCancelAllButton()
  180. {
  181. InvokeProcessMultipleStockBuySellByCancelAllButton();
  182. }
  183. #endregion
  184. #region WatchList Module Test
  185. /// <summary>
  186. /// Tests the Watch List Grid is loaded
  187. /// </summary>
  188. ///
  189. [TestMethod]
  190. public void DesktopApplicationWatchListGridLoadTest()
  191. {
  192. StockTraderRIAssertion<WpfAppLauncher>.AssertWatchListGrid();
  193. }
  194. #endregion
  195. #region NewsArticle Module Load Test
  196. /// <summary>
  197. /// Tests the News Articles Data Block is loaded
  198. /// </summary>
  199. ///
  200. [TestMethod]
  201. public void DesktopApplicationNewsArticleTextLoadTest()
  202. {
  203. StockTraderRIAssertion<WpfAppLauncher>.AssertNewsArticleText();
  204. }
  205. #endregion
  206. #region Watch List Module Test
  207. /// <summary>
  208. /// Tests the AddtoWatchList Button and the text Box is loaded
  209. /// </summary>
  210. ///
  211. [TestMethod]
  212. public void DesktopApplicationAddtoWatchListTextBoxLoadTest()
  213. {
  214. InvokeAddtoWatchListAssert();
  215. }
  216. [TestMethod]
  217. public void DesktopStockRemovedfromWatchListTextBoxTest()
  218. {
  219. InvokeStockRemovedfromWatchListTextBoxAssert();
  220. }
  221. /// <summary>
  222. /// Tests the stock added in the TextBox gets added to the Watch List Grid on Clicking the AddtoWatchList Button
  223. /// </summary>
  224. ///
  225. [TestMethod]
  226. public void DesktopApplicationStockAddedinWatchListTextBoxTest()
  227. {
  228. InvokeStockAddedinWatchListTextBoxAssert();
  229. }
  230. #endregion
  231. #region private methods
  232. private static string GetDesktopApplicationProcess()
  233. {
  234. return ConfigHandler.GetValue("WpfAppProcessName");
  235. }
  236. private static string GetDesktopApplication()
  237. {
  238. return ConfigHandler.GetValue("WpfAppLocation");
  239. }
  240. private void InvokePositionSummaryAssert()
  241. {
  242. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryTab();
  243. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryGrid();
  244. }
  245. private void InvokeOrderToolBarAssert()
  246. {
  247. StockTraderRIAssertion<WpfAppLauncher>.AssertSubmitButton();
  248. StockTraderRIAssertion<WpfAppLauncher>.AssertSubmitAllButton();
  249. StockTraderRIAssertion<WpfAppLauncher>.AssertCancelButton();
  250. StockTraderRIAssertion<WpfAppLauncher>.AssertCancelAllButton();
  251. }
  252. private void InvokeAddtoWatchListAssert()
  253. {
  254. StockTraderRIAssertion<WpfAppLauncher>.AssertTextBoxBlock();
  255. }
  256. private void InvokeStockAddedinWatchListTextBoxAssert()
  257. {
  258. StockTraderRIAssertion<WpfAppLauncher>.AssertStockAddedinWatchListTextBox();
  259. StockTraderRIAssertion<WpfAppLauncher>.AssertWatchListRowCount();
  260. }
  261. private void InvokeStockRemovedfromWatchListTextBoxAssert()
  262. {
  263. StockTraderRIAssertion<WpfAppLauncher>.AssertStockAddedinWatchListTextBox();
  264. StockTraderRIAssertion<WpfAppLauncher>.AssertWatchListRowCount();
  265. StockTraderRIAssertion<WpfAppLauncher>.AssertStockRemovedfromWatchListTextBox();
  266. }
  267. private void InvokeDesktopPositionBuySellTabControlsLoad(string option)
  268. {
  269. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryTab();
  270. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionBuyButtonClickTest(option);
  271. StockTraderRIAssertion<WpfAppLauncher>.AssertTermComboBox();
  272. StockTraderRIAssertion<WpfAppLauncher>.AssertPriceLimitTextBox();
  273. StockTraderRIAssertion<WpfAppLauncher>.AssertSellRadioButton();
  274. StockTraderRIAssertion<WpfAppLauncher>.AssertBuyRadioButton();
  275. StockTraderRIAssertion<WpfAppLauncher>.AssertSharesTextBox();
  276. StockTraderRIAssertion<WpfAppLauncher>.AssertOrderTypeComboBox();
  277. StockTraderRIAssertion<WpfAppLauncher>.AssertOrderCommandSubmit();
  278. StockTraderRIAssertion<WpfAppLauncher>.AssertOrderCommandCancel();
  279. StockTraderRIAssertion<WpfAppLauncher>.AssertOrderCommandSubmitAllButton();
  280. StockTraderRIAssertion<WpfAppLauncher>.AssertOrderCommandCancelAllButton();
  281. }
  282. private void InvokeAttemptBuySellOrderWithValidData(string option)
  283. {
  284. InvokeDesktopPositionBuySellTabControlsLoad(option);
  285. StockTraderRIAssertion<WpfAppLauncher>.AssertAttemptBuySellOrderWithValidData();
  286. }
  287. private void InvokeAttemptBuySellOrderWithInValidData(string option)
  288. {
  289. InvokeDesktopPositionBuySellTabControlsLoad(option);
  290. StockTraderRIAssertion<WpfAppLauncher>.AssertAttemptBuySellOrderWithInValidData();
  291. }
  292. private void InvokeAttemptOrderCancelByCancelButton()
  293. {
  294. InvokeDesktopPositionBuySellTabControlsLoad("Buy");
  295. StockTraderRIAssertion<WpfAppLauncher>.AssertAttemptOrderCancelByCancelButton();
  296. }
  297. private void InvokeProcessMultipleStockBuySellBySubmitAllButtonforValidData()
  298. {
  299. InvokeDesktopPositionBuySellTabLoad();
  300. StockTraderRIAssertion<WpfAppLauncher>.AssertProcessMultipleStockBuySellBySubmitAllButtonforValidData();
  301. }
  302. private void InvokeDesktopPositionBuySellTabLoad()
  303. {
  304. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryTab();
  305. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionBuyButtonClickTest("Buy");
  306. }
  307. private void InvokeProcessMultipleStockBuySellBySubmitAllButtonforInValidData()
  308. {
  309. InvokeSilverLightPositionBuySellTabLoad();
  310. StockTraderRIAssertion<WpfAppLauncher>.AssertProcessMultipleStockBuySellBySubmitAllButtonforInValidData();
  311. }
  312. private void InvokeSilverLightPositionBuySellTabLoad()
  313. {
  314. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionSummaryTab();
  315. StockTraderRIAssertion<WpfAppLauncher>.AssertPositionBuyButtonClickTest("Buy");
  316. }
  317. private void InvokeProcessMultipleStockBuySellByCancelAllButton()
  318. {
  319. InvokeDesktopPositionBuySellTabLoad();
  320. StockTraderRIAssertion<WpfAppLauncher>.AssertProcessMultipleStockBuySellByCancelAllButton();
  321. }
  322. #endregion
  323. }
  324. }