Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save drewbourne/905233 to your computer and use it in GitHub Desktop.
Save drewbourne/905233 to your computer and use it in GitHub Desktop.
Example of mocking FileReference for saving a file.
package mockolate.example
{
import flash.events.Event;
import flash.net.FileReference;
import mockolate.mock;
import mockolate.runner.MockolateRunner;
import org.flexunit.async.Async;
MockolateRunner;
[RunWith("mockolate.runner.MockolateRunner")]
public class UsingMockolateForFileReferenceSaveExample
{
[Mock]
public var fileReference:FileReference;
public var fileSaver:FileSaver;
public var data:Object;
[Before]
public function setup():void
{
fileSaver = new FileSaver();
data = <example>1</example>;
}
[Test(async)]
public function exampleOfSuccessfulSave():void
{
Async.proceedOnEvent(this, fileSaver, "fileSaverSuccess");
mock(fileReference).method("save").args(Object, String).dispatches(new Event(Event.COMPLETE), 100);
fileSaver.save(fileReference, data);
}
[Test(async)]
public function exampleOfArgumentError():void
{
Async.proceedOnEvent(this, fileSaver, "fileSaverFailure");
mock(fileReference).method("save").args(Object, String).throws(new ArgumentError("Data not a ByteArray!"));
fileSaver.save(fileReference, data);
}
}
}
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.net.FileReference;
internal class FileSaver extends EventDispatcher
{
public function save(fileReference:FileReference, data:*, defaultFileName:String = "saved_by_filesaver.xml"):void
{
fileReference.addEventListener(Event.COMPLETE, _fileReference_complete, false, 0, true);
try
{
fileReference.save(data, defaultFileName);
}
catch (e:Error)
{
dispatchEvent(new Event("fileSaverFailure"));
}
}
private function _fileReference_complete(event:Event):void
{
dispatchEvent(new Event("fileSaverSuccess"));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment