active_record_survey_api 0.0.11 → 0.0.12

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: 9c173af6cea094f14c55fe9932d84b8caa4afc74
4
- data.tar.gz: 05d509216bbd05a2d3beb8abe1c182aeef6b8885
3
+ metadata.gz: 2e462167630331aaa6e6676953e57ea5002c556e
4
+ data.tar.gz: 4cd8e981aeff4966e3c441cbb8b540947e6c65ab
5
5
  SHA512:
6
- metadata.gz: a3fb3a5ffe1db338b18c24c2b212ed259cce9bb08a646359e1fee3a94dd6cc825bdef06df93ea694b986193e7a366eb0e49fa7fbfb3f80ca62e26fd181c30773
7
- data.tar.gz: 0b9b54ac7a32c1b4552d7b03b10a2bf6f193e7daba9b12936a3bc71576ee982ab14f9ee2a2a1bd3fc6b7748817d1cd831233dcebe9456b18291f5c9b51af2d14
6
+ metadata.gz: ee0605613c6950668fd6c98e43ad410a0ef5615a8ba72c887dfeb7dbdc05150bf743abb3c4c53549006d45869e07dd5f7dfca0a85dfd1db27b3feee5c03d6083
7
+ data.tar.gz: a7e639e26887d4f5376236f4570494ef236f4ad35038c73f0bef339917bf72a400cc0f9e2fb061103d06e6f0bd4de0ba00bb1adfcaf985022cf1099a98ca3d9a
@@ -0,0 +1,15 @@
1
+ require_dependency "active_record_survey_api/application_controller"
2
+
3
+ module Concerns
4
+ module Controllers
5
+ module NodeMapGroups
6
+ extend ActiveRecordSurveyApi::Concerns::Controllers::NodeMapGroups
7
+ end
8
+ end
9
+ end
10
+
11
+ module ActiveRecordSurveyApi
12
+ class NodeMapGroupsController < ApplicationController
13
+ include Concerns::Controllers::NodeMapGroups
14
+ end
15
+ end
data/config/routes.rb CHANGED
@@ -7,7 +7,9 @@ ActiveRecordSurveyApi::Engine.routes.draw do
7
7
  resources :questions do
8
8
  resources :answers
9
9
  end
10
+ resources :node_map_groups, as: "pages"
10
11
  end
12
+ resources :node_map_groups, as: "pages"
11
13
  resources :questions do
12
14
  resources :answers
13
15
 
