happy-commander 0.0.6

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.
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+
3
+ describe Commander::Setup do
4
+
5
+ subject { Commander::Setup }
6
+
7
+ describe '.get_user_input' do
8
+
9
+ it 'gets user input' do
10
+ expect($stdin).to receive_message_chain(:gets, :chomp)
11
+ subject.get_user_input
12
+ end
13
+ end
14
+
15
+ describe '.pick_cron_day' do
16
+
17
+ it 'translates literal day names into integers' do
18
+ expect_user_input 'Tuesday'
19
+ expect(subject.pick_cron_day).to eq(2)
20
+ end
21
+
22
+ it 'asks to correct invalid inputs' do
23
+ expect_user_input 'Invalid'
24
+ expect_user_input 'Sunday'
25
+ expect(subject.pick_cron_day).to eq(0)
26
+ end
27
+
28
+ it 'translates "Sunday" into the integer 0' do
29
+ expect_user_input 'Sunday'
30
+ expect(subject.pick_cron_day).to eq(0)
31
+ end
32
+
33
+ it 'translates "Saturday" into the integer 6' do
34
+ expect_user_input 'Saturday'
35
+ expect(subject.pick_cron_day).to eq(6)
36
+ end
37
+ end
38
+
39
+ describe '.pick_cron_time' do
40
+
41
+ it 'takes hours from the users input' do
42
+ expect_user_input '14'
43
+ expect(subject.pick_cron_time).to eq(14)
44
+ end
45
+
46
+ it 'ensure valid range of integers' do
47
+ expect_user_input '25'
48
+ expect_user_input '7'
49
+ expect(subject.pick_cron_time).to eq(7)
50
+ end
51
+ end
52
+
53
+ describe '.configure' do
54
+
55
+ it 'outputs / prompts instructions' do
56
+ expect(subject).to receive(:puts).at_least(:once)
57
+ expect_user_input 'board_id'
58
+ expect_user_input 'key'
59
+ expect_user_input 'secret'
60
+ expect_user_input 'token'
61
+ expect_user_input 'card'
62
+ expect_user_input 'syntax_selection'
63
+ subject.configure
64
+ end
65
+ end
66
+
67
+ describe '.choice' do
68
+
69
+ it 'outputs cron syntax based on user input (1)' do
70
+ expect(subject).to receive(:pick_cron_time)
71
+ expect(subject).to receive(:pick_cron_day)
72
+ subject.choose(1)
73
+ end
74
+
75
+ it 'outputs cron syntax based on user input (2)' do
76
+ expect(subject).to receive(:puts).at_least(:once)
77
+ expect_user_input('* * * * *')
78
+ subject.choose(2)
79
+ end
80
+
81
+ it 'outputs cron syntax based on user input (3)' do
82
+ expect(subject).to receive(:write_to_file)
83
+ expect(subject).to receive(:exit).with('Success')
84
+ subject.choose(3)
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,26 @@
1
+ $:.unshift(File.expand_path(File.dirname(__FILE__))) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+ require 'simplecov'
4
+
5
+ SimpleCov.minimum_coverage 60
6
+ SimpleCov.start do
7
+ add_filter '/spec/'
8
+ end
9
+
10
+ RSpec.configure do |c|
11
+ c.order = :random
12
+ c.before { allow($stdout).to receive(:puts) }
13
+ c.before { allow($stdin).to receive(:gets) }
14
+ end
15
+
16
+ require 'webmock/rspec'
17
+ require 'support/request_stubbing'
18
+ require 'support/input_stubbing'
19
+ require 'commander'
20
+ require 'rspec'
21
+ require 'trello'
22
+ require 'commander/trello'
23
+ require 'commander/runner'
24
+ require 'commander/client'
25
+ require 'commander/version'
26
+
@@ -0,0 +1,3 @@
1
+ def expect_user_input(input)
2
+ expect(subject).to receive(:get_user_input).and_return(input)
3
+ end
@@ -0,0 +1,23 @@
1
+ # Helper for stubbing
2
+ module Helpers
3
+ def self.boards_details
4
+ [{
5
+ id: 'abcdef123456789123456789',
6
+ name: 'Test',
7
+ desc: 'This is a test board',
8
+ closed: false,
9
+ idOrganization: 'abcdef123456789123456789',
10
+ url: 'https://trello.com/board/test/abcdef123456789123456789'
11
+ }]
12
+ end
13
+
14
+ def boards_payload
15
+ JSON.generate(boards_details)
16
+ end
17
+ end
18
+
19
+ def stub_boards_call
20
+ trello_config = Commander::CONFIG
21
+ stub_request(:get, "https://api.trello.com/1/boards/#{trello_config['board_id']}?key=#{trello_config['consumerkey']}&token=#{trello_config['oauthtoken']}")
22
+ .to_return(status: 200, body: Helpers.boards_details.first.to_json)
23
+ end
@@ -0,0 +1,113 @@
1
+ require 'spec_helper'
2
+
3
+ describe Commander::TrelloConnection do
4
+
5
+ subject { Commander::TrelloConnection }
6
+
7
+ describe '.new' do
8
+
9
+ it 'sets up trello' do
10
+ allow(Trello::Board).to receive(:find).and_return nil
11
+ config = Commander::CONFIG
12
+ expect_any_instance_of(Trello::Configuration).to receive(:developer_public_key=).with(config['consumerkey']).and_call_original
13
+ subject.new
14
+ end
15
+
16
+ it 'sets up trello' do
17
+ allow(Trello::Board).to receive(:find).and_return nil
18
+ config = Commander::CONFIG
19
+ expect_any_instance_of(Trello::Configuration).to receive(:member_token=).with(config['oauthtoken']).and_call_original
20
+ subject.new
21
+ end
22
+ end
23
+
24
+ describe '#find_member_by_id' do
25
+ let( :trello_connection ) { subject.new }
26
+
27
+ before do
28
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
29
+ allow(subject).to receive(:find_member_by_id).and_return :id
30
+ end
31
+
32
+ it 'finds the right member based on the trello id and returns a trello member object' do
33
+ board = double('board')
34
+ trello_connection.board = board
35
+ expect(board).to receive_message_chain(:members, :find)
36
+ trello_connection.send(:find_member_by_id, 42)
37
+ end
38
+ end
39
+
40
+ describe '#find_member_by_username' do
41
+ let( :trello_connection ) { subject.new }
42
+
43
+ before do
44
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
45
+ allow(subject).to receive(:find_member_by_username).and_return :username
46
+ end
47
+
48
+ it 'finds a member based on a username and returns a trello member object' do
49
+ board = double('board')
50
+ trello_connection.board = board
51
+ expect(board).to receive_message_chain(:members, :find)
52
+ trello_connection.send(:find_member_by_username, 'art')
53
+ end
54
+ end
55
+
56
+ describe '#comment_on_card' do
57
+ let ( :trello_connection ) { subject.new }
58
+
59
+ before do
60
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
61
+ end
62
+
63
+ it 'comments on the assigned trello card ' do
64
+ card = double('card')
65
+ allow(card).to receive(:add_comment).with('username').and_return true
66
+ expect(trello_connection.comment_on_card('username', card)).to eq true
67
+ end
68
+ end
69
+
70
+ describe '#add_commander_to_card' do
71
+ let ( :trello_connection ) { subject.new }
72
+
73
+ before do
74
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
75
+ end
76
+
77
+ it 'adds the valid member to the trello card and comments it' do
78
+ card = double('card')
79
+ allow(card).to receive(:add_member).and_return true
80
+ expect(trello_connection.add_commander_to_card('asd', card)).to eq true
81
+ end
82
+ end
83
+
84
+ describe '#list_of_assigned_members' do
85
+ let ( :trello_connection ) { subject.new }
86
+
87
+ before do
88
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
89
+ end
90
+
91
+ it 'list all the assigned members of the specified card ' do
92
+ card = double('card')
93
+ expect(card).to receive_message_chain(:assignees, :map)
94
+ trello_connection.list_of_assigned_members(card)
95
+ end
96
+ end
97
+
98
+ describe '#find_member_by_id(id)' do
99
+ let( :trello_connection ) { subject.new }
100
+
101
+ before do
102
+ allow_any_instance_of(subject).to receive(:configure_trello).and_return true
103
+ allow(subject).to receive(:find_card_by_id).and_return :id
104
+ end
105
+
106
+ it 'finds the right card based on the trello id' do
107
+ board = double('board')
108
+ trello_connection.board = board
109
+ expect(board).to receive_message_chain(:cards, :find)
110
+ trello_connection.send(:find_card_by_id, 42)
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,13 @@
1
+ require 'spec_helper'
2
+
3
+ describe Commander::Vacations do
4
+
5
+ subject { Commander::Vacations }
6
+
7
+ describe '.find_vacations' do
8
+
9
+ it 'parses out vacations from tel' do
10
+ subject.find_vacations('jschmid')
11
+ end
12
+ end
13
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: happy-commander
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.6
5
+ platform: ruby
6
+ authors:
7
+ - jschmid1
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ruby-trello
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: json
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.7.7
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.7.7
41
+ - !ruby/object:Gem::Dependency
42
+ name: colorize
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.7.3
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.7.3
55
+ description: Easy, fair and trackable labor division in your team.
56
+ email:
57
+ - jschmid@suse.de
58
+ executables:
59
+ - commander
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - ".gitignore"
64
+ - ".rspec"
65
+ - Gemfile
66
+ - Gemfile.lock
67
+ - LICENSE.txt
68
+ - README.md
69
+ - Rakefile
70
+ - bin/commander
71
+ - commander.gemspec
72
+ - config/.trello.yml
73
+ - config/members.yml
74
+ - lib/commander.rb
75
+ - lib/commander/client.rb
76
+ - lib/commander/exceptions.rb
77
+ - lib/commander/helpers.rb
78
+ - lib/commander/runner.rb
79
+ - lib/commander/setup.rb
80
+ - lib/commander/trello.rb
81
+ - lib/commander/vacations.rb
82
+ - lib/commander/version.rb
83
+ - rubocop.yml
84
+ - spec/client_spec.rb
85
+ - spec/fixtures/trello.txt
86
+ - spec/fixtures/users.txt
87
+ - spec/fixtures/vacations.txt
88
+ - spec/helpers_spec.rb
89
+ - spec/runner_spec.rb
90
+ - spec/setup_spec.rb
91
+ - spec/spec_helper.rb
92
+ - spec/support/input_stubbing.rb
93
+ - spec/support/request_stubbing.rb
94
+ - spec/trello_spec.rb
95
+ - spec/vacations_spec.rb
96
+ homepage: http://rubygems.org/gems/happy-commander
97
+ licenses:
98
+ - MIT
99
+ metadata: {}
100
+ post_install_message:
101
+ rdoc_options: []
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
114
+ requirements: []
115
+ rubyforge_project:
116
+ rubygems_version: 2.2.2
117
+ signing_key:
118
+ specification_version: 4
119
+ summary: Automatically sets a Commanding officer of the Week.
120
+ test_files:
121
+ - spec/client_spec.rb
122
+ - spec/fixtures/trello.txt
123
+ - spec/fixtures/users.txt
124
+ - spec/fixtures/vacations.txt
125
+ - spec/helpers_spec.rb
126
+ - spec/runner_spec.rb
127
+ - spec/setup_spec.rb
128
+ - spec/spec_helper.rb
129
+ - spec/support/input_stubbing.rb
130
+ - spec/support/request_stubbing.rb
131
+ - spec/trello_spec.rb
132
+ - spec/vacations_spec.rb
133
+ has_rdoc: