Created
November 21, 2014 13:25
-
-
Save ryanhanks-wf/03fc2d65af510cd95410 to your computer and use it in GitHub Desktop.
Dart unit test scratch
This file contains hidden or 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
| 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