Skip to content

Instantly share code, notes, and snippets.

@Stray
Created March 30, 2010 17:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Stray/349347 to your computer and use it in GitHub Desktop.
Save Stray/349347 to your computer and use it in GitHub Desktop.
package com.client.application.xendtoendtests {
import asunit.framework.TestCase;
import applicationShell;
import shell.applicationShellSkin;
import com.newloop.roboteyes.inViewOf;
import com.newloop.roboteyes.core.RobotEyes;
import com.newloop.roboteyes.drivers.DisplayObjectDriver;
import com.newloop.roboteyes.drivers.TextFieldDriver;
import com.newloop.roboteyes.drivers.InteractiveObjectDriver;
import com.client.application.shell.restricted.ShellContextView;
import com.client.application.shell.restricted.view.LoginPanel;
import com.client.application.shell.restricted.view.WelcomePanel;
import com.client.application.shell.restricted.view.CogProgressDisplay;
import com.client.application.modules.mainmenumodule.restricted.MainMenuModule;
import com.client.application.modules.modulemanager.restricted.ModuleManager;
import flash.display.DisplayObject;
import flash.display.InteractiveObject;
import flash.display.Sprite;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
import flash.text.TextField;
import flash.display.DisplayObjectContainer;
public class LoginCorrectlyLoadModulesOpenMainMenuTest extends TestCase {
private var robotEyes:RobotEyes;
private var testCount:uint;
public function LoginCorrectlyLoadModulesOpenMainMenuTest(methodName:String=null) {
super(methodName)
}
override public function run():void{
if(robotEyes==null){
robotEyes = new RobotEyes(applicationShell);
addChild(robotEyes);
robotEyes.visible = false;
}
// need to wait a while
var timer:Timer = new Timer(1000,1);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
}
private function timerHandler(e:TimerEvent):void{
robotEyes.visible = true;
super.run();
}
override protected function setUp():void {
super.setUp();
}
override protected function tearDown():void {
super.tearDown();
}
override protected function cleanUp():void{
removeChild(robotEyes);
robotEyes = null;
}
public function testEndToEndProcessPass():void{
checkNoCogsAreLitUp();
var welcomeScreenDriver:DisplayObjectDriver = inViewOf(ShellContextView).getA(WelcomePanel);
var welcomeScreen:DisplayObject = welcomeScreenDriver.view;
assertTrue('WelcomePanel is off screen', (welcomeScreen.y != 0));
var usernameTextFieldDriver:TextFieldDriver = inViewOf(ShellContextView).inViewOf(LoginPanel).inViewOf(applicationShellSkin.GuiLoginPanel).getA(TextField).named("username_txt") as TextFieldDriver;
usernameTextFieldDriver.enterText('Stray');
var passwordTextFieldDriver:TextFieldDriver = inViewOf(ShellContextView).inViewOf(LoginPanel).inViewOf(applicationShellSkin.GuiLoginPanel).getA(TextField).named("password_txt") as TextFieldDriver;
passwordTextFieldDriver.enterText('s0m3p@ssw0rd');
var buttonDriver:InteractiveObjectDriver = inViewOf(ShellContextView).inViewOf(LoginPanel).inViewOf(applicationShellSkin.GuiLoginPanel).getA(Sprite).withProperty("name", "btn_login") as InteractiveObjectDriver;
var asyncTest:Function = addAsync(null, 4000,loginShouldBeOffScreenAndWelcomeShouldBeOnScreen);
testCount = 0;
var asyncCompleteTest:Function = addAsync(null, 1000, repeatingCheckForFinalCogLit);
buttonDriver.click();
}
public function loginShouldBeOffScreenAndWelcomeShouldBeOnScreen(e:Event):void{
var loginScreenDriver:DisplayObjectDriver = inViewOf(ShellContextView).getA(LoginPanel);
var loginScreen:DisplayObject = loginScreenDriver.view;
assertTrue('LoginPanel is off screen', (loginScreen.y < (-loginScreen.height)));
var welcomeScreenDriver:DisplayObjectDriver = inViewOf(ShellContextView).getA(WelcomePanel);
var welcomeScreen:DisplayObject = welcomeScreenDriver.view;
assertTrue('WelcomePanel is on screen', (welcomeScreen.y == 0));
checkWelcomeScreenHasCorrectUsername();
}
public function checkWelcomeScreenHasCorrectUsername():void{
var welcomeUsernameDriver:TextFieldDriver = inViewOf(ShellContextView).inViewOf(WelcomePanel).inViewOf(applicationShellSkin.GuiWelcomePanel).getA(TextField).named("username_txt") as TextFieldDriver;
assertTrue('WelcomePanel has correct username', (welcomeUsernameDriver.checkText('Stray')));
}
public function checkNoCogsAreLitUp():void{
var cogViewDriver:DisplayObjectDriver = inViewOf(ShellContextView).inViewOf(CogProgressDisplay).inViewOf(applicationShellSkin.GuiCogProgressDisplay).getA(Sprite).named("mc_cog1");
var cogView:DisplayObject = cogViewDriver.view;
assertTrue("Cog 1 is not lit", (cogView.visible == false));
}
public function repeatingCheckForFinalCogLit(e:Event):void{
var asyncCompleteTest:Function;
testCount+=1;
if(testCount>15){
assertTrue('Cog 7 is lit up', false);
} else {
var cogViewDriver:DisplayObjectDriver = inViewOf(ShellContextView).inViewOf(CogProgressDisplay).inViewOf(applicationShellSkin.GuiCogProgressDisplay).getA(Sprite).named("mc_cog7");
var cogView:DisplayObject = cogViewDriver.view;
if(cogView.visible==false){
asyncCompleteTest = addAsync(null, 1000, repeatingCheckForFinalCogLit);
} else {
assertTrue('Cog 7 is lit up', true);
asyncCompleteTest = addAsync(null, 3000, checkModuleManagerAdded);
}
}
}
public function checkModuleManagerAdded(e:Event):void{
var moduleManagerScreenDriver:DisplayObjectDriver = inViewOf(ShellContextView).getA(ModuleManager);
var moduleManager:DisplayObject = moduleManagerScreenDriver.view;
assertTrue("module manager is on the display list", moduleManager != null);
addAsync(null, 2000, checkInitialScreens);
}
public function checkInitialScreens(e:Event):void{
checkWelcomePanelIsOffScreen();
checkMainMenuIsOnScreen();
}
public function checkMainMenuIsOnScreen():void{
var mainMenuScreenDriver:DisplayObjectDriver = inViewOf(ModuleManager).getA(MainMenuModule);
var mainMenuScreen:DisplayObject = mainMenuScreenDriver.view;
assertTrue("Main menu screen is not null", mainMenuScreen != null);
assertTrue("Main menu screen is visible", mainMenuScreen.visible = true);
assertTrue("Main menu screen is on stage", mainMenuScreen.y == 0);
}
public function checkWelcomePanelIsOffScreen():void{
var shellDriver:DisplayObjectDriver = inViewOf(ShellContextView);
var shellView:DisplayObjectContainer = shellDriver.view as DisplayObjectContainer;
var startupHolder:DisplayObject = shellView.getChildAt(1);
assertTrue('Startup shell is off screen', (startupHolder.y < 0));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment