gitlabhq/gitlabhq — pull request #5212 by doublerebel (2013-09-28 20:43:29+00:00)
Title: Expose merge_request.closed, .merged, merge_request/:id/commits to API

Hello,

This is a more complete version of PR #2179 I submitted earlier this year. It exposes a few attributes of MergeRequest which are needed for "pretty" PR merging, as with [jresig/pulley](https://github.com/jresig/pulley), creating [pulley-gitlab](https://github.com/doublerebel/pulley-gitlab).

I have rebased the PR against master branch and added RSpec tests for the new features.

Although I learned a ton about RoR while adding this feature, I am stumped by the 2nd test. It fails with:

```rb
Failure/Error: get api("/projects/#{project.id}/merge_request/#{merge_request.id}/commits", user)
ActionController::RoutingError:
No route matches [GET] "/api/v3/projects/785/merge_request/395/commits"
```
I have written a rake task helper to show me the API routes:

*lib/task/gitlab/api_routes.rake*
```rb
desc "API Routes"
task api_routes: :environment do
API::API.routes.each do |api|
method = api.route_method.ljust(10)
path = api.route_path
puts " #{method} #{path}"
end
end
```

Which shows me that my new route does exist in the test environment:

$ sudo -u git -H bundle exec rake api_routes RAILS_ENV=test
...
GET /:version/projects/:id/merge_request/:merge_request_id/commits(.:format)
...

Does GitLab cache routes? Have I implemented the test incorrectly? I have pored over the sources and tried other solutions to no avail.

Many thanks for GitLab! I am happy to continue work on this PR and appreciate any help or hints from the community.

Best,

Charles