Skip to content

Instantly share code, notes, and snippets.

@ryanhanks-wf
Created November 21, 2014 13:25
Show Gist options
  • Select an option

  • Save ryanhanks-wf/03fc2d65af510cd95410 to your computer and use it in GitHub Desktop.

Select an option

Save ryanhanks-wf/03fc2d65af510cd95410 to your computer and use it in GitHub Desktop.
Dart unit test scratch
import 'package:unittest/unittest.dart';
var binderRequestResponseResults = {"status": 200, "reason": "OK", "messages": [], "result": {"latestrevision": "Qm9va1JldmlzaW9uHkJvb2tSZXZpc2lvbjpiODY0Y2Y5YWNhY2M0YWZiYWVhZTVlZmRjYzM0OTMyNg", "rootid": "f06d665cc6aa4e758225f2208a2c00ec", "name": "Jeff's Binder of Wonders Test", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "lastmodified": "20141120T160223+0000", "createdate": "20141006T202219+0000", "createdby": "Jeff Scaturro", "owner": true, "islocked": false, "lastpublished": "20141120T160220+0000", "dirty": false, "key": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "treeversion": 48, "isarchived": false, "intrash": false}}["result"];
var tabsRequestResponseResults = {"status": 200, "reason": "OK", "messages": [], "results": [{"status": null, "lastmodified": "20141006T202252+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "key": "Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "id": "a489196e1d5947f1a5cbf8efb6a94849", "keyname": "BookTab:a489196e1d5947f1a5cbf8efb6a94849", "name": "How Big is Our Universe?", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "f06d665cc6aa4e758225f2208a2c00ec"}, {"status": "", "lastmodified": "20141120T160220+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "key": "Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "id": "98b030edb2d44dcc9e48fd12133024e1", "keyname": "BookTab:98b030edb2d44dcc9e48fd12133024e1", "name": "Programming With Objective C", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "a489196e1d5947f1a5cbf8efb6a94849"}, {"status": null, "lastmodified": "20141006T202252+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "key": "Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "id": "628ab5a735d84bf69167058bd5a09730", "keyname": "BookTab:628ab5a735d84bf69167058bd5a09730", "name": "Mary Anning", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "98b030edb2d44dcc9e48fd12133024e1"}]}["results"];
var sectionsRequestResponseResults = {"status": 200, "reason": "OK", "messages": [], "results": [{"status": null, "lastmodified": "20141006T202252+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "key": "Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "id": "a489196e1d5947f1a5cbf8efb6a94849", "keyname": "BookTab:a489196e1d5947f1a5cbf8efb6a94849", "name": "How Big is Our Universe?", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOmE0ODkxOTZlMWQ1OTQ3ZjFhNWNiZjhlZmI2YTk0ODQ5", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "f06d665cc6aa4e758225f2208a2c00ec"}, {"status": "", "lastmodified": "20141120T160220+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "key": "Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "id": "98b030edb2d44dcc9e48fd12133024e1", "keyname": "BookTab:98b030edb2d44dcc9e48fd12133024e1", "name": "Programming With Objective C", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOjk4YjAzMGVkYjJkNDRkY2M5ZTQ4ZmQxMjEzMzAyNGUx", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "a489196e1d5947f1a5cbf8efb6a94849"}, {"status": null, "lastmodified": "20141006T202252+0000", "createdate": "20141006T202252+0000", "treeversion": 48, "published_from_key": "Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "key": "Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "id": "628ab5a735d84bf69167058bd5a09730", "keyname": "BookTab:628ab5a735d84bf69167058bd5a09730", "name": "Mary Anning", "url": "https://wf-books-stage.appspot.com/api/v1/books/Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz/tabs/Qm9va1RhYh5Cb29rVGFiOjYyOGFiNWE3MzVkODRiZjY5MTY3MDU4YmQ1YTA5NzMw", "tabType": "tab_content", "childIds": [], "bookKey": "Qm9vax5Cb29rOmVhOGEyZmNlMzBkYzQ0MWNhMjVhMmJlMTA5ZmRhYzUz", "createdby": "Jeff Scaturro", "parentId": "f06d665cc6aa4e758225f2208a2c00ec", "toc": null, "afterId": "98b030edb2d44dcc9e48fd12133024e1"}]}["results"];
class Binder {
String name;
List<Tab> tabs;
}
class Tab {
List<Section> sections;
List<Tab> tabs;
String id;
}
class Section {
String id;
String contentType;
}
buildBinder() {
Binder binder = new Binder();
Map tabIndex = {};
Map sectionIndex = {};
tabs.each((tab) {
});
return binder;
}
void main() {
test('Data Flow', () {
});
}
import 'package:unittest/unittest.dart';
class Dispatcher {
List storeCallbacks = [];
registerStoreCallback(callback){
storeCallbacks.add(callback);
}
dispatch(payload) {
storeCallbacks.forEach((callback) => callback(payload));
}
}
class Store {
List handlers = [];
Store(Dispatcher dispatcher) {
dispatcher.registerStoreCallback(handleAction);
}
addChangeHandler(handler) {
handlers.add(handler);
}
_emitChange() {
handlers.forEach((handler) => handler());
}
}
class BinderStore extends Store {
Map binder = {};
BinderStore(Dispatcher dispatcher) : super(dispatcher);
handleAction(payload) {
switch (payload["action"]) {
case 'load-complete':
super._emitChange();
break;
case 'update-binder-name':
binder["name"] = payload["data"]["new-name"];
super._emitChange();
break;
case 'remove-document-from-tab':
break;
}
}
}
void main() {
test('Data Flow', () {
Dispatcher dispatcher = new Dispatcher();
Store store = new BinderStore(dispatcher);
var binder;
store.addChangeHandler(() => binder = store.binder);
dispatcher.dispatch({"action": "update-binder-name", "data": {"new-name": "binder 1"}});
expect(binder["name"], "binder 1");
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment