File: projects_spec.rb

package info (click to toggle)
ruby-octokit 10.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,092 kB
  • sloc: ruby: 13,339; sh: 99; makefile: 7; javascript: 3
file content (187 lines) | stat: -rw-r--r-- 7,343 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
# frozen_string_literal: true

describe Octokit::Client::Projects do
  describe '.projects', :vcr do
    it 'returns a list of projects for a repository' do
      projects = oauth_client.projects('octokit/octokit.rb')
      expect(projects).to be_kind_of Array
      assert_requested :get, github_url('/repos/octokit/octokit.rb/projects')
    end
  end # .projects

  describe '.create_project', :vcr do
    it 'returns the newly created project' do
      project = oauth_client.create_project(@test_repo, 'api kpi')
      expect(project.name).to eq('api kpi')
      assert_requested :post, github_url("/repos/#{@test_repo}/projects")
    end
  end # .create_project

  describe '.org_projects', :vcr do
    it 'returns the projects for an organization' do
      projects = oauth_client.org_projects(test_github_org)
      expect(projects).to be_kind_of Array
      assert_requested :get, github_url("/orgs/#{test_github_org}/projects")
    end
  end # .org_project

  describe '.create_org_project', :vcr do
    it 'returns the new org project' do
      project = oauth_client.create_org_project(test_github_org, 'synergy', body: 'do it')
      expect(project.name).to eq 'synergy'
      expect(project.body).to eq 'do it'
      assert_requested :post, github_url("/orgs/#{test_github_org}/projects")
    end
  end # .create_org_project

  context 'with repository' do
    before(:each) do
      delete_test_repo
    end

    after(:each) do
      delete_test_repo
    end

    context 'with project' do
      before(:each) do
        @project = oauth_client.create_project(@test_repo, 'implement apis')
      end

      describe '.project', :vcr do
        it 'returns a project' do
          project = oauth_client.project(@project.id)
          expect(project.name).not_to be_nil
          assert_requested :get, github_url("/projects/#{@project.id}")
        end
      end # .project

      describe '.update_project', :vcr do
        it 'updates the project name and body then returns the updated project' do
          name = 'new name'
          body = 'new body'
          project = oauth_client.update_project(@project.id, { name: name, body: body })
          expect(project.name).to eq name
          expect(project.body).to eq body
          assert_requested :patch, github_url("/projects/#{@project.id}")
        end
      end # .update_project

      describe '.delete_project', :vcr do
        it 'returns the result of deleting a project' do
          result = oauth_client.delete_project(@project.id)
          expect(result).to eq true
          assert_requested :delete, github_url("/projects/#{@project.id}")
        end
      end # .delete_project

      describe '.project_columns', :vcr do
        it 'returns the columns for a project' do
          columns = oauth_client.project_columns(@project.id)
          expect(columns).to be_kind_of Array
          assert_requested :get, github_url("/projects/#{@project.id}/columns")
        end
      end # .project_columns

      describe '.create_project_column', :vcr do
        it 'returns the newly created project column' do
          column = oauth_client.create_project_column(@project.id, 'Todos')
          expect(column.name).to eq 'Todos'
          assert_requested :post, github_url("/projects/#{@project.id}/columns")
        end
      end # .create_project_column

      context 'with project column' do
        before(:each) do
          @column = oauth_client.create_project_column(@project.id, "Todos #{Time.now.to_f}")
        end

        describe '.project_column', :vcr do
          it 'returns a project column by id' do
            column = oauth_client.project_column(@column.id)
            expect(column.name).to be_kind_of String
            assert_requested :get, github_url("/projects/columns/#{@column.id}")
          end
        end # .project_column

        describe '.update_project_column', :vcr do
          it 'updates the project column and returns the updated column' do
            column = oauth_client.update_project_column(@column.id, 'new name')
            expect(column.name).to eq 'new name'
            assert_requested :patch, github_url("/projects/columns/#{@column.id}")
          end
        end # .update_project_column

        describe '.move_project_column', :vcr do
          it 'moves the project column' do
            result = oauth_client.move_project_column(@column.id, 'last')
            expect(result).not_to be_nil
            assert_requested :post, github_url("/projects/columns/#{@column.id}/moves")
          end
        end # .move_project_column

        describe '.delete_project_column', :vcr do
          it 'deletes the project column' do
            result = oauth_client.delete_project_column(@column.id)
            expect(result).to eq true
            assert_requested :delete, github_url("/projects/columns/#{@column.id}")
          end
        end # .delete_project_column

        describe '.column_cards', :vcr do
          it 'returns a list of the cards in a project column' do
            cards = oauth_client.column_cards(@column.id)
            expect(cards).to be_kind_of Array
            assert_requested :get, github_url("/projects/columns/#{@column.id}/cards")
          end
        end # .column_cards

        describe '.create_project_card', :vcr do
          it 'creates a new card with a note' do
            card = oauth_client.create_project_card(@column.id, note: 'thing')
            expect(card.note).to eq 'thing'
            assert_requested :post, github_url("/projects/columns/#{@column.id}/cards")
          end
        end # .create_project_card

        context 'with project card' do
          before(:each) do
            @card = oauth_client.create_project_card(@column.id, note: 'octocard')
          end

          describe '.project_card', :vcr do
            it 'returns a project card by id' do
              card = oauth_client.project_card(@card.id)
              expect(card.note).to be_kind_of String
              assert_requested :get, github_url("/projects/columns/cards/#{@card.id}")
            end
          end # .project_card

          describe '.update_project_card', :vcr do
            it 'updates the project card' do
              card = oauth_client.update_project_card(@card.id, note: 'new note')
              expect(card.note).to eq 'new note'
              assert_requested :patch, github_url("/projects/columns/cards/#{@card.id}")
            end
          end # .update_project_card

          describe '.move_project_card', :vcr do
            it 'moves the project card' do
              result = oauth_client.move_project_card(@card.id, 'bottom')
              expect(result).not_to be_nil
              assert_requested :post, github_url("/projects/columns/cards/#{@card.id}/moves")
            end
          end # .move_project_card

          describe '.delete_project_card', :vcr do
            it 'deletes the project card' do
              success = oauth_client.delete_project_card(@card.id)
              expect(success).to eq true
              assert_requested :delete, github_url("/projects/columns/cards/#{@card.id}")
            end
          end # .delete_project_card
        end # with project card
      end # with project column
    end # with project
  end # with repository
end # Octokit::Client::Projects