reviewlette 0.0.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,70 +1,71 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe TrelloConnection do
4
- subject { TrelloConnection }
5
-
6
- let(:trello) { subject.new }
3
+ describe Reviewlette::TrelloConnection do
4
+ subject { described_class.new }
7
5
  let(:card) { Trello::Card.new }
8
6
  let(:trello_config) { { 'consumerkey' => consumerkey, 'oauthtoken' => oauthtoken } }
9
7
  let(:consumerkey) { '4a6' }
10
8
  let(:oauthtoken) { 'a8e' }
11
9
 
12
-
13
10
  before do
14
11
  allow(Trello::Board).to receive(:find).and_return(Trello::Board.new)
15
12
  allow(YAML).to receive(:load_file).and_return(trello_config)
16
13
  end
17
14
 
18
-
19
15
  describe '.new' do
20
16
  it 'sets up trello' do
21
17
  expect_any_instance_of(Trello::Configuration).to receive(:developer_public_key=).with(consumerkey)
22
18
  expect_any_instance_of(Trello::Configuration).to receive(:member_token=).with(oauthtoken)
23
- subject.new
19
+ described_class.new
24
20
  end
25
21
  end
26
22
 
27
23
  describe '#add_reviewer_to_card' do
28
24
  it 'adds the valid member to the trello card and comments it' do
29
- expect(trello).to receive(:find_member_by_username).with('testuser1').and_return 'testuser1'
25
+ expect(subject).to receive(:find_member_by_username).with('testuser1').and_return 'testuser1'
30
26
  expect_any_instance_of(Trello::Card).to receive(:add_member).with('testuser1')
31
- trello.add_reviewer_to_card('testuser1', card)
27
+ subject.add_reviewer_to_card('testuser1', card)
32
28
  end
33
29
  end
34
30
 
35
- describe '#comment_on_card' do
31
+ describe '#comment_reviewers' do
36
32
  it 'comments on the assigned trello card ' do
37
- allow(card).to receive(:add_comment).with('comment').and_return true
38
- expect(trello.comment_on_card('comment', card)).to eq true
33
+ repo_name = 'testrepo'
34
+ issue_id = 1
35
+ reviewers = [double(trello_handle: 'test1'), double(trello_handle: 'test2')]
36
+ comment = "@test1 and @test2 will review https://github.com/#{repo_name}/issues/#{issue_id}"
37
+
38
+ allow(card).to receive(:add_comment).with(comment).and_return true
39
+ expect(subject.comment_reviewers(card, repo_name, issue_id, reviewers)).to eq true
39
40
  end
40
41
  end
41
42
 
42
43
  describe '#move_card_to_list' do
43
44
  it 'move cards to its certain column' do
44
- expect(trello).to receive(:find_column).with('Done').and_return 'column'
45
+ expect(subject).to receive(:find_column).with('Done').and_return 'column'
45
46
  expect(card).to receive(:move_to_list).with('column').and_return true
46
- expect(trello.move_card_to_list(card, 'Done')).to be true
47
+ expect(subject.move_card_to_list(card, 'Done')).to be true
47
48
  end
48
49
  end
49
50
 
50
51
  describe '#find_column' do
51
52
  it 'detects columns' do
52
53
  expect_any_instance_of(Trello::Board).to receive_message_chain(:lists, :find)
53
- trello.find_column('Done')
54
+ subject.find_column('Done')
54
55
  end
55
56
  end
56
57
 
57
58
  describe '#find_member_by_username' do
58
59
  it 'finds a member based on a username and returns a trello member object' do
59
60
  expect_any_instance_of(Trello::Board).to receive_message_chain(:members, :find)
60
- trello.find_member_by_username('testuser')
61
+ subject.find_member_by_username('testuser')
61
62
  end
62
63
  end
63
64
 
64
65
  describe '#find_card_by_id(id)' do
65
66
  it 'finds the right card based on the trello id' do
66
67
  expect_any_instance_of(Trello::Board).to receive_message_chain(:cards, :find)
67
- trello.find_card_by_id(123)
68
+ subject.find_card_by_id(123)
68
69
  end
69
70
  end
70
71
  end
metadata CHANGED
@@ -1,79 +1,51 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: reviewlette
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jschmid1
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-21 00:00:00.000000000 Z
11
+ date: 2016-12-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-trello
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 1.1.1
19
+ version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 1.1.1
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: octokit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 3.8.0
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 3.8.0
41
- - !ruby/object:Gem::Dependency
42
- name: sequel
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '='
46
- - !ruby/object:Gem::Version
47
- version: 4.13.0
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '='
53
- - !ruby/object:Gem::Version
54
- version: 4.13.0
55
- - !ruby/object:Gem::Dependency
56
- name: sqlite3
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - '='
60
- - !ruby/object:Gem::Version
61
- version: 1.3.9
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - '='
67
- - !ruby/object:Gem::Version
68
- version: 1.3.9
40
+ version: '0'
69
41
  description: Easy, fair and trackable labor division in your team.
70
42
  email:
71
43
  - jschmid@suse.de
72
- executables:
73
- - reviewlette
44
+ executables: []
74
45
  extensions: []
75
46
  extra_rdoc_files: []
76
47
  files:
48
+ - ".dockerignore"
77
49
  - ".gitignore"
78
50
  - ".rspec"
79
51
  - ".travis.yml"
@@ -83,20 +55,17 @@ files:
83
55
  - LICENSE
