poptart 0.0.7 → 0.0.8
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +28 -4
- data/lib/poptart/boolean_question.rb +14 -0
- data/lib/poptart/multiple_response_question.rb +9 -0
- data/lib/poptart/question.rb +14 -1
- data/lib/poptart/range_question.rb +9 -0
- data/lib/poptart/survey.rb +3 -1
- data/lib/poptart/user.rb +0 -5
- data/lib/poptart.rb +3 -0
- data/lib/version.rb +1 -1
- data/spec/requests/answering_survey_questions_spec.rb +2 -6
- data/spec/requests/answers_spec.rb +24 -0
- data/spec/requests/creating_questions_spec.rb +29 -0
- data/spec/vcr/answering/survey_questions_answers_a_multiple_choice_question.yml +381 -154
- data/spec/vcr/answering/survey_questions_answers_a_survey_question.yml +528 -329
- data/spec/vcr/creating/quesitons_returns_boolean_question.yml +207 -0
- data/spec/vcr/creating/quesitons_returns_multiple_question.yml +207 -0
- data/spec/vcr/creating/quesitons_returns_range_question.yml +206 -0
- data/spec/vcr/retrieving/answers_returns_answers.yml +1073 -0
- data/spec/vcr/retrieving/responses_returns_responses.yml +1198 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e866e5a5e27b895fa5736f6563bf11a3ff32f88f
|
4
|
+
data.tar.gz: 53641259333474ad4dfc3caa9e0b4a28147aef84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dd84a6bd7702ffc6fe8e195a55e4bd9ee6756e704687cc0fbcf389920fb2f85284299406753067ceba0ad1569bbf697c14d26184e0a03f4ea8e10feb8765355a
|
7
|
+
data.tar.gz: 997bd36d34df9af9903805faa1359fec597fc5f1c1514124cc77363584b168d88560bb6ac6b8cb028f60e5c27f55fbca6a0cde7f25777081dd3c17144a2589a0
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -11,8 +11,8 @@ The gem provides ActiveRecord-y like models exposing service endpoint attributes
|
|
11
11
|
To create a user:
|
12
12
|
|
13
13
|
```
|
14
|
-
user = User.create
|
15
|
-
user.
|
14
|
+
user = User.create
|
15
|
+
user.service_user_id # => <Some hash>
|
16
16
|
```
|
17
17
|
|
18
18
|
Users have a 1-many relationship to `surveys`. A user has read/write access to surveys as such:
|
@@ -21,15 +21,39 @@ Users have a 1-many relationship to `surveys`. A user has read/write access to s
|
|
21
21
|
user.create_survey
|
22
22
|
user.create_random_survey
|
23
23
|
user.survey_for_id(id)
|
24
|
-
|
24
|
+
|
25
25
|
```
|
26
26
|
|
27
27
|
|
28
28
|
## Question
|
29
29
|
|
30
30
|
To find all questions:
|
31
|
-
|
32
31
|
```
|
33
32
|
questions = Question.all
|
34
33
|
|
35
34
|
```
|
35
|
+
|
36
|
+
## Surveys
|
37
|
+
|
38
|
+
To add a question to a survey:
|
39
|
+
|
40
|
+
```
|
41
|
+
question = Question.all.first
|
42
|
+
survey.add_question(question)
|
43
|
+
```
|
44
|
+
|
45
|
+
To find out if a survey has all of it's questions answered:
|
46
|
+
|
47
|
+
```
|
48
|
+
survey.completed?
|
49
|
+
```
|
50
|
+
|
51
|
+
## Survey Questions
|
52
|
+
|
53
|
+
To answer a survey question:
|
54
|
+
|
55
|
+
```
|
56
|
+
survey_question = survey.survey_questions.first
|
57
|
+
survey_question.answer = 'poptarts'
|
58
|
+
survey_question.submit
|
59
|
+
```
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Poptart
|
2
|
+
class BooleanQuestion < Question
|
3
|
+
extend Poptart::Request
|
4
|
+
|
5
|
+
def self.create(text, freeform: false, absolute_index: nil, parent_question_id: nil)
|
6
|
+
super(text, responses: [true, false], freeform: freeform,
|
7
|
+
absolute_index: absolute_index, parent_question_id: parent_question_id)
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.question_type
|
11
|
+
'boolean'
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/poptart/question.rb
CHANGED
@@ -2,12 +2,25 @@ module Poptart
|
|
2
2
|
class Question < Model
|
3
3
|
extend Poptart::Request
|
4
4
|
|
5
|
-
attr_accessor :responses, :freeform
|
5
|
+
attr_accessor :responses, :freeform, :question_type, :absolute_index, :parent_question_id
|
6
6
|
|
7
7
|
def initialize(response)
|
8
8
|
super
|
9
9
|
@responses = params['responses']
|
10
10
|
@freeform = params['freeform']
|
11
|
+
@question_type = params['question_type']
|
12
|
+
@absolute_index = params['absolute_index']
|
13
|
+
@parent_question_id = params['parent_question_id']
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.create(text, responses: [], freeform: false, absolute_index: nil, parent_question_id: nil)
|
17
|
+
response = post(root.questions_url, question: { question_type: question_type,
|
18
|
+
responses: responses,
|
19
|
+
text: text,
|
20
|
+
freeform: freeform,
|
21
|
+
absolute_index: absolute_index,
|
22
|
+
parent_question_id: parent_question_id })
|
23
|
+
new(response)
|
11
24
|
end
|
12
25
|
|
13
26
|
def self.all(params = {})
|
data/lib/poptart/survey.rb
CHANGED
@@ -20,7 +20,9 @@ module Poptart
|
|
20
20
|
def add_question(question)
|
21
21
|
url = build_url(links.survey_questions.post.href)
|
22
22
|
response = post(url, { survey_question: { question_id: question.id } } )
|
23
|
-
response.status == 201
|
23
|
+
if response.status == 201
|
24
|
+
Poptart::SurveyQuestion.new(response).tap { |survey_question| survey_questions << survey_question }
|
25
|
+
end
|
24
26
|
end
|
25
27
|
|
26
28
|
def survey_question_for_id(id)
|
data/lib/poptart/user.rb
CHANGED
data/lib/poptart.rb
CHANGED
@@ -28,4 +28,7 @@ require_relative 'poptart/root'
|
|
28
28
|
require_relative 'poptart/survey'
|
29
29
|
require_relative 'poptart/survey_question'
|
30
30
|
require_relative 'poptart/question'
|
31
|
+
require_relative 'poptart/boolean_question'
|
32
|
+
require_relative 'poptart/multiple_response_question'
|
33
|
+
require_relative 'poptart/range_question'
|
31
34
|
require_relative 'poptart/user'
|
data/lib/version.rb
CHANGED
@@ -31,11 +31,9 @@ describe 'Answering survey questions' do
|
|
31
31
|
boolean_questions = Poptart::Question.all(type: 'boolean')
|
32
32
|
user = Poptart::User.create
|
33
33
|
survey = user.create_survey
|
34
|
-
survey.add_question(boolean_questions.first)
|
34
|
+
survey_question = survey.add_question(boolean_questions.first)
|
35
35
|
|
36
|
-
survey = user.survey_for_id(survey.id)
|
37
36
|
survey.survey_questions.count.should == 1
|
38
|
-
survey_question = survey.survey_questions.first
|
39
37
|
survey_question.responses.should == ['t', 'f']
|
40
38
|
survey_question.type.should == 'boolean'
|
41
39
|
|
@@ -51,11 +49,9 @@ describe 'Answering survey questions' do
|
|
51
49
|
question = questions.find { |question| question.responses.include?('At Home') }
|
52
50
|
user = Poptart::User.create
|
53
51
|
survey = user.create_survey
|
54
|
-
survey.add_question(question)
|
52
|
+
survey_question = survey.add_question(question)
|
55
53
|
|
56
|
-
survey = user.survey_for_id(survey.id)
|
57
54
|
survey.survey_questions.count.should == 1
|
58
|
-
survey_question = survey.survey_questions.first
|
59
55
|
survey_question.responses.should == ["At Home", "At Work", "In a car", "Other"]
|
60
56
|
survey_question.type.should == 'multiple'
|
61
57
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'retrieving answers' do
|
4
|
+
xit 'returns answers', :vcr, record: :all do
|
5
|
+
question = Poptart::BooleanQuestion.create(text: text)
|
6
|
+
user = Poptart::User.create
|
7
|
+
survey = user.create_survey
|
8
|
+
survey_question = survey.add_question(question)
|
9
|
+
survey_question.answer = true
|
10
|
+
survey_question.submit
|
11
|
+
|
12
|
+
second_survey = user.create_survey
|
13
|
+
second_survey_question = second_survey.add_question(question)
|
14
|
+
second_survey_question.answer = false
|
15
|
+
second_survey_question.submit
|
16
|
+
|
17
|
+
answers = question.answers
|
18
|
+
answers.first.answer.should == true
|
19
|
+
answers.created_at.should_not be_nil
|
20
|
+
|
21
|
+
answers.first.answer.should == false
|
22
|
+
answers.last.should_not be_nil
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'creating quesitons' do
|
4
|
+
it 'returns boolean question', :vcr do
|
5
|
+
question = Poptart::BooleanQuestion.create("Do you like poptarts?", freeform: true, absolute_index: 10, parent_question_id: 42)
|
6
|
+
question.should be
|
7
|
+
question.question_type.should == 'boolean'
|
8
|
+
question.responses.should =~ [true, false]
|
9
|
+
question.absolute_index.should == 10
|
10
|
+
question.parent_question_id.should == 42
|
11
|
+
question.freeform?.should be
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'returns multiple question', :vcr do
|
15
|
+
responses = ['Yes', 'No']
|
16
|
+
question = Poptart::MultipleResponseQuestion.create("Do you like poptarts?", responses: responses)
|
17
|
+
question.should be
|
18
|
+
question.question_type.should == 'multiple'
|
19
|
+
question.responses.should =~ ['Yes', 'No']
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'returns range question', :vcr do
|
23
|
+
responses = [0, 10]
|
24
|
+
question = Poptart::RangeResponseQuestion.create("Do you like poptarts?", responses: responses)
|
25
|
+
question.should be
|
26
|
+
question.question_type.should == 'range'
|
27
|
+
question.responses.should =~ [0, 10]
|
28
|
+
end
|
29
|
+
end
|