{ "id": "86787", "key": "TIMOB-7749", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "12097", "description": "", "name": "Sprint 2012-05", "archived": true, "released": true, "releaseDate": "2012-03-11" }, { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-02-29T09:07:24.000+0000", "created": "2012-02-21T18:08:18.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "drillbit", "feature", "tooling" ], "versions": [], "issuelinks": [ { "id": "15425", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "86860", "key": "MOD-502", "fields": { "summary": "Cloud Module Integration with TiSDK", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "updated": "2012-03-19T06:23:06.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10204", "name": "Drillbit" } ], "description": "It would be nice to be able to define a sequence of asynchronous functions that should be executed as part of a single test. For example,\r\n1. Login to a service and verify result (asynchronously)\r\n2. Query data and verify result (asynchronously)\r\n3. Update data and verify result (asynchronously)\r\n4. Logout of service and verify result (asynchronously)\r\n\r\nThis is especially important for validating REST-based services. While this could be done by putting each step into a separate test, it would be good to be able to define these in-line in a single test to avoid issues that could occur if a developer inserted or moved tests around in the test file.", "attachment": [], "flagged": false, "summary": "Drillbit: Add support for creating a sequence of asynchronous operations in a test", "creator": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "subtasks": [], "reporter": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "environment": null, "comment": { "comments": [ { "id": "183902", "author": { "name": "jenglish", "key": "jenglish", "displayName": "Jeff English", "active": true, "timeZone": "America/Chicago" }, "body": "Example of utilizing this functionality:\r\n\r\n{code}\r\n // Cloud.Objects.remove\r\n deleteAllCars: asyncTest({\r\n start: function(callback) {\r\n\t\t\tvar carIds = [];\r\n\t\t\tthis.sequence.push(function() { Cloud.Objects.query('cars',\r\n\t\t\t\tthis.async(function(e) {\r\n\t\t\t\t\tvalueOf(e.success).shouldBeTrue();\r\n\t\t\t\t\tvalueOf(e.error).shouldBeFalse();\r\n\t\t\t\t\tfor (var i=0; i