84
56
  - README.md
85
57
  - Rakefile
86
- - bin/reviewlette
87
58
  - config/github_example.yml
88
- - config/members_example.yml
89
59
  - config/trello_example.yml
90
60
  - lib/reviewlette.rb
91
61
  - lib/reviewlette/github_connection.rb
92
62
  - lib/reviewlette/trello_connection.rb
93
- - lib/reviewlette/vacations.rb
63
+ - lib/reviewlette/version.rb
94
64
  - reviewlette.gemspec
95
65
  - spec/github_connection_spec.rb
96
66
  - spec/reviewlette_spec.rb
97
67
  - spec/spec_helper.rb
98
68
  - spec/trello_connection_spec.rb
99
- - spec/vacation_spec.rb
100
69
  homepage: http://rubygems.org/gems/reviewlette
101
70
  licenses:
102
71
  - MIT
@@ -117,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
86
  version: '0'
118
87
  requirements: []
119
88
  rubyforge_project:
120
- rubygems_version: 2.2.2
89
+ rubygems_version: 2.5.1
121
90
  signing_key:
122
91
  specification_version: 4
123
92
  summary: Randomly assignes a reviewer to your Pullrequest and corresponding Trello
@@ -127,5 +96,3 @@ test_files:
127
96
  - spec/reviewlette_spec.rb
128
97
  - spec/spec_helper.rb
129
98
  - spec/trello_connection_spec.rb
130
- - spec/vacation_spec.rb
131
- has_rdoc:
@@ -1,8 +0,0 @@
1
- #!/usr/bin/ruby
2
-
3
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
- require 'reviewlette'
5
-
6
- reviewlette = Reviewlette.new
7
- reviewlette.run
8
-
@@ -1,25 +0,0 @@
1
- members:
2
- - name: Tom
3
- suse_username: tschmidt
4
- trello_username: thomasschmidt
5
- github_username: digitaltom
6
- - name: Artem
7
- suse_username: achernikov
8
- trello_username: artemchernikov
9
- github_username: kalabiyau
10
- - name: Kirill
11
- suse_username: kpimenov
12
- trello_username: kirillpimenov
13
- github_username: kirushik
14
- - name: Vlad
15
- suse_username: vlewin
16
- trello_username: vlewin
17
- github_username: vlewin
18
- - name: Will
19
- suse_username: wstephenson
20
- trello_username: wstephenson
21
- github_username: wstephenson
22
- - name: Nadja
23
- suse_username: nwalter
24
- trello_username: nadjaw2
25
- github_username: nadjaw
@@ -1,30 +0,0 @@
1
- require 'net/telnet'
2
-
3
- class Vacations
4
-
5
- def self.find_vacations(username)
6
- vacations = []
7
- tn = Net::Telnet.new('Host' => 'present.suse.de', 'Port' => 9874, 'Binmode' => false)
8
- tn.cmd("#{username}").split("\n").each do |line|
9
- if line =~ /\S{3} #{Time.now.year}-\d\d-\d\d/
10
- dates = []
11
- line.split(" ").each do |date|
12
- dates.push(date) if date =~ /#{Time.now.year}-\d\d-\d\d/
13
- end
14
- dates[1] = dates[0] unless dates[1]
15
- vacations.push(Date.parse(dates[0])..Date.parse(dates[1]))
16
- end
17
- end
18
- tn.close
19
- vacations
20
- end
21
-
22
- def self.members_on_vacation(members)
23
- members_on_vacation = members.collect do |member|
24
- username = member['suse_username']
25
- username if (username && Vacations.find_vacations(username).any? { |v| v === Date.today })
26
- end
27
- members_on_vacation.compact
28
- end
29
-
30
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Vacations do
4
- subject { Vacations }
5
-
6
- let(:members_config) { { members: [member1, member2, member3] } }
7
- let(:member1) { { 'suse_username' => 'testuser1' } }
8
- let(:member2) { { 'suse_username' => 'testuser2' } }
9
- let(:member3) { { 'suse_username' => 'testuser3' } }
10
- let(:timestamp) { 'Absence : Thu 2015-04-02 - Tue 2015-04-07' }
11
-
12
- describe '.find_vacations' do
13
- it 'parses the vacations dates out of tel' do
14
- stub_telnet = double
15
- expect(stub_telnet).to receive(:cmd).with('testuser1').and_return(timestamp)
16
- expect(stub_telnet).to receive(:close).and_return(true)
17
-
18
- expect(Net::Telnet).to receive(:new).and_return(stub_telnet)
19
- vacations = subject.find_vacations('testuser1')
20
-
21
- expect(vacations).to be_kind_of(Array)
22
- expect(vacations).to eq([Date.parse('2015-04-02')..Date.parse('2015-04-07')])
23
- end
24
- end
25
-
26
- describe '.members_on_vacation' do
27
- it 'finds members on vacation' do
28
- allow(subject).to receive(:find_vacations).with('testuser1').and_return [(Date.today - 1)..(Date.today + 2)]
29
- allow(subject).to receive(:find_vacations).with('testuser2').and_return [(Date.today - 1)..(Date.today - 1)]
30
- allow(subject).to receive(:find_vacations).with('testuser3').and_return []
31
-
32
- expect(subject.members_on_vacation(members_config[:members])).to be_kind_of(Array)
33
- expect(subject.members_on_vacation(members_config[:members])).to eq(['testuser1'])
34
- end
35
- end
36
- end