github_api 0.8.3 → 0.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/features/cassettes/issues/labels/create.yml +54 -0
- data/features/cassettes/issues/labels/delete.yml +46 -0
- data/features/cassettes/issues/labels/get.yml +63 -0
- data/features/cassettes/issues/labels/list_issue.yml +64 -0
- data/features/cassettes/issues/labels/list_milestone.yml +65 -0
- data/features/cassettes/issues/labels/update.yml +52 -0
- data/features/issues/labels.feature +71 -0
- data/features/issues/milestones.feature +3 -3
- data/features/step_definitions/common_steps.rb +5 -0
- data/features/support/vcr.rb +1 -1
- data/lib/github_api/issues.rb +5 -4
- data/lib/github_api/issues/labels.rb +35 -47
- data/lib/github_api/version.rb +1 -1
- data/spec/github/issues/labels/add_spec.rb +50 -0
- data/spec/github/issues/labels/create_spec.rb +59 -0
- data/spec/github/issues/labels/delete_spec.rb +39 -0
- data/spec/github/issues/labels/get_spec.rb +47 -0
- data/spec/github/issues/labels/list_spec.rb +100 -0
- data/spec/github/issues/labels/update_spec.rb +61 -0
- data/spec/github/issues/labels_spec.rb +0 -410
- metadata +44 -32
| @@ -6,6 +6,11 @@ When /^(.*) within a cassette named "([^"]*)"$/ do |step_to_call, cassette_name| | |
| 6 6 | 
             
              VCR.use_cassette(cassette_name) { step step_to_call }
         | 
| 7 7 | 
             
            end
         | 
| 8 8 |  | 
| 9 | 
            +
            When /^(.*) within a cassette named "([^"]*)" and match on (.*)$/ do |step_to_call, cassette_name, matchers|
         | 
| 10 | 
            +
              matches = matchers.split(',').map { |m| m.gsub(/\s*/,'') }.map(&:to_sym)
         | 
| 11 | 
            +
              VCR.use_cassette(cassette_name, :match_requests_on => matches) { step step_to_call }
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 9 14 | 
             
            Then /^the response should equal (.*)$/ do |expected_response|
         | 
| 10 15 | 
             
              expected = case expected_response
         | 
| 11 16 | 
             
              when /t/
         | 
    
        data/features/support/vcr.rb
    CHANGED
    
    | @@ -3,7 +3,7 @@ require 'vcr' | |
| 3 3 | 
             
            VCR.configure do |conf|
         | 
| 4 4 | 
             
              conf.hook_into :webmock
         | 
| 5 5 | 
             
              conf.cassette_library_dir = 'features/cassettes'
         | 
| 6 | 
            -
              conf.default_cassette_options = { :record => : | 
| 6 | 
            +
              conf.default_cassette_options = { :record => :once }
         | 
| 7 7 | 
             
              conf.filter_sensitive_data('<EMAIL>') { SETTINGS['email'] }
         | 
| 8 8 | 
             
              conf.filter_sensitive_data('<TOKEN>') { SETTINGS['oauth_token'] }
         | 
| 9 9 | 
             
              conf.filter_sensitive_data('<BASIC_AUTH>') { SETTINGS['basic_auth'] }
         | 
    
        data/lib/github_api/issues.rb
    CHANGED
    
    | @@ -29,7 +29,7 @@ module Github | |
| 29 29 | 
             
                ].freeze
         | 
