{"action":"created","issue":{"url":"https://api.github.com/repos/mootools/mootools-core/issues/2734","labels_url":"https://api.github.com/repos/mootools/mootools-core/issues/2734/labels{/name}","comments_url":"https://api.github.com/repos/mootools/mootools-core/issues/2734/comments","events_url":"https://api.github.com/repos/mootools/mootools-core/issues/2734/events","html_url":"https://github.com/mootools/mootools-core/issues/2734","id":107967906,"number":2734,"title":"Spec update","user":{"login":"timwienk","id":150598,"avatar_url":"https://avatars.githubusercontent.com/u/150598?v=3","gravatar_id":"","url":"https://api.github.com/users/timwienk","html_url":"https://github.com/timwienk","followers_url":"https://api.github.com/users/timwienk/followers","following_url":"https://api.github.com/users/timwienk/following{/other_user}","gists_url":"https://api.github.com/users/timwienk/gists{/gist_id}","starred_url":"https://api.github.com/users/timwienk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timwienk/subscriptions","organizations_url":"https://api.github.com/users/timwienk/orgs","repos_url":"https://api.github.com/users/timwienk/repos","events_url":"https://api.github.com/users/timwienk/events{/privacy}","received_events_url":"https://api.github.com/users/timwienk/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/mootools/mootools-core/labels/specs","name":"specs","color":"DDDDDD"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":10,"created_at":"2015-09-23T17:29:25Z","updated_at":"2015-09-27T12:17:39Z","closed_at":null,"body":"I decided to update our specs a bit, for a number of reasons:\r\n  1. I noticed that we use two incompatible versions of Jasmine within Core (1.3 and 2.3),\r\n  2. The server specs seemed a bit incomplete,\r\n  3. Mocha seems to be the most popular one nowadays, so for interoperability (say we want to include third party specs, or someone else wants to include Moo specs) this seems the most flexible.\r\n\r\nWhen I started doing this, I didn't know how much work it'd be, and luckily it wasn't too bad. The problem is, though, that it'll look like a lot and it'll be a hell to review because of the sheer number of changes.\r\n\r\nTo be able to review it I split it up in parts, and I would like to suggest to review it by part, we could even merge it in by part. I didn't create Pull Requests, because every next Pull Request would include the changes from the previous Pull Request since they're not merged at this point. When reviewed, I guess they could be merged in, and I could actually create a Pull Request for every next one to make that easier.\r\n\r\nSo, the parts:\r\n- **[part 1][spec-update-part-1]**: Improvements to three specs I ran into. `$$` spec actually turned out to be broken after adding actual elements to select.\r\n- **[part 2][spec-update-part-2]**: A little housekeeping and updating of package.json, server tests and .travis.yml.\r\n- **[part 3][spec-update-part-3]**: First \"big\" change, removed `Tests/Utilities` and included `syn` and `sinon` packages instead, added `Tests/Plugins/syn` to use `syn` in karma. Last commit re-adds a local version of `syn` (hopefully temporarily).\r\n- **[part 4][spec-update-part-4]**: Update everything to Jasmine to 2.3, major changes: spy API and async API. Instead of using the new Jasmine spy API, I changed these to sinon spies. The new async API is very similar to the mocha async API.\r\n- **[part 5][spec-update-part-5]**: Changed the server specs to be able to test more than just Core/*.js files (which were actually included 5 times).\r\n- **[part 6][spec-update-part-6]**: First commit: replacement of Jasmine assertions with Chai assertions. Second commit: replacement of Chai with expect.js. Third commit: replacement of Jasmine with Mocha.\r\n\r\nAt the point of any of these commit the specs should still run fine and turn all green, I made the changes step-by-step to not accidentally change behaviours. (In fact, if we want to stick with Jasmine, we could decide to stop after **part 5**, or even after the expect.js commit of **part 6**.) The only exception to this is the Chai commit of **part 6**, everything runs fine, but Chai doesn't support IE older than 9, keeping the commit for history and reasoning, though.\r\n\r\nIn case it's easier (it probably is), I should be in IRC most of the time for comments or anything related.\r\n\r\nNote for later:\r\nThere are some things I didn't touch, like the test \"bootstrapping\". I think after these changes, it might be a good idea to look at the `Gruntfile.js` and files in the `Tests` directory. It looks like these things could be restructured to be easier to understand.\r\n\r\n[spec-update-part-1]: https://github.com/timwienk/mootools-core/compare/master...spec-update-part-1\r\n[spec-update-part-2]: https://github.com/timwienk/mootools-core/compare/spec-update-part-1...spec-update-part-2\r\n[spec-update-part-3]: https://github.com/timwienk/mootools-core/compare/spec-update-part-2...spec-update-part-3\r\n[spec-update-part-4]: https://github.com/timwienk/mootools-core/compare/spec-update-part-3...spec-update-part-4\r\n[spec-update-part-5]: https://github.com/timwienk/mootools-core/compare/spec-update-part-4...spec-update-part-5\r\n[spec-update-part-6]: https://github.com/timwienk/mootools-core/compare/spec-update-part-5...spec-update-part-6\r\n\r\n<bountysource-plugin>\r\n---\r\nWant to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/26901992-spec-update?utm_campaign=plugin&utm_content=tracker%2F22067&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F22067&utm_medium=issues&utm_source=github).\r\n</bountysource-plugin>"},"comment":{"url":"https://api.github.com/repos/mootools/mootools-core/issues/comments/143546278","html_url":"https://github.com/mootools/mootools-core/issues/2734#issuecomment-143546278","issue_url":"https://api.github.com/repos/mootools/mootools-core/issues/2734","id":143546278,"user":{"login":"timwienk","id":150598,"avatar_url":"https://avatars.githubusercontent.com/u/150598?v=3","gravatar_id":"","url":"https://api.github.com/users/timwienk","html_url":"https://github.com/timwienk","followers_url":"https://api.github.com/users/timwienk/followers","following_url":"https://api.github.com/users/timwienk/following{/other_user}","gists_url":"https://api.github.com/users/timwienk/gists{/gist_id}","starred_url":"https://api.github.com/users/timwienk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timwienk/subscriptions","organizations_url":"https://api.github.com/users/timwienk/orgs","repos_url":"https://api.github.com/users/timwienk/repos","events_url":"https://api.github.com/users/timwienk/events{/privacy}","received_events_url":"https://api.github.com/users/timwienk/received_events","type":"User","site_admin":false},"created_at":"2015-09-27T12:17:39Z","updated_at":"2015-09-27T12:17:39Z","body":"> @arian:\r\n> Add node_js 4 here as well?\r\n>\r\n> Never mind, it's already included in the other matrix.\r\n\r\nYes, what I changed in `.travis.yml` is: instead of adding the multiple node_js versions when building the matrix, only one is used for that, and the non-current versions are \"manually\" included after the matrix is built. That way we don't have 75 runs of which 48 actually do nothing.\r\n\r\n> @arian:\r\n> However if you use version `4`, will it automatically use the latest 4.x version? As they are using proper semver now, all 4.x versions should automatically work.\r\n\r\nThat's a good point, I'll change that and hopefully they indeed don't break within the major version. :-D **[fixed]**\r\n\r\nhttps://travis-ci.org/timwienk/mootools-core/builds/82406894"}}