Created
March 30, 2010 17:45
-
-
Save Stray/349347 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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