1+ using ChocolateyGui . TestUtilities ;
2+ using ChocolateyGui . UITests . Screens ;
3+ using FlaUI . Core ;
4+ using FlaUI . Core . AutomationElements ;
5+ using FlaUI . Core . Input ;
6+ using FlaUI . Core . WindowsAPI ;
7+ using NUnit . Framework ;
8+ using System . Linq ;
9+ using System . Threading ;
10+ using static System . Windows . Forms . VisualStyles . VisualStyleElement . TextBox ;
11+
12+ namespace ChocolateyGui . UITests
13+ {
14+ [ TestFixture ]
15+ public class BetaPackagesTests : ChocolateyGuiTestBase
16+ {
17+ private const string PACKAGE_UNDER_TEST = "mixedpackage" ;
18+ private const string LATEST_STABLE_VERSION = "2.0.0" ;
19+ private const string LATEST_BETA_VERSION = "2.1.0-beta-1" ;
20+ protected new ApplicationStartMode ApplicationStartMode => ApplicationStartMode . OncePerFixture ;
21+
22+ private MainScreen MainScreen ;
23+ private RemoteSourceScreen RemoteSourceScreen ;
24+
25+ [ SetUp ]
26+ public void Arrange ( )
27+ {
28+ MainScreen = Application . GetMainWindow ( Automation ) . As < MainScreen > ( ) ;
29+
30+ RemoteSourceScreen = MainScreen . OpenAndGetRemoteSourceScreen ( "hermes" ) ;
31+ RemoteSourceScreen . FocusAndClearSearch ( ) ;
32+
33+ Keyboard . Type ( PACKAGE_UNDER_TEST ) ;
34+ Thread . Sleep ( 500 ) ; // Sometimes this fails without a minor sleep when debugging...
35+ Keyboard . Press ( VirtualKeyShort . ENTER ) ;
36+ MainScreen . WaitForDialog ( ) ;
37+ }
38+
39+ [ Test ]
40+ public void RemoteScreenFindsStableVersionOfDesiredPackage ( )
41+ {
42+ var packageList = RemoteSourceScreen . GetPackageList ( ) ;
43+
44+ Assert . AreEqual ( 1 , packageList . Length ) ;
45+
46+ var targetPackage = packageList . FirstOrDefault ( ) ;
47+ targetPackage . Click ( ) ;
48+ Thread . Sleep ( 100 ) ; // Without waiting, sometimes this fails...
49+ targetPackage . DoubleClick ( ) ;
50+ var versionItem = MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . VERSION_TEXT ) ) ;
51+
52+ Assert . That ( string . Equals ( LATEST_STABLE_VERSION , versionItem . Name ) ) ;
53+ }
54+
55+ [ Test ]
56+ public void RemoteScreenFindsPrereleaseVersionOfDesiredPackage ( )
57+ {
58+ MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . PRERELEASE_CHECK_BOX ) ) . Click ( ) ;
59+ MainScreen . WaitForDialog ( ) ;
60+
61+ var packageList = RemoteSourceScreen . GetPackageList ( ) ;
62+
63+ Assert . AreEqual ( 1 , packageList . Length ) ;
64+
65+ var targetPackage = packageList . FirstOrDefault ( ) ;
66+ targetPackage . Click ( ) ;
67+ Thread . Sleep ( 100 ) ;
68+ targetPackage . DoubleClick ( ) ;
69+ var versionItem = MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . VERSION_TEXT ) ) ;
70+
71+ Assert . That ( string . Equals ( LATEST_BETA_VERSION , versionItem . Name ) ) ;
72+ }
73+
74+ [ Test ]
75+ public void RemoteScreenFindsAllStableVersionsOfDesiredPackage ( )
76+ {
77+ MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . ALL_VERSIONS_CHECK_BOX ) ) . Click ( ) ;
78+ MainScreen . WaitForDialog ( ) ;
79+
80+ var packageList = RemoteSourceScreen . GetPackageList ( ) ;
81+
82+ Assert . AreEqual ( 3 , packageList . Length ) ;
83+
84+ var targetPackage = packageList . FirstOrDefault ( ) ;
85+ targetPackage . Click ( ) ;
86+ Thread . Sleep ( 100 ) ;
87+ targetPackage . DoubleClick ( ) ;
88+ var versionItem = MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . VERSION_TEXT ) ) ;
89+
90+ Assert . That ( string . Equals ( LATEST_STABLE_VERSION , versionItem . Name ) ) ;
91+ }
92+
93+ [ Test ]
94+ public void RemoteScreenFindsAllVersionsOfDesiredPackage ( )
95+ {
96+ MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . PRERELEASE_CHECK_BOX ) ) . Click ( ) ;
97+ MainScreen . WaitForDialog ( ) ;
98+
99+ MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . ALL_VERSIONS_CHECK_BOX ) ) . Click ( ) ;
100+ MainScreen . WaitForDialog ( ) ;
101+
102+ var packageList = RemoteSourceScreen . GetPackageList ( ) ;
103+
104+ Assert . AreEqual ( 10 , packageList . Length ) ;
105+
106+ var targetPackage = packageList . FirstOrDefault ( ) ;
107+ targetPackage . Click ( ) ;
108+ Thread . Sleep ( 100 ) ;
109+ targetPackage . DoubleClick ( ) ;
110+ var versionItem = MainScreen . FindFirstDescendant ( cf => cf . ByAutomationId ( AutomationIds . VERSION_TEXT ) ) ;
111+
112+ Assert . That ( string . Equals ( LATEST_BETA_VERSION , versionItem . Name ) ) ;
113+ }
114+ }
115+ }
0 commit comments