reviewlette 0.0.9 → 1.0.0

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.
@@ -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