{"action":"created","issue":{"url":"https://api.github.com/repos/hyperoslo/Spots/issues/584","repository_url":"https://api.github.com/repos/hyperoslo/Spots","labels_url":"https://api.github.com/repos/hyperoslo/Spots/issues/584/labels{/name}","comments_url":"https://api.github.com/repos/hyperoslo/Spots/issues/584/comments","events_url":"https://api.github.com/repos/hyperoslo/Spots/issues/584/events","html_url":"https://github.com/hyperoslo/Spots/pull/584","id":221998718,"number":584,"title":"Feature SpotsControllerManager","user":{"login":"zenangst","id":57446,"avatar_url":"https://avatars2.githubusercontent.com/u/57446?v=3","gravatar_id":"","url":"https://api.github.com/users/zenangst","html_url":"https://github.com/zenangst","followers_url":"https://api.github.com/users/zenangst/followers","following_url":"https://api.github.com/users/zenangst/following{/other_user}","gists_url":"https://api.github.com/users/zenangst/gists{/gist_id}","starred_url":"https://api.github.com/users/zenangst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zenangst/subscriptions","organizations_url":"https://api.github.com/users/zenangst/orgs","repos_url":"https://api.github.com/users/zenangst/repos","events_url":"https://api.github.com/users/zenangst/events{/privacy}","received_events_url":"https://api.github.com/users/zenangst/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2017-04-16T08:39:47Z","updated_at":"2017-04-16T08:43:58Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/hyperoslo/Spots/pulls/584","html_url":"https://github.com/hyperoslo/Spots/pull/584","diff_url":"https://github.com/hyperoslo/Spots/pull/584.diff","patch_url":"https://github.com/hyperoslo/Spots/pull/584.patch"},"body":"This PR follows the same principal as #583. But this time it takes the protocol extension `SpotProtocol+Mutation` and moves that into a separate class called `SpotsControllerManager`.\r\nIt is in charge of handling mutation on a controller level, such as reloading the controller with a\r\ncollection of components. `SpotsProtocol+Mutation` is now `SpotsController+Extensions`. It is\r\nthere to not change the public API for when working with the controller. It just relays the function\r\ncall to the manager so that it can do its job properly.\r\n\r\nThis is big as it adds a lot of new tests for `SpotsControllerManager`, other than that it is a about\r\ncopy pasting code from the old protocol extension to the new class. Same functionality but\r\nmove into a different class.\r\n\r\nOne odd thing is that I had to move one of the tests from SpotsController into SpotsControllerManager. It would break because it got confused by which method called the fulfill on the expectation.\r\nMoving the test from one test case to another fixed the issue."},"comment":{"url":"https://api.github.com/repos/hyperoslo/Spots/issues/comments/294340735","html_url":"https://github.com/hyperoslo/Spots/pull/584#issuecomment-294340735","issue_url":"https://api.github.com/repos/hyperoslo/Spots/issues/584","id":294340735,"user":{"login":"Hyperseed","id":15379509,"avatar_url":"https://avatars1.githubusercontent.com/u/15379509?v=3","gravatar_id":"","url":"https://api.github.com/users/Hyperseed","html_url":"https://github.com/Hyperseed","followers_url":"https://api.github.com/users/Hyperseed/followers","following_url":"https://api.github.com/users/Hyperseed/following{/other_user}","gists_url":"https://api.github.com/users/Hyperseed/gists{/gist_id}","starred_url":"https://api.github.com/users/Hyperseed/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hyperseed/subscriptions","organizations_url":"https://api.github.com/users/Hyperseed/orgs","repos_url":"https://api.github.com/users/Hyperseed/repos","events_url":"https://api.github.com/users/Hyperseed/events{/privacy}","received_events_url":"https://api.github.com/users/Hyperseed/received_events","type":"User","site_admin":false},"created_at":"2017-04-16T08:43:58Z","updated_at":"2017-04-16T08:43:58Z","body":"<!--\n  0 Errors\n  1 Warning: Big PR\n  0 Messages\n  0 Markdowns\n-->\n<table>\n  <thead>\n    <tr>\n      <th width=\"50\"></th>\n      <th width=\"100%\" data-danger-table=\"true\" data-kind=\"Warning\">\n          1 Warning\n      </th>\n     </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <td>:warning:</td>\n      <td data-sticky=\"false\">Big PR</td>\n    </tr>\n  </tbody>\n</table>\n\n<p align=\"right\" data-meta=\"generated_by_danger\">\n  Generated by :no_entry_sign: <a href=\"http://danger.systems/\">Danger</a>\n</p>\n"}}
{"actor":{"display_login":"Hyperseed"}}