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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 51e0f75b30a939cea82b52d482f51d586b2287bf
4
- data.tar.gz: b1b3ec6398baa588562fe3add59bf73dc75fd2df
3
+ metadata.gz: e866e5a5e27b895fa5736f6563bf11a3ff32f88f
4
+ data.tar.gz: 53641259333474ad4dfc3caa9e0b4a28147aef84
5
5
  SHA512:
6
- metadata.gz: dbfc6a4f084112f76c30d8662fa8d38a14c1495f7217ed07ea6f90a5862d5711b9a107b28be326194649c593b1a637c495e86818e8f6174fe352d76555bdd1f8
7
- data.tar.gz: 6d727efd65dd0d2695af39da9d094d1ff5f7914c145e2b15ffd65b4dc4d6b291537e4c81eb4ac40ed57bd8e2d50e7ee5ca65a0b523a38bbb7e616931a5707e84
6
+ metadata.gz: dd84a6bd7702ffc6fe8e195a55e4bd9ee6756e704687cc0fbcf389920fb2f85284299406753067ceba0ad1569bbf697c14d26184e0a03f4ea8e10feb8765355a
7
+ data.tar.gz: 997bd36d34df9af9903805faa1359fec597fc5f1c1514124cc77363584b168d88560bb6ac6b8cb028f60e5c27f55fbca6a0cde7f25777081dd3c17144a2589a0
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- poptart (0.0.6)
4
+ poptart (0.0.7)
5
5
  activesupport
6
6
  addressable
7
7
  faraday
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(14)
15
- user.id # => 14
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
- user.survey_for_url #=> Do I want to get rid of this?
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
@@ -0,0 +1,9 @@
1
+ module Poptart
2
+ class MultipleResponseQuestion < Question
3
+ extend Poptart::Request
4
+
5
+ def self.question_type
6
+ 'multiple'
7
+ end
8
+ end
9
+ end
@@ -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 = {})
@@ -0,0 +1,9 @@
1
+ module Poptart
2
+ class RangeResponseQuestion < Question
3
+ extend Poptart::Request
4
+
5
+ def self.question_type
6
+ 'range'
7
+ end
8
+ end
9
+ end
@@ -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
@@ -38,11 +38,6 @@ module Poptart
38
38
  Poptart::Survey.new(response)
39
39
  end
40
40
 
41
- def survey_for_url(url)
42
- response = get(url)
43
- Survey.new.extend(SurveyRepresenter).from_json(response.body)
44
- end
45
-
46
41
  def survey_questions_for_question_id(question_id)
47
42
 
48
43
  end
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
@@ -1,3 +1,3 @@
1
1
  module Poptart
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -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).should be
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).should be
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