One of Twin's clients needed a real time update for currency exchange. Basically in our system, instead of a continuous feed, the business requirement was that every week the admin would enter the new exchange rates (there were only 5 that were relevant). Once saved, there was supposed to be a real time push notification to all open clients so that they could update their forecast data.
Here is what my integration test needed to prove:
- Get the current exchange rates from the service
- Save a new exchange rate
- Receive the push notification
- Validate that the new rates has been recorded into model under the correct date.
var rtmpManager:ExchangeRateRTMPManager = new ExchangeRateRTMPManager(); var sequence:SequenceRunner = new SequenceRunner(this); sequence.addStep(new SequenceCaller(eventDispatcher, getInitialExchanges, [weeks] )) sequence.addStep(new SequenceWaiter(eventDispatcher, INITIAL_RATES_EVENT,TIMEOUT, handleTimeout)); sequence.addStep(new SequenceCaller(eventDispatcher, saveCurrency ,[er])) sequence.addStep(new SequenceWaiter(eventDispatcher, SAVE_CURRENCY_EVENT,TIMEOUT, handleTimeout)); sequence.addStep(new SequenceDelay(15*1000)) //Delay 15 s to see if we can get a notification in that time sequence.addAssertHandler( validateRTMPManagerReceivedPushNotifcation, null); sequence.run();
Tests passed, and it worked beautifully!