@@ -0,0 +1,11 @@
1
+ class AddActiveRecordSurveyNodeMapGroup < ActiveRecord::Migration
2
+ def up
3
+ require "generators/active_record_survey/node_map_group/templates/migration_0.0.1"
4
+ AddActiveRecordSurveyNodeMapGroup.up
5
+ end
6
+
7
+ def down
8
+ require "generators/active_record_survey/node_map_group/templates/migration_0.0.1"
9
+ AddActiveRecordSurveyNodeMapGroup.down
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ class AddActiveRecordSurveyNodeMapGroupGlobalize < ActiveRecord::Migration
2
+ def up
3
+ ::ActiveRecordSurvey::NodeMapGroup.create_translation_table!(
4
+ :text => {
5
+ :type => :string,
6
+ :null => false,
7
+ :default => '',
8
+ }
9
+ )
10
+ end
11
+
12
+ def down
13
+ ::ActiveRecordSurvey::NodeMapGroup.drop_translation_table!
14
+ end
15
+ end
@@ -0,0 +1,54 @@
1
+ module ActiveRecordSurveyApi
2
+ module Concerns
3
+ module Controllers
4
+ module NodeMapGroups
5
+ extend ActiveSupport::Concern
6
+
7
+ def create
8
+ @node_map_group = new_node_map_group
9
+ @node_map_group.survey = @survey
10
+ @node_map_group.attributes = node_map_group_params
11
+ @node_map_group.save
12
+
13
+ if !@node_map_group.save
14
+ render json: JSONAPI::Serializer.serialize_errors(@node_map_group.errors), :status => 409
15
+ else
16
+ render json: serialize_model(@node_map_group, serializer: ActiveRecordSurveyApi::NodeMapGroupSerializer)
17
+ end
18
+ end
19
+
20
+ def all_node_map_groups
21
+ @survey.node_map_groups
22
+ end
23
+
24
+ def node_map_group_by_id(id)
25
+ ActiveRecordSurvey::NodeMapGroup.find(id)
26
+ end
27
+
28
+ def new_node_map_group(p = nil)
29
+ ActiveRecordSurvey::NodeMapGroup.new(p)
30
+ end
31
+
32
+ def json_params
33
+ ActionController::Parameters.new(JSON.parse(request.body.read))
34
+ end
35
+
36
+ def node_map_group_params
37
+ json_params.require(:node_map_group).permit(:text, questions: []).tap { |whitelisted|
38
+ whitelisted[:build_from_questions] = whitelisted[:questions] unless whitelisted[:questions].nil?
39
+
40
+ whitelisted.delete(:questions)
41
+ }
42
+ end
43
+
44
+ included do
45
+ before_filter :find_survey, :if => proc { |c| params[:survey_id].to_i > 0 }
46
+ end
47
+
48
+ def find_survey
49
+ self.instance_variable_set "@survey", ActiveRecordSurvey::Survey.find(params[:survey_id])
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,15 @@
1
+ module ActiveRecordSurveyApi
2
+ module Models
3
+ module NodeMapGroup
4
+ def self.included(base)
5
+ base.class_eval do
6
+ translates :text
7
+ end
8
+
9
+ def build_from_questions=questions
10
+ self.build_questions(questions)
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ module ActiveRecordSurveyApi
2
+ class NodeMapGroupSerializer < BaseSerializer
3
+
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module ActiveRecordSurveyApi
2
- VERSION = "0.0.11"
2
+ VERSION = "0.0.12"
3
3
  end
@@ -1,5 +1,6 @@
1
1
  require "http_accept_language"
2
2
  require "active_record_survey"
3
+ require "active_record_survey/node_map_group"
3
4
  require "globalize"
4
5
 
5
6
  require "active_record_survey_api/engine"
@@ -8,6 +9,7 @@ require "active_record_survey_api/concerns/controllers/surveys"
8
9
  require "active_record_survey_api/concerns/controllers/questions"
9
10
  require "active_record_survey_api/concerns/controllers/answers"
10
11
  require "active_record_survey_api/concerns/controllers/node_maps"
12
+ require "active_record_survey_api/concerns/controllers/node_map_groups"
11
13
  require "active_record_survey_api/concerns/controllers/nodes"
12
14
  require "active_record_survey_api/concerns/controllers/instances"
13
15
  require "active_record_survey_api/concerns/controllers/instance_nodes"
@@ -17,12 +19,14 @@ require "active_record_survey_api/models/node_map"
17
19
  require "active_record_survey_api/models/node/question"
18
20
  require "active_record_survey_api/models/node/answer"
19
21
  require "active_record_survey_api/models/instance"
22
+ require "active_record_survey_api/models/node_map_group"
20
23
 
21
24
  require "active_record_survey_api/serializers/base_serializer"
22
25
  require "active_record_survey_api/serializers/answer_serializer"
23
26
  require "active_record_survey_api/serializers/instance_serializer"
24
27
  require "active_record_survey_api/serializers/instance_node_serializer"
25
28
  require "active_record_survey_api/serializers/node_map_serializer"
29
+ require "active_record_survey_api/serializers/node_map_group_serializer"
26
30
  require "active_record_survey_api/serializers/node_serializer"
27
31
  require "active_record_survey_api/serializers/question_serializer"
28
32
  require "active_record_survey_api/serializers/survey_serializer"
@@ -36,6 +40,8 @@ ActiveRecordSurvey::Node::Question.send(:include, ActiveRecordSurveyApi::Models:
36
40
  ActiveRecordSurvey::Node::Answer.send(:include, ActiveRecordSurveyApi::Models::Node::Answer)
37
41
  ActiveRecordSurvey::Instance.send(:include, ActiveRecordSurveyApi::Models::Instance)
38
42
 
43
+ ActiveRecordSurvey::NodeMapGroup.send(:include, ActiveRecordSurveyApi::Models::NodeMapGroup)
44
+
39
45
  # Fallback support
40
46
  #require "i18n/backend/fallbacks"
41
47
  #I18n.fallbacks.map('es' => 'en')
@@ -0,0 +1,76 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveRecordSurveyApi::NodeMapGroupsController, :type => :controller, :node_map_groups_api => true do
4
+ routes { ActiveRecordSurveyApi::Engine.routes }
5
+
6
+ before(:each) do
7
+ I18n.locale = :en
8
+ request.headers[:HTTP_ACCEPT_LANGUAGE] = :en
9
+ @header_params = {
10
+ :CONTENT_TYPE => 'application/json',
11
+ :ACCEPT => 'application/json'
12
+ }
13
+ @survey = FactoryGirl.build(:pageable_survey)
14
+ @survey.save
15
+
16
+ @q1 = @survey.questions.select { |i| i.text == "Question #1" }.first
17
+ @q1_a1 = @q1.answers.select { |i| i.text == "Q1 Answer #1" }.first
18
+ @q1_a2 = @q1.answers.select { |i| i.text == "Q1 Answer #2" }.first
19
+
20
+ @q2 = @survey.questions.select { |i| i.text == "Question #2" }.first
21
+ @q2_a2 = @q2.answers.select { |i| i.text == "Q2 Answer #2" }.first
22
+
23
+ @q3 = @survey.questions.select { |i| i.text == "Question #3" }.first
24
+ @q3_a1 = @q3.answers.select { |i| i.text == "Q3 Answer #1" }.first
25
+ @q3_a2 = @q3.answers.select { |i| i.text == "Q3 Answer #2" }.first
26
+
27
+ @q4 = @survey.questions.select { |i| i.text == "Question #4" }.first
28
+ @q5 = @survey.questions.select { |i| i.text == "Question #5" }.first
29
+ end
30
+
31
+ describe "CREATE" do
32
+ describe "success" do
33
+ it 'should succeed for single questions' do
34
+ post :create,
35
+ {
36
+ :node_map_group => {
37
+ :questions => [
38
+ @q1.id,
39
+ ]
40
+ }
41
+ }.to_json, @header_params.merge(:survey_id => @survey.id)
42
+
43
+ expect(response.status).to eq(200)
44
+ end
45
+
46
+ it 'should succeed for multiple questions' do
47
+ post :create,
48
+ {
49
+ :node_map_group => {
50
+ :questions => [
51
+ @q3.id,
52
+ @q4.id,
53
+ ]
54
+ }
55
+ }.to_json, @header_params.merge(:survey_id => @survey.id)
56
+
57
+ expect(response.status).to eq(200)
58
+ end
59
+ end
60
+ describe "failure" do
61
+ it 'should fail when one of the questions branches' do
62
+ post :create,
63
+ {
64
+ :node_map_group => {
65
+ :questions => [
66
+ @q1.id,
67
+ @q2.id,
68
+ ]
69
+ }
70
+ }.to_json, @header_params.merge(:survey_id => @survey.id)
71
+
72
+ expect(response.status).to eq(409)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -40,6 +40,39 @@ module FactoryGirlSurveyHelpers
40
40
  q3_a1.build_link(q4)
41
41
  q3_a2.build_link(q4)
42
42
  end
43
+
44
+ def build_pageable_survey(survey)
45
+ q1 = survey.questions.build(:type => "ActiveRecordSurvey::Node::Question", :text => "Question #1", :survey => survey)
46
+ q1_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q1 Answer #1")
47
+ q1_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q1 Answer #2")
48
+ q1.build_answer(q1_a1)
49
+ q1.build_answer(q1_a2)
50
+
51
+ q2 = survey.questions.build(:type => "ActiveRecordSurvey::Node::Question", :text => "Question #2", :survey => survey)
52
+ q2_a1 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q2 Answer #1")
53
+ q2_a2 = ActiveRecordSurvey::Node::Answer::Boolean.new(:text => "Q2 Answer #2")
54
+ q2.build_answer(q2_a1)
55
+ q2.build_answer(q2_a2)
56
+
57
+ q3 = survey.questions.build(:type => "ActiveRecordSurvey::Node::Question", :text => "Question #3", :survey => survey)
58
+ q3_a1 = ActiveRecordSurvey::Node::Answer.new(:text => "Q3 Answer #1")
59
+ q3_a2 = ActiveRecordSurvey::Node::Answer.new(:text => "Q3 Answer #2")
60
+ q3.build_answer(q3_a1)
61
+ q3.build_answer(q3_a2)
62
+
63
+ q4 = survey.questions.build(:type => "ActiveRecordSurvey::Node::Question", :text => "Question #4", :survey => survey)
64
+
65
+ q5 = survey.questions.build(:type => "ActiveRecordSurvey::Node::Question", :text => "Question #5", :survey => survey)
66
+
67
+ q1_a1.build_link(q2)
68
+ q1_a2.build_link(q3)
69
+ q2_a2.build_link(q3)
70
+
71
+ q3_a1.build_link(q4)
72
+ q3_a2.build_link(q4)
73
+
74
+ q4.build_link(q5)
75
+ end
43
76
  end
44
77
 
45
78
  FactoryGirl.define do
@@ -50,4 +83,7 @@ FactoryGirl.define do
50
83
  factory :basic_survey, parent: :survey do |f|
51
84
  after(:build) { |survey| FactoryGirlSurveyHelpers.build_basic_survey(survey) }
52
85
  end
86
+ factory :pageable_survey, parent: :survey do |f|
87
+ after(:build) { |survey| FactoryGirlSurveyHelpers.build_pageable_survey(survey) }
88
+ end
53
89
  end
@@ -11,7 +11,24 @@
11
11
  #
12
12
  # It's strongly recommended that you check this file into your version control system.
13
13
 
14
- ActiveRecord::Schema.define(version: 20151002131904) do
14
+ ActiveRecord::Schema.define(version: 20160408032206) do
15
+
16
+ create_table "active_record_survey_api_node_map_group_translations", force: :cascade do |t|
17
+ t.integer "active_record_survey_api_node_map_group_id", null: false
18
+ t.string "locale", null: false
19
+ t.datetime "created_at", null: false
20
+ t.datetime "updated_at", null: false
21
+ t.string "text", default: "", null: false
22
+ end
23
+
24
+ add_index "active_record_survey_api_node_map_group_translations", ["active_record_survey_api_node_map_group_id"], name: "index_b498d8de7f6d8f1068770987d74f791d985628f2"
25
+ add_index "active_record_survey_api_node_map_group_translations", ["locale"], name: "index_ce3a77b5bc1f5d7186fb8462af6a4ead5150a0f7"
26
+
27
+ create_table "active_record_survey_api_node_map_groups", force: :cascade do |t|
28
+ t.integer "active_record_survey_id"
29
+ t.datetime "created_at", null: false
30
+ t.datetime "updated_at", null: false
31
+ end
15
32
 
16
33
  create_table "active_record_survey_instance_nodes", force: :cascade do |t|
17
34
  t.integer "active_record_survey_instance_id"
@@ -30,13 +47,14 @@ ActiveRecord::Schema.define(version: 20151002131904) do
30
47
  create_table "active_record_survey_node_maps", force: :cascade do |t|
31
48
  t.integer "active_record_survey_node_id"
32
49
  t.integer "parent_id"
33
- t.integer "lft", null: false
34
- t.integer "rgt", null: false
35
- t.integer "depth", default: 0, null: false
36
- t.integer "children_count", default: 0, null: false
50
+ t.integer "lft", null: false
51
+ t.integer "rgt", null: false
52
+ t.integer "depth", default: 0, null: false
53
+ t.integer "children_count", default: 0, null: false
37
54
  t.integer "active_record_survey_id"
38
- t.datetime "created_at", null: false
39
- t.datetime "updated_at", null: false
55
+ t.datetime "created_at", null: false
56
+ t.datetime "updated_at", null: false
57
+ t.integer "active_record_survey_api_node_map_group_id"
40
58
  end
41
59
 
42
60
  add_index "active_record_survey_node_maps", ["lft"], name: "index_active_record_survey_node_maps_on_lft"
Binary file
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_survey_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.11
4
+ version: 0.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Butch Marshall
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -44,14 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.37
47
+ version: 0.1.38
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.37
54
+ version: 0.1.38
55
+ - !ruby/object:Gem::Dependency
56
+ name: active_record_survey-node_map_group
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: 0.0.4
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: 0.0.4
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: globalize
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -192,16 +206,20 @@ files:
192
206
  - app/controllers/active_record_survey_api/application_controller.rb
193
207
  - app/controllers/active_record_survey_api/instance_nodes_controller.rb
194
208
  - app/controllers/active_record_survey_api/instances_controller.rb
209
+ - app/controllers/active_record_survey_api/node_map_groups_controller.rb
195
210
  - app/controllers/active_record_survey_api/questions_controller.rb
196
211
  - app/controllers/active_record_survey_api/surveys_controller.rb
197
212
  - app/helpers/active_record_survey_api/application_helper.rb
198
213
  - app/helpers/active_record_survey_api/surveys_helper.rb
199
214
  - config/routes.rb
200
215
  - db/migrate/20151002131904_add_globalize.rb
216
+ - db/migrate/20160408032133_add_active_record_survey_node_map_group.rb
217
+ - db/migrate/20160408032206_add_active_record_survey_node_map_group_globalize.rb
201
218
  - lib/active_record_survey_api.rb
202
219
  - lib/active_record_survey_api/concerns/controllers/answers.rb
203
220
  - lib/active_record_survey_api/concerns/controllers/instance_nodes.rb
204
221
  - lib/active_record_survey_api/concerns/controllers/instances.rb
222
+ - lib/active_record_survey_api/concerns/controllers/node_map_groups.rb
205
223
  - lib/active_record_survey_api/concerns/controllers/node_maps.rb
206
224
  - lib/active_record_survey_api/concerns/controllers/nodes.rb
207
225
  - lib/active_record_survey_api/concerns/controllers/questions.rb
@@ -212,10 +230,12 @@ files:
212
230
  - lib/active_record_survey_api/models/node/answer.rb
213
231
  - lib/active_record_survey_api/models/node/question.rb
214
232
  - lib/active_record_survey_api/models/node_map.rb
233
+ - lib/active_record_survey_api/models/node_map_group.rb
215
234
  - lib/active_record_survey_api/serializers/answer_serializer.rb
216
235
  - lib/active_record_survey_api/serializers/base_serializer.rb
217
236
  - lib/active_record_survey_api/serializers/instance_node_serializer.rb
218
237
  - lib/active_record_survey_api/serializers/instance_serializer.rb
238
+ - lib/active_record_survey_api/serializers/node_map_group_serializer.rb
219
239
  - lib/active_record_survey_api/serializers/node_map_serializer.rb
220
240
  - lib/active_record_survey_api/serializers/node_serializer.rb
221
241
  - lib/active_record_survey_api/serializers/question_serializer.rb
@@ -225,6 +245,7 @@ files:
225
245
  - spec/active_record_survey_api_spec.rb
226
246
  - spec/controllers/active_record_survey_api/surveys/instances/instance_nodes_spec.rb
227
247
  - spec/controllers/active_record_survey_api/surveys/instances_spec.rb
248
+ - spec/controllers/active_record_survey_api/surveys/node_map_groups_spec.rb
228
249
  - spec/controllers/active_record_survey_api/surveys/questions/answers_spec.rb
229
250
  - spec/controllers/active_record_survey_api/surveys/questions_spec.rb
230
251
  - spec/controllers/active_record_survey_api/surveys_spec.rb
@@ -4861,6 +4882,7 @@ test_files:
4861
4882
  - spec/controllers/active_record_survey_api/surveys/instances_spec.rb
4862
4883
  - spec/controllers/active_record_survey_api/surveys/instances/instance_nodes_spec.rb
4863
4884
  - spec/controllers/active_record_survey_api/surveys/questions/answers_spec.rb
4885
+ - spec/controllers/active_record_survey_api/surveys/node_map_groups_spec.rb
4864
4886
  - spec/controllers/active_record_survey_api/surveys/questions_spec.rb
4865
4887
  - spec/spec_helper.rb
4866
4888
  - spec/factories/active_record_survey/node/answer.rb