{"push_id":1177860987,"size":20,"distinct_size":20,"ref":"refs/heads/master","head":"026aefff6a8309cf8aca22000945d0258c969597","before":"fb8114fcd6acf5d9550ee37462a85649d6773e79","commits":[{"sha":"b3498db6b8ccacf949ab8f250e2519ab0160894e","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add readme and license","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/b3498db6b8ccacf949ab8f250e2519ab0160894e"},{"sha":"cdb97d0e6a8ab592173818322d43ad67160f6da5","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Install Mocha and Mirage for testing","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/cdb97d0e6a8ab592173818322d43ad67160f6da5"},{"sha":"308948c766f3885210ac1d770f93cea214082e83","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Specify the feature for creating a blog post\n\nRed: The URL '/posts/new' did not match any routes in your application\n\nWe set up the entire acceptance test at once. This test will guide us through the rest of the unit testing and implementation of the feature.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/308948c766f3885210ac1d770f93cea214082e83"},{"sha":"5c6f47a191d59d0abc139c9fde88c9a373690677","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add new blog post route\n\nRed: Element .post-title-input not found.\n\nWe only change enough code to get to the next error message. Getting past the \"no route\" error only requires creating the route in the routes file.\n\nThe next error is simple: no `.post-title-input` field is found to fill text into.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/5c6f47a191d59d0abc139c9fde88c9a373690677"},{"sha":"d90f3b24b153e0bcf1fed598d9fe5f5829020633","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add form component and unit test\n\nInner red: expected 0 to equal 1\n\nRather than just getting the test to pass by putting a form input on the route's template, we \"write the code we wish we had.\" In this case, we wish we had a `post-form` component to use that would provide the input for us.\n\nWe create the component, then create a unit tests for it that reproduce the acceptance test error. The default error message isn't the same because the Ember component tests use a different framework than acceptance tests, so we write a custom error message to match more closely.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/d90f3b24b153e0bcf1fed598d9fe5f5829020633"},{"sha":"bc135abd7bf5d586853fe11cf0eae8c65c1791ec","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add form component markup\n\nInner green; outer test hangs after submitting form\n\nNow that we're rendering markup for the component, its unit test is able to find the title field and fill it in. The acceptance test also gets past the point of filling in the title, and now it hangs after clicking the save button. I'm not sure why, but I think it has to do with the fact that, since that form isn't wired up to any Ember behavior, the form is actually submitted in the browser, which closes down the Ember app. In any case, we need to get Ember handling the form submission.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/bc135abd7bf5d586853fe11cf0eae8c65c1791ec"},{"sha":"b0617b0b4b39c6f6f87a6d62a74dd981a68f5e55","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Specify the component should call the save action\n\nInner test hangs after submitting form\n\nWe reproduce the acceptance test error at the component level, which is unfortunately that the test hangs.\n\nIn order to get clear test output from the component test, we temporarily disable the acceptance test so it's only the component test causing the suite to hang.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/b0617b0b4b39c6f6f87a6d62a74dd981a68f5e55"},{"sha":"f5998e172a1164a524023a1adc7af32a0c1c1742","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Call save handler from post form\n\nOuter red: undefined is not a constructor (evaluating 'this.get('save')()')\n\nWe make the component test pass by setting the form to run the `save` action upon submit, and the `save` action of the component to run the passed-in `save` action closure.\n\nWe also re-enable the acceptance test, and confirm that it's no longer hanging. Now it errors out because we aren't passing a save action closure into the component.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/f5998e172a1164a524023a1adc7af32a0c1c1742"},{"sha":"f4d71c35ea4a2281f7bab98c7d5a8d960bfc2118","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add new post controller for save action\n\nOuter red: The route posts.show was not found\n\nWe implement a save handler by adding a new post controller to put it in, adding the handler, then passing it into the form component. Now the acceptance test successfully attempts to transition to the `posts.show` route, but it doesn't yet exist.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/f4d71c35ea4a2281f7bab98c7d5a8d960bfc2118"},{"sha":"804e3e37cfd371091d6fb82b01d89bf0ab86a59c","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add posts.show route\n\nOuter red: expected '' to equal 'Test Post'\n\nNow the acceptance test is able to display the `posts.show` route, but it can't find the post's title on the page, because we aren't rendering anything to the screen yet.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/804e3e37cfd371091d6fb82b01d89bf0ab86a59c"},{"sha":"628661bbf0d84753bb58d84b5bb4a2b20a92dc17","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add detail component and unit test\n\nInner red: expected '' to equal 'Test Title'\n\nAgain, instead of making the acceptance test pass as quickly as possible, we \"write the code we wish we had\": a post display component. We create it and add a component test that reproduces the acceptance test error; we specify that the component displays the post's title.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/628661bbf0d84753bb58d84b5bb4a2b20a92dc17"},{"sha":"ef273a1308ffa24e67d70a5abc7a608173142b78","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add post detail display markup\n\nInner green; outer red: expected '' to equal 'Test Post'\n\nWe make the component test pass by adding markup to display the post, but the acceptance test still has the same error, because we aren't passing the model into the component.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/ef273a1308ffa24e67d70a5abc7a608173142b78"},{"sha":"ec3848caddd9c5bb5704f26e8532ae5b48189020","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Hook routes into post model\n\nOuter red: No model was found for 'post'\n\nThis acceptance test error drives a lot of logic: to display the post's title on the show page, we need to save the post on the new page, include the ID in the transition to the show route, then load the post on the show page's model hook.\n\nWith this logic added, the acceptance test errors out quickly: there _is_ no `post` model.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/ec3848caddd9c5bb5704f26e8532ae5b48189020"},{"sha":"d35dcc33077863457e5c47da6926343bf04d6768","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add post model\n\nOuter red: Your Ember app tried to POST '/posts', but there was no route defined to handle this request. Define a route that matches this path in your mirage/config.js file.\n\nWe add the Ember Data `post` model, and next we get an error from Mirage, our fake server. It needs a corresponding post creation endpoint created.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/d35dcc33077863457e5c47da6926343bf04d6768"},{"sha":"02cfafacc112b90a9108338aab89133e4a60af49","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add mirage create post route\n\nOuter red: Pretender intercepted POST /posts but encountered an error: Mirage: The route handler for /posts is trying to access the post model, but that model doesn't exist. Create it using 'ember g mirage-model post'.\n\nNow that Mirage has an endpoint, it returns another error: a Mirage model for `post` needs to be added too.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/02cfafacc112b90a9108338aab89133e4a60af49"},{"sha":"493bf0d01c9f81868fe397810cad10ebed153841","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add mirage model\n\nOuter red: Pretender intercepted POST /posts but encountered an error: Mirage: You're using a shorthand or #normalizedRequestAttrs, but your serializer's normalize function did not return a valid JSON:API document. http://www.ember-cli-mirage.com/docs/v0.2.0-beta.9/serializers/#normalizejson\n\nWhen we add the Mirage `post` model, the next error is pretty obscure. What's happening is that no attributes are being sent in the create request, and Mirage is erroring out right away. We do want the `title` attribute to be sent, so this is a valid error situation.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/493bf0d01c9f81868fe397810cad10ebed153841"},{"sha":"846bfe0fea06c775996c992e075a986ca4c0a002","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Specify the form data shound be sent to save action\n\nInner red: undefined is not an object (evaluating 'post.title')\n\nThis is another case where we're reproducing the acceptance test situation, if not the actual error message. We specify that the post form component should pass the data for the model to the save action closure. We check that a title field comes back on that object, but since no value comes back at all, we get an error that it's not an object.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/846bfe0fea06c775996c992e075a986ca4c0a002"},{"sha":"560d9b300f9a174632341727e9d0c700bf2cde41","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Send post form data to save action\n\nInner green; outer red: Pretender intercepted POST /posts but encountered an error: Mirage: You're using a shorthand or #normalizedRequestAttrs, but your serializer's normalize function did not return a valid JSON:API document. http://www.ember-cli-mirage.com/docs/v0.2.0-beta.9/serializers/#normalizejson\n\nWe get the component test to pass by making the input an Ember input helper, retrieving the saved value in it, and sending that in an object to the `save` action closure.\n\nNow the acceptance test still gives the same error, and in this case the tests aren't that helpful to guide us to why. What's going on is that the Ember Data `post` model doesn't have a title field, so it isn't saved and retrieved by the show page.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/560d9b300f9a174632341727e9d0c700bf2cde41"},{"sha":"955aced8a41c9548ab35aba21d7d4c207d05f5af","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add title field to post model\n\nOuter red: Your Ember app tried to GET '/posts/1', but there was no route defined to handle this request. Define a route that matches this path in your mirage/config.js file.\n\nWe add the title field to the post model, so now it's saved by the new page. The next error is in Mirage again: we now get to the post show page, but Mirage isn't configured to retrieve a post by ID.","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/955aced8a41c9548ab35aba21d7d4c207d05f5af"},{"sha":"026aefff6a8309cf8aca22000945d0258c969597","author":{"name":"Josh Justice","email":"724c111a9d4c7ff3c198df98af17dc9ef9dcefc3@bignerdranch.com"},"message":"Add mirage get post route\n\nOuter green\n\nWe configure Mirage to return a post retrieved by ID, and the acceptance test passes. We've successfully let our acceptance test drive out the behavior of this feature!","distinct":true,"url":"https://api.github.com/repos/learn-tdd-in/ember/commits/026aefff6a8309cf8aca22000945d0258c969597"}]}
{"actor":{"display_login":"CodingItWrong"}}