| 30 30 |  | 
| 31 31 | 
             
                VALID_ISSUE_PARAM_VALUES = {
         | 
| 32 | 
            -
                  'filter'    => %w[ assigned created mentioned subscribed ],
         | 
| 32 | 
            +
                  'filter'    => %w[ assigned created mentioned subscribed all ],
         | 
| 33 33 | 
             
                  'state'     => %w[ open closed ],
         | 
| 34 34 | 
             
                  'sort'      => %w[ created updated comments ],
         | 
| 35 35 | 
             
                  'direction' => %w[ desc asc ],
         | 
| @@ -98,9 +98,10 @@ module Github | |
| 98 98 | 
             
                # = Parameters
         | 
| 99 99 | 
             
                # <tt>:filter</tt>
         | 
| 100 100 | 
             
                #  * <tt>assigned</tt>   Issues assigned to you (default)
         | 
| 101 | 
            -
                #  * <tt>created</tt>    Issues  | 
| 102 | 
            -
                #  * <tt>mentioned</tt>  Issues  | 
| 103 | 
            -
                #  * <tt>subscribed</tt> Issues  | 
| 101 | 
            +
                #  * <tt>created</tt>    Issues created by you 
         | 
| 102 | 
            +
                #  * <tt>mentioned</tt>  Issues mentioning you 
         | 
| 103 | 
            +
                #  * <tt>subscribed</tt> Issues you've subscribed to updates for 
         | 
| 104 | 
            +
                #  * <tt>all</tt>        All issues the user can see 
         | 
| 104 105 | 
             
                # <tt>:milestone</tt>
         | 
| 105 106 | 
             
                #  * Integer Milestone number
         | 
| 106 107 | 
             
                #  * <tt>none</tt> for Issues with no Milestone.
         | 
| @@ -17,12 +17,30 @@ module Github | |
| 17 17 | 
             
                #  github.issues.labels.list
         | 
| 18 18 | 
             
                #  github.issues.labels.list { |label| ... }
         | 
| 19 19 | 
             
                #
         | 
| 20 | 
            +
                # Get labels for every issue in a milestone
         | 
| 21 | 
            +
                #
         | 
| 22 | 
            +
                # = Examples
         | 
| 23 | 
            +
                #  github = Github.new
         | 
| 24 | 
            +
                #  github.issues.labels.list 'user-name', 'repo-name', milestone_id: 'milestone-id'
         | 
| 25 | 
            +
                #
         | 
| 26 | 
            +
                # List labels on an issue
         | 
| 27 | 
            +
                #
         | 
| 28 | 
            +
                # = Examples
         | 
| 29 | 
            +
                #  @github = Github.new
         | 
| 30 | 
            +
                #  @github.issues.labels.list 'user-name', 'repo-name', issue_id: 'issue-id'
         | 
| 31 | 
            +
                #
         | 
| 20 32 | 
             
                def list(user_name, repo_name, params={})
         | 
| 21 33 | 
             
                  set :user => user_name, :repo => repo_name
         | 
| 22 34 | 
             
                  assert_presence_of user, repo
         | 
| 23 35 | 
             
                  normalize! params
         | 
| 24 36 |  | 
| 25 | 
            -
                  response =  | 
| 37 | 
            +
                  response = if (milestone_id = params.delete('milestone_id'))
         | 
| 38 | 
            +
                    get_request("/repos/#{user}/#{repo}/milestones/#{milestone_id}/labels", params)
         | 
| 39 | 
            +
                  elsif (issue_id = params.delete('issue_id'))
         | 
| 40 | 
            +
                    get_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
         | 
| 41 | 
            +
                  else
         | 
| 42 | 
            +
                    get_request("/repos/#{user}/#{repo}/labels", params)
         | 
| 43 | 
            +
                  end
         | 
| 26 44 | 
             
                  return response unless block_given?
         | 
| 27 45 | 
             
                  response.each { |el| yield el }
         | 
| 28 46 | 
             
                end
         | 
| @@ -32,14 +50,14 @@ module Github | |
| 32 50 | 
             
                #
         | 
| 33 51 | 
             
                # = Examples
         | 
| 34 52 | 
             
                #  github = Github.new
         | 
| 35 | 
            -
                #  github.issues.labels.find 'user-name', 'repo-name', 'label- | 
| 53 | 
            +
                #  github.issues.labels.find 'user-name', 'repo-name', 'label-name'
         | 
| 36 54 | 
             
                #
         | 
| 37 | 
            -
                def get(user_name, repo_name,  | 
| 55 | 
            +
                def get(user_name, repo_name, label_name, params={})
         | 
| 38 56 | 
             
                  set :user => user_name, :repo => repo_name
         | 
| 39 | 
            -
                  assert_presence_of user, repo,  | 
| 57 | 
            +
                  assert_presence_of user, repo, label_name
         | 
| 40 58 | 
             
                  normalize! params
         | 
| 41 59 |  | 
| 42 | 
            -
                  get_request("/repos/#{user}/#{repo}/labels/#{ | 
| 60 | 
            +
                  get_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
         | 
| 43 61 | 
             
                end
         | 
| 44 62 | 
             
                alias :find :get
         | 
| 45 63 |  | 
| @@ -72,18 +90,18 @@ module Github | |
| 72 90 | 
             
                #
         | 
| 73 91 | 
             
                # = Examples
         | 
| 74 92 | 
             
                #  @github = Github.new
         | 
| 75 | 
            -
                #  @github.issues.labels.update 'user-name', 'repo-name', 'label- | 
| 93 | 
            +
                #  @github.issues.labels.update 'user-name', 'repo-name', 'label-name',
         | 
| 76 94 | 
             
                #    :name => 'API', :color => "FFFFFF"
         | 
| 77 95 | 
             
                #
         | 
| 78 | 
            -
                def update(user_name, repo_name,  | 
| 96 | 
            +
                def update(user_name, repo_name, label_name, params={})
         | 
| 79 97 | 
             
                  set :user => user_name, :repo => repo_name
         | 
| 80 | 
            -
                  assert_presence_of user, repo,  | 
| 98 | 
            +
                  assert_presence_of user, repo, label_name
         | 
| 81 99 |  | 
| 82 100 | 
             
                  normalize! params
         | 
| 83 101 | 
             
                  filter! VALID_LABEL_INPUTS, params
         | 
| 84 102 | 
             
                  assert_required_keys(VALID_LABEL_INPUTS, params)
         | 
| 85 103 |  | 
| 86 | 
            -
                  patch_request("/repos/#{user}/#{repo}/labels/#{ | 
| 104 | 
            +
                  patch_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
         | 
| 87 105 | 
             
                end
         | 
| 88 106 | 
             
                alias :edit :update
         | 
| 89 107 |  | 
| @@ -91,30 +109,16 @@ module Github | |
| 91 109 | 
             
                #
         | 
| 92 110 | 
             
                # = Examples
         | 
| 93 111 | 
             
                #  github = Github.new
         | 
| 94 | 
            -
                #  github.issues.labels.delete 'user-name', 'repo-name', 'label- | 
| 112 | 
            +
                #  github.issues.labels.delete 'user-name', 'repo-name', 'label-name'
         | 
| 95 113 | 
             
                #
         | 
| 96 | 
            -
                def delete(user_name, repo_name,  | 
| 114 | 
            +
                def delete(user_name, repo_name, label_name, params={})
         | 
| 97 115 | 
             
                  set :user => user_name, :repo => repo_name
         | 
| 98 116 | 
             
                  assert_presence_of user, repo
         | 
| 99 117 |  | 
| 100 | 
            -
                  assert_presence_of  | 
| 118 | 
            +
                  assert_presence_of label_name
         | 
| 101 119 | 
             
                  normalize! params
         | 
| 102 120 |  | 
| 103 | 
            -
                  delete_request("/repos/#{user}/#{repo}/labels/#{ | 
| 104 | 
            -
                end
         | 
| 105 | 
            -
             | 
| 106 | 
            -
                # List labels on an issue
         | 
| 107 | 
            -
                #
         | 
| 108 | 
            -
                # = Examples
         | 
| 109 | 
            -
                #  @github = Github.new
         | 
| 110 | 
            -
                #  @github.issues.labels.issue 'user-name', 'repo-name', 'issue-id'
         | 
| 111 | 
            -
                #
         | 
| 112 | 
            -
                def issue(user_name, repo_name, issue_id, params={})
         | 
| 113 | 
            -
                  set :user => user_name, :repo => repo_name
         | 
| 114 | 
            -
                  assert_presence_of user, repo, issue_id
         | 
| 115 | 
            -
                  normalize! params
         | 
| 116 | 
            -
             | 
| 117 | 
            -
                  get_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
         | 
| 121 | 
            +
                  delete_request("/repos/#{user}/#{repo}/labels/#{label_name}", params)
         | 
| 118 122 | 
             
                end
         | 
| 119 123 |  | 
| 120 124 | 
             
                # Add labels to an issue
         | 
| @@ -146,19 +150,19 @@ module Github | |
| 146 150 | 
             
                #  github = Github.new
         | 
| 147 151 | 
             
                #  github.issues.labels.remove 'user-name', 'repo-name', 'issue-id'
         | 
| 148 152 | 
             
                #
         | 
| 149 | 
            -
                def remove(user_name, repo_name, issue_id,  | 
| 153 | 
            +
                def remove(user_name, repo_name, issue_id, label_name=nil, params={})
         | 
| 150 154 | 
             
                  set :user => user_name, :repo => repo_name
         | 
| 151 155 | 
             
                  assert_presence_of user, repo, issue_id
         | 
| 152 156 | 
             
                  normalize! params
         | 
| 153 157 |  | 
| 154 | 
            -
                  if  | 
| 155 | 
            -
                    delete_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels/#{ | 
| 158 | 
            +
                  if label_name
         | 
| 159 | 
            +
                    delete_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels/#{label_name}", params)
         | 
| 156 160 | 
             
                  else
         | 
| 157 161 | 
             
                    delete_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
         | 
| 158 162 | 
             
                  end
         | 
| 159 163 | 
             
                end
         | 
| 160 164 |  | 
| 161 | 
            -
                # Replace all labels for an issue | 
| 165 | 
            +
                # Replace all labels for an issue
         | 
| 162 166 | 
             
                #
         | 
| 163 167 | 
             
                # Sending an empty array ([]) will remove all Labels from the Issue.
         | 
| 164 168 | 
             
                #
         | 
| @@ -177,21 +181,5 @@ module Github | |
| 177 181 | 
             
                  put_request("/repos/#{user}/#{repo}/issues/#{issue_id}/labels", params)
         | 
| 178 182 | 
             
                end
         | 
| 179 183 |  | 
| 180 | 
            -
                # Get labels for every issue in a milestone
         | 
| 181 | 
            -
                #
         | 
| 182 | 
            -
                # = Examples
         | 
| 183 | 
            -
                #  github = Github.new
         | 
| 184 | 
            -
                #  github.issues.labels. 'user-name', 'repo-name', 'milestone-id'
         | 
| 185 | 
            -
                #
         | 
| 186 | 
            -
                def milestone(user_name, repo_name, milestone_id, params={})
         | 
| 187 | 
            -
                  set :user => user_name, :repo => repo_name
         | 
| 188 | 
            -
                  assert_presence_of user, repo, milestone_id
         | 
| 189 | 
            -
                  normalize! params
         | 
| 190 | 
            -
             | 
| 191 | 
            -
                  response = get_request("/repos/#{user}/#{repo}/milestones/#{milestone_id}/labels", params)
         | 
| 192 | 
            -
                  return response unless block_given?
         | 
| 193 | 
            -
                  response.each { |el| yield el }
         | 
| 194 | 
            -
                end
         | 
| 195 | 
            -
             | 
| 196 184 | 
             
              end # Issues::Labels
         | 
| 197 185 | 
             
            end # Github
         | 
    
        data/lib/github_api/version.rb
    CHANGED
    
    
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Github::Issues::Labels, '#add' do
         | 
| 6 | 
            +
              let(:user)   { 'peter-murach' }
         | 
| 7 | 
            +
              let(:repo)   { 'github' }
         | 
| 8 | 
            +
              let(:request_path) { "/repos/#{user}/#{repo}/issues/#{issue_id}/labels" }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              before {
         | 
| 11 | 
            +
                stub_post(request_path).
         | 
| 12 | 
            +
                  to_return(:body => body, :status => status,
         | 
| 13 | 
            +
                  :headers => {:content_type => "application/json; charset=utf-8"})
         | 
| 14 | 
            +
              }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              after { reset_authentication_for(subject) }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              let(:issue_id) { 1 }
         | 
| 19 | 
            +
              let(:labels) { "Label 1" }
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              context "labels added" do
         | 
| 22 | 
            +
                let(:body) { fixture('issues/labels.json') }
         | 
| 23 | 
            +
                let(:status) { 200 }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                it "should fail to add labels if issue-id is missing" do
         | 
| 26 | 
            +
                  expect {
         | 
| 27 | 
            +
                    subject.add user, repo, nil, labels
         | 
| 28 | 
            +
                  }.to raise_error(ArgumentError)
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                it "should create resource successfully" do
         | 
| 32 | 
            +
                  subject.add user, repo, issue_id, labels
         | 
| 33 | 
            +
                  a_post(request_path).should have_been_made
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                it "should return the resource" do
         | 
| 37 | 
            +
                  labels = subject.add user, repo, issue_id, labels
         | 
| 38 | 
            +
                  labels.first.should be_a Hashie::Mash
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                it "should get the label information" do
         | 
| 42 | 
            +
                  labels = subject.add user, repo, issue_id, labels
         | 
| 43 | 
            +
                  labels.first.name.should == 'bug'
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it_should_behave_like 'request failure' do
         | 
| 48 | 
            +
                let(:requestable) { subject.add user, repo, issue_id, labels }
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
            end # add
         | 
| @@ -0,0 +1,59 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Github::Issues::Labels, '#create' do
         | 
| 6 | 
            +
              let(:user)   { 'peter-murach' }
         | 
| 7 | 
            +
              let(:repo)   { 'github' }
         | 
| 8 | 
            +
              let(:request_path) { "/repos/#{user}/#{repo}/labels" }
         | 
| 9 | 
            +
              let(:inputs) {
         | 
| 10 | 
            +
                {
         | 
| 11 | 
            +
                  "name" => "API",
         | 
| 12 | 
            +
                  "color" => "FFFFFF",
         | 
| 13 | 
            +
                }
         | 
| 14 | 
            +
              }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              before {
         | 
| 17 | 
            +
                stub_post(request_path).with(inputs).
         | 
| 18 | 
            +
                  to_return(:body => body, :status => status,
         | 
| 19 | 
            +
                  :headers => {:content_type => "application/json; charset=utf-8"})
         | 
| 20 | 
            +
              }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
              after { reset_authentication_for(subject) }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              context "resouce created" do
         | 
| 25 | 
            +
                let(:body) { fixture('issues/label.json') }
         | 
| 26 | 
            +
                let(:status) { 200 }
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                it "should fail to create resource if 'name' input is missing" do
         | 
| 29 | 
            +
                  expect {
         | 
| 30 | 
            +
                    subject.create user, repo, inputs.except('name')
         | 
| 31 | 
            +
                  }.to raise_error(Github::Error::RequiredParams)
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
                it "should fail to create resource if 'color' input is missing" do
         | 
| 35 | 
            +
                  expect {
         | 
| 36 | 
            +
                    subject.create user, repo, inputs.except('color')
         | 
| 37 | 
            +
                  }.to raise_error(Github::Error::RequiredParams)
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                it "should create resource successfully" do
         | 
| 41 | 
            +
                  subject.create user, repo, inputs
         | 
| 42 | 
            +
                  a_post(request_path).with(inputs).should have_been_made
         | 
| 43 | 
            +
                end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                it "should return the resource" do
         | 
| 46 | 
            +
                  label = subject.create user, repo, inputs
         | 
| 47 | 
            +
                  label.should be_a Hashie::Mash
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                it "should get the label information" do
         | 
| 51 | 
            +
                  label = subject.create user, repo, inputs
         | 
| 52 | 
            +
                  label.name.should == 'bug'
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
              it_should_behave_like 'request failure' do
         | 
| 57 | 
            +
                let(:requestable) { subject.create user, repo, inputs }
         | 
| 58 | 
            +
              end
         | 
| 59 | 
            +
            end # create
         | 
| @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Github::Issues::Labels, '#delete' do
         | 
| 6 | 
            +
              let(:user)   { 'peter-murach' }
         | 
| 7 | 
            +
              let(:repo)   { 'github' }
         | 
| 8 | 
            +
              let(:label_id) { 1 }
         | 
| 9 | 
            +
              let(:request_path) { "/repos/#{user}/#{repo}/labels/#{label_id}" }
         | 
| 10 | 
            +
              let(:inputs) {
         | 
| 11 | 
            +
                {
         | 
| 12 | 
            +
                  "name" => "API",
         | 
| 13 | 
            +
                  "color" => "FFFFFF",
         | 
| 14 | 
            +
                }
         | 
| 15 | 
            +
              }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              before {
         | 
| 18 | 
            +
                stub_delete(request_path).with(inputs).
         | 
| 19 | 
            +
                  to_return(:body => body, :status => status,
         | 
| 20 | 
            +
                  :headers => {:content_type => "application/json; charset=utf-8"})
         | 
| 21 | 
            +
              }
         | 
| 22 | 
            +
             | 
| 23 | 
            +
              after { reset_authentication_for(subject) }
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              context "resouce removed" do
         | 
| 26 | 
            +
                let(:body) { fixture('issues/label.json') }
         | 
| 27 | 
            +
                let(:status) { 204 }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                it "should remove resource successfully" do
         | 
| 30 | 
            +
                  subject.delete user, repo, label_id
         | 
| 31 | 
            +
                  a_delete(request_path).should have_been_made
         | 
| 32 | 
            +
                end
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              it_should_behave_like 'request failure' do
         | 
| 36 | 
            +
                let(:requestable) { subject.delete user, repo, label_id }
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            end # delete
         | 
| @@ -0,0 +1,47 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Github::Issues::Labels, '#get' do
         | 
| 6 | 
            +
              let(:user) { 'peter-murach' }
         | 
| 7 | 
            +
              let(:repo) { 'github' }
         | 
| 8 | 
            +
              let(:label_id) { 1 }
         | 
| 9 | 
            +
              let(:request_path) { "/repos/#{user}/#{repo}/labels/#{label_id}" }
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              before {
         | 
| 12 | 
            +
                stub_get(request_path).to_return(:body => body, :status => status,
         | 
| 13 | 
            +
                  :headers => {:content_type => "application/json; charset=utf-8"})
         | 
| 14 | 
            +
              }
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              after { reset_authentication_for(subject) }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              context "resource found" do
         | 
| 19 | 
            +
                let(:body) { fixture('issues/label.json') }
         | 
| 20 | 
            +
                let(:status) { 200 }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                it { should respond_to :get }
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it "should fail to get resource without label id" do
         | 
| 25 | 
            +
                  expect { subject.get user, repo, nil }.to raise_error(ArgumentError)
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                it "should get the resource" do
         | 
| 29 | 
            +
                  subject.get user, repo, label_id
         | 
| 30 | 
            +
                  a_get(request_path).should have_been_made
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                it "should get label information" do
         | 
| 34 | 
            +
                  label = subject.get user, repo, label_id
         | 
| 35 | 
            +
                  label.name.should == 'bug'
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
             | 
| 38 | 
            +
                it "should return mash" do
         | 
| 39 | 
            +
                  label = subject.get user, repo, label_id
         | 
| 40 | 
            +
                  label.should be_a Hashie::Mash
         | 
| 41 | 
            +
                end
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it_should_behave_like 'request failure' do
         | 
| 45 | 
            +
                let(:requestable) { subject.get user, repo, label_id }
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
            end # find
         | 
| @@ -0,0 +1,100 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'spec_helper'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Github::Issues::Labels, '#list' do
         | 
| 6 | 
            +
              let(:user) { 'peter-murach' }
         | 
| 7 | 
            +
              let(:repo) { 'github' }
         | 
| 8 | 
            +
              let(:request_path) { "/repos/#{user}/#{repo}/labels" }
         | 
| 9 | 
            +
              let(:body) { fixture('issues/labels.json') }
         | 
| 10 | 
            +
              let(:status) { 200 }
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              before {
         | 
| 13 | 
            +
                stub_get(request_path).to_return(:body => body, :status => status,
         | 
| 14 | 
            +
                  :headers => {:content_type => "application/json; charset=utf-8"})
         | 
| 15 | 
            +
              }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
              after { reset_authentication_for(subject) }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              context "for this repository" do
         | 
| 20 | 
            +
                it { should respond_to :all }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                it "should fail to get resource without username" do
         | 
| 23 | 
            +
                  expect { subject.list nil, repo }.to raise_error(ArgumentError)
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                it "should get the resources" do
         | 
| 27 | 
            +
                  subject.list user, repo
         | 
| 28 | 
            +
                  a_get(request_path).should have_been_made
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                it_should_behave_like 'an array of resources' do
         | 
| 32 | 
            +
                  let(:requestable) { subject.list user, repo }
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                it "should get issue information" do
         | 
| 36 | 
            +
                  labels = subject.list user, repo
         | 
| 37 | 
            +
                  labels.first.name.should == 'bug'
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                it "should yield to a block" do
         | 
| 41 | 
            +
                  yielded = []
         | 
| 42 | 
            +
                  result = subject.list(user, repo) { |obj| yielded << obj }
         | 
| 43 | 
            +
                  yielded.should == result
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              context "for this milestone" do
         | 
| 48 | 
            +
                let(:milestone_id) { 1 }
         | 
| 49 | 
            +
                let(:request_path) { "/repos/#{user}/#{repo}/milestones/#{milestone_id}/labels"}
         | 
| 50 | 
            +
                let(:body) { fixture('issues/labels.json') }
         | 
| 51 | 
            +
                let(:status) { 200 }
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                it "should get the resources" do
         | 
| 54 | 
            +
                  subject.list user, repo, :milestone_id => milestone_id
         | 
| 55 | 
            +
                  a_get(request_path).should have_been_made
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                it_should_behave_like 'an array of resources' do
         | 
| 59 | 
            +
                  let(:requestable) { subject.list user, repo, :milestone_id => milestone_id }
         | 
| 60 | 
            +
                end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                it "should get issue information" do
         | 
| 63 | 
            +
                  labels = subject.list user, repo, :milestone_id => milestone_id
         | 
| 64 | 
            +
                  labels.first.name.should == 'bug'
         | 
| 65 | 
            +
                end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                it "should yield to a block" do
         | 
| 68 | 
            +
                  yielded = []
         | 
| 69 | 
            +
                  result = subject.list(user, repo, :milestone_id => milestone_id) { |obj| yielded << obj }
         | 
| 70 | 
            +
                  yielded.should == result
         | 
| 71 | 
            +
                end
         | 
| 72 | 
            +
              end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
              context "resource found" do
         | 
| 75 | 
            +
                let(:issue_id) { 1 }
         | 
| 76 | 
            +
                let(:request_path) { "/repos/#{user}/#{repo}/issues/#{issue_id}/labels" }
         | 
| 77 | 
            +
                let(:body) { fixture('issues/labels.json') }
         | 
| 78 | 
            +
                let(:status) { 200 }
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                it "should get the resources" do
         | 
| 81 | 
            +
                  subject.list user, repo, :issue_id => issue_id
         | 
| 82 | 
            +
                  a_get(request_path).should have_been_made
         | 
| 83 | 
            +
                end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                it "should get issue information" do
         | 
| 86 | 
            +
                  labels = subject.list user, repo, :issue_id => issue_id
         | 
| 87 | 
            +
                  labels.first.name.should == 'bug'
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                it "should yield to a block" do
         | 
| 91 | 
            +
                  yielded = []
         | 
| 92 | 
            +
                  result = subject.list(user, repo, :issue_id => issue_id) { |obj| yielded << obj }
         | 
| 93 | 
            +
                  yielded.should == result
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              it_should_behave_like 'request failure' do
         | 
| 98 | 
            +
                let(:requestable) { subject.list user, repo }
         | 
| 99 | 
            +
              end
         | 
| 100 | 
            +
            end # list
         |