robut-quiz 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ === 0.2.1 / 2011-11-06
2
+
3
+ * Added a choice question 'a', 'b', or 'c'
4
+
1
5
  === 0.2.0 / 2011-10-26
2
6
 
3
7
  * Changed the question syntax
data/README.md CHANGED
@@ -4,19 +4,46 @@ A Plugin for [Robut](https://github.com/justinweiss/robut) that allows you to as
4
4
 
5
5
  ## Usage
6
6
 
7
- ### Polar Question (Yes/No)
7
+ ### Yes/No Question (Polar)
8
8
 
9
9
  ```
10
- user_a > @robut ask 'Do you want to go to the bar at 4:30?' for 5 minutes.
10
+ user_a > @robut ask 'Do you want to go to the bar at 4:30?'
11
11
  robut > @user I have enqueued your question
12
12
  robut > @all Question: 'Do you want to go to the bar at 4:30?'
13
13
  user_a > @robut answer YES
14
14
  user_b > @robut answer yes
15
15
  user_c > @robut answer n
16
- robut > @all The results are in for 'Do you want to go to the bar at 4:30?:'
16
+ robut > @all The results are in for 'Do you want to go to the bar at 4:30?':
17
17
  2 YES votes and 1 NO vote
18
18
  ```
19
19
 
20
+
21
+ ### Scale/Range Questions
22
+
23
+ ```
24
+ user_a > @robut ask range 'How much did you like the bar we went to last week?' 1..10
25
+ robut > @user I have enqueued your question
26
+ robut > @all Question 'How much did you like the bar we went to last week?' (1..10)
27
+ user_a > @robut answer 1
28
+ user_b > @robut answer 5
29
+ user_c > @robut answer 10
30
+ robut > @all The results are in for 'How much did you like the bar we went to last week?':
31
+ 3 votes with a mean of 5.333333
32
+ ```
33
+
34
+ ### Choice Questions
35
+
36
+ ```
37
+ user_a > @robut ask choice 'What drink should I order?' 'PBR', 'Martini', 'Bourbon'
38
+ robut > @user I have enqueued your question
39
+ robut > @all Question 'What drink should I order?' (1..10)
40
+ user_a > @robut answer PBR
41
+ user_b > @robut answer Martini
42
+ user_c > @robut answer Martini
43
+ robut > @all The results are in for 'What drink should I order?':
44
+ 1 'PBR', 2 'Martini'
45
+ ```
46
+
20
47
  ## Installation
21
48
 
22
49
  Install the gem
@@ -0,0 +1,42 @@
1
+ # encoding: UTF-8
2
+
3
+ class Robut::Plugin::Quiz::Choice
4
+ include Robut::Plugin::Quiz::Question
5
+
6
+ def ask
7
+ "@all Question '#{@question}' #{@parameters.map {|p| "'#{p}'" }.join(", ")})"
8
+ end
9
+
10
+ def handle_response(sender_nick,response)
11
+
12
+ if a_valid_choice response
13
+ store_response sender_nick, response
14
+ true
15
+ else
16
+ false
17
+ end
18
+
19
+ end
20
+
21
+ def a_valid_choice(response)
22
+ @parameters.find {|choice| choice == response }
23
+ end
24
+
25
+ def store_response(sender_nick,response)
26
+ captured_results[sender_nick] = response
27
+ end
28
+
29
+ def results
30
+
31
+ response = @parameters.map do |choice|
32
+ found = captured_results.values.find_all {|result| result == choice }
33
+
34
+ "#{found.length} '#{choice}'" unless found.empty?
35
+
36
+ end.compact.join(", ")
37
+
38
+ response.empty? ? "No votes have been made" : response
39
+
40
+ end
41
+
42
+ end
@@ -148,4 +148,5 @@ end
148
148
 
149
149
  require_relative 'question'
150
150
  require_relative 'polar'
151
- require_relative 'range'
151
+ require_relative 'range'
152
+ require_relative 'choice'
@@ -3,7 +3,7 @@
3
3
  require 'robut'
4
4
 
5
5
  class Robut::Plugin::Quiz
6
- VERSION = "0.2.0"
6
+ VERSION = "0.2.1"
7
7
  end
8
8
 
9
9
  require_relative 'quiz'
@@ -0,0 +1,140 @@
1
+ require_relative 'spec_helper'
2
+
3
+ describe Robut::Plugin::Quiz::Choice do
4
+
5
+ subject do
6
+ Robut::Plugin::Quiz::Choice.new 'person',"'Should I continue the presentation?' 'yes', 'no', 'meh'"
7
+ end
8
+
9
+ let(:time) { Time.now }
10
+
11
+ describe "#handle_response" do
12
+
13
+ context "when the response is a 'yes'" do
14
+
15
+ it "should store the yes response for the user" do
16
+
17
+ subject.should_receive(:store_response).with('person','yes')
18
+ subject.handle_response('person','yes')
19
+
20
+ end
21
+
22
+ end
23
+
24
+ context "when the response is a 'no'" do
25
+
26
+ it "should store the no response for the user" do
27
+
28
+ subject.should_receive(:store_response).with('person','no')
29
+ subject.handle_response('person','no')
30
+
31
+ end
32
+ end
33
+
34
+ context "when the response is a 'meh'" do
35
+
36
+ it "should store the meh response for the user" do
37
+
38
+ subject.should_receive(:store_response).with('person','meh')
39
+ subject.handle_response('person','meh')
40
+
41
+ end
42
+ end
43
+
44
+ context "when the response is not valid" do
45
+
46
+ it "should not store the response for the user" do
47
+
48
+ subject.handle_response('person','no way').should be_false
49
+
50
+ end
51
+
52
+ end
53
+
54
+ end
55
+
56
+
57
+ describe "#declare_results" do
58
+
59
+ context "when there have been no votes" do
60
+
61
+ it "should reply that there are no votes" do
62
+
63
+ subject.results.should eq "No votes have been made"
64
+
65
+ end
66
+
67
+ end
68
+
69
+ context "when there has been a 'yes' vote" do
70
+
71
+ it "should reply that there is 1 'yes' vote" do
72
+
73
+ subject.handle_response('person','yes')
74
+ subject.results.should eq "1 'yes'"
75
+
76
+ end
77
+
78
+ end
79
+
80
+ context "when there has been a 'no' vote" do
81
+
82
+ it "should reply that there is 1 'no' vote" do
83
+
84
+ subject.handle_response('person','no')
85
+ subject.results.should eq "1 'no'"
86
+
87
+ end
88
+
89
+ end
90
+
91
+ context "when there has been a 'meh' vote" do
92
+
93
+ it "should reply that there is 1 'no' vote" do
94
+
95
+ subject.handle_response('person','meh')
96
+ subject.results.should eq "1 'meh'"
97
+
98
+ end
99
+
100
+ end
101
+
102
+ context "when there have been several different votes" do
103
+
104
+ it "should reply that there is 1 'no' vote" do
105
+
106
+ subject.handle_response('person_a','yes')
107
+ subject.handle_response('person_b','no')
108
+ subject.handle_response('person_c','meh')
109
+ subject.results.should eq "1 'yes', 1 'no', 1 'meh'"
110
+
111
+ end
112
+
113
+ end
114
+
115
+ context "when there has been multiple votes by the same user" do
116
+
117
+ it "should count as one vote" do
118
+
119
+ subject.handle_response('person','no')
120
+ subject.handle_response('person','no')
121
+ subject.handle_response('person','no')
122
+ subject.results.should eq "1 'no'"
123
+
124
+ end
125
+
126
+ it "should only count the last vote" do
127
+
128
+ subject.handle_response('person','yes')
129
+ subject.handle_response('person','yes')
130
+ subject.handle_response('person','no')
131
+ subject.results.should eq "1 'no'"
132
+
133
+ end
134
+
135
+ end
136
+
137
+ end
138
+
139
+
140
+ end
metadata CHANGED
@@ -1,48 +1,47 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: robut-quiz
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
4
5
  prerelease:
5
- version: 0.2.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Franklin Webber
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-10-27 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-06 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: robut
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70256048684460 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
23
- version: "0.3"
20
+ - !ruby/object:Gem::Version
21
+ version: '0.3'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- description: " Robut plugin that provides quiz asking functionality. "
23
+ prerelease: false
24
+ version_requirements: *70256048684460
25
+ description: ! ' Robut plugin that provides quiz asking functionality. '
27
26
  email: franklin.webber@gmail.com
28
27
  executables: []
29
-
30
28
  extensions: []
31
-
32
- extra_rdoc_files:
29
+ extra_rdoc_files:
33
30
  - README.md
34
31
  - History.txt
35
- files:
32
+ files:
36
33
  - Gemfile
37
34
  - Guardfile
38
35
  - History.txt
39
36
  - README.md
37
+ - lib/choice.rb
40
38
  - lib/polar.rb
41
39
  - lib/question.rb
42
40
  - lib/quiz.rb
43
41
  - lib/range.rb
44
42
  - lib/robut_quiz.rb
45
43
  - robut-quiz.gemspec
44
+ - spec/choice_spec.rb
46
45
  - spec/polar_spec.rb
47
46
  - spec/question_spec.rb
48
47
  - spec/quiz_spec.rb
@@ -50,32 +49,30 @@ files:
50
49
  - spec/spec_helper.rb
51
50
  homepage: http://github.com/burtlo/robut-quiz
52
51
  licenses: []
53
-
54
- post_install_message: "\n\
55
- --------------------------------------------------------------------------------\n ___\n !(O-0)! ~ Thank you for installing robut-quiz 0.2.0 / 2011-10-26\n >==[ ]==<\n @ @\n\n Changes:\n \n * Changed the question syntax\n * Added a range question (1..5)\n \n\n\
56
- --------------------------------------------------------------------------------"
57
- rdoc_options:
52
+ post_install_message: ! "\n--------------------------------------------------------------------------------\n
53
+ \ ___\n !(O-0)! ~ Thank you for installing robut-quiz 0.2.1 / 2011-11-06\n >==[
54
+ ]==<\n @ @\n\n Changes:\n \n * Added a choice question 'a', 'b', or 'c'\n
55
+ \ \n\n--------------------------------------------------------------------------------"
56
+ rdoc_options:
58
57
  - --charset=UTF-8
59
- require_paths:
58
+ require_paths:
60
59
  - lib
61
- required_ruby_version: !ruby/object:Gem::Requirement
60
+ required_ruby_version: !ruby/object:Gem::Requirement
62
61
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
67
- required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
68
67
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: "0"
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
73
72
  requirements: []
74
-
75
73
  rubyforge_project:
76
- rubygems_version: 1.8.10
74
+ rubygems_version: 1.8.6
77
75
  signing_key:
78
76
  specification_version: 3
79
77
  summary: Quiz asking Robut
80
78
  test_files: []
81
-