tasuku 0.1.1 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/app/controllers/tasuku/taskables/code/responses_controller.rb +32 -0
  4. data/app/controllers/tasuku/taskables/questions/answers_controller.rb +1 -0
  5. data/app/helpers/tasuku/url_helper.rb +11 -0
  6. data/app/models/tasuku/task.rb +1 -0
  7. data/app/models/tasuku/task_requirement.rb +5 -0
  8. data/app/models/tasuku/taskables/code/request.rb +7 -0
  9. data/app/models/tasuku/taskables/code/response.rb +22 -0
  10. data/app/models/tasuku/taskables/code.rb +7 -0
  11. data/app/models/tasuku/taskables/question/option.rb +1 -0
  12. data/app/views/tasuku/taskables/_illustration.html.erb +7 -0
  13. data/app/views/tasuku/taskables/code/requests/_request.html.erb +9 -0
  14. data/app/views/tasuku/taskables/code/responses/_form.html.erb +5 -0
  15. data/app/views/tasuku/taskables/image/requests/_request.html.erb +1 -3
  16. data/app/views/tasuku/taskables/questions/_question.html.erb +2 -3
  17. data/app/views/tasuku/taskables/questions/answers/_form.html.erb +3 -1
  18. data/app/views/tasuku/taskables/text/requests/_request.html.erb +1 -3
  19. data/app/views/tasuku/taskables/url/requests/_request.html.erb +1 -3
  20. data/config/locales/en.yml +155 -11
  21. data/config/locales/nb.yml +14 -4
  22. data/config/routes.rb +6 -0
  23. data/db/migrate/20140611084458_add_video_urls.rb +8 -0
  24. data/db/migrate/20140813073552_create_tasuku_taskables_code_requests.rb +10 -0
  25. data/db/migrate/20140813075643_create_tasuku_taskables_code_responses.rb +11 -0
  26. data/db/migrate/20140813080116_add_reply_to_option.rb +5 -0
  27. data/db/migrate/20140910112050_create_tasuku_task_requirements.rb +10 -0
  28. data/db/migrate/20140926105940_add_description_to_code_requests.rb +5 -0
  29. data/lib/tasuku/concerns/illustratable.rb +3 -0
  30. data/lib/tasuku/concerns/models/requirables/inverse_requirable.rb +12 -0
  31. data/lib/tasuku/concerns/models/requirables/requirable.rb +35 -0
  32. data/lib/tasuku/concerns/models/requirables.rb +4 -0
  33. data/lib/tasuku/concerns/models/taskables/code/request.rb +19 -0
  34. data/lib/tasuku/concerns/models/taskables/code.rb +3 -0
  35. data/lib/tasuku/concerns/models/taskables.rb +1 -0
  36. data/lib/tasuku/concerns/models.rb +1 -0
  37. data/lib/tasuku/seeds.rb +3 -0
  38. data/lib/tasuku/version.rb +1 -1
  39. data/spec/controllers/tasuku/taskables/code/responses_controller_spec.rb +38 -0
  40. data/spec/controllers/tasuku/taskables/questions/answers_controller_spec.rb +21 -0
  41. data/spec/dummy/app/controllers/application_controller.rb +1 -0
  42. data/spec/dummy/config/routes.rb +2 -1
  43. data/spec/dummy/db/development.sqlite3 +0 -0
  44. data/spec/dummy/db/schema.rb +30 -1
  45. data/spec/dummy/db/seeds.rb +1 -1
  46. data/spec/dummy/db/test.sqlite3 +0 -0
  47. data/spec/dummy/log/development.log +7584 -57
  48. data/spec/dummy/log/test.log +37002 -13558
  49. data/spec/dummy/public/uploads/{tasks/taskables/image/request/image/1 → tasuku/taskables/image/request/image/2}/doge.jpg +0 -0
  50. data/spec/dummy/public/uploads/{tasks/taskables/image/response/image/1 → tasuku/taskables/question/image/2}/doge.jpg +0 -0
  51. data/spec/dummy/public/uploads/{tasks/taskables/question/image/1 → tasuku/taskables/text/request/image/2}/doge.jpg +0 -0
  52. data/spec/dummy/public/uploads/{tasks/taskables/text/request/image/1 → tasuku/taskables/url/request/image/2}/doge.jpg +0 -0
  53. data/spec/dummy/tmp/cache/assets/development/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  54. data/spec/dummy/tmp/cache/assets/development/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  55. data/spec/dummy/tmp/cache/assets/development/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  56. data/spec/dummy/tmp/cache/assets/development/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  57. data/spec/dummy/tmp/cache/assets/development/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  58. data/spec/dummy/tmp/cache/assets/development/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  59. data/spec/factories/tasuku_responses.rb +6 -0
  60. data/spec/factories/tasuku_task_requirements.rb +8 -0
  61. data/spec/factories/tasuku_taskables_code_requests.rb +8 -0
  62. data/spec/factories/tasuku_taskables_code_responses.rb +6 -0
  63. data/spec/factories/tasuku_taskables_question_options.rb +1 -0
  64. data/spec/models/tasuku/task_requirement_spec.rb +9 -0
  65. data/spec/models/tasuku/task_spec.rb +42 -0
  66. data/spec/models/tasuku/taskables/code/request_spec.rb +6 -0
  67. data/spec/models/tasuku/taskables/code/response_spec.rb +27 -0
  68. data/spec/spec_helper.rb +4 -0
  69. data/spec/support/shared_examples_for_redirectable.rb +9 -0
  70. data/spec/views/tasuku/taskables/code/requests/_request.html.erb_spec.rb +5 -0
  71. data/spec/views/tasuku/taskables/illustration_spec.rb +19 -0
  72. data/spec/views/tasuku/taskables/image/requests/_request.html.erb_spec.rb +8 -9
  73. data/spec/views/tasuku/taskables/questions/_question.html.erb_spec.rb +8 -9
  74. data/spec/views/tasuku/taskables/text/requests/_request.html.erb_spec.rb +8 -9
  75. data/spec/views/tasuku/taskables/url/requests/_request.html.erb_spec.rb +8 -9
  76. metadata +110 -31
  77. data/lib/tasks/concerns/models/taskables/image.rb +0 -3
  78. data/lib/tasks/concerns/models/taskables/text.rb +0 -3
  79. data/lib/tasks/concerns/models/taskables/url.rb +0 -3
  80. data/lib/tasks/concerns/models/taskables.rb +0 -7
  81. data/lib/tasks/concerns/models.rb +0 -4
  82. data/spec/dummy/public/uploads/tasks/taskables/url/request/image/1/doge.jpg +0 -0
  83. data/spec/dummy/public/uploads/tmp/1402401935-55786-0961/doge.jpg +0 -0
  84. data/spec/dummy/public/uploads/tmp/1402401935-55786-2854/doge.jpg +0 -0
  85. data/spec/dummy/public/uploads/tmp/1402402180-56033-5455/doge.jpg +0 -0
  86. data/spec/dummy/public/uploads/tmp/1402402180-56033-5512/doge.jpg +0 -0
  87. data/spec/factories/tasks_taskables_taskable_responses.rb +0 -8
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ module Tasuku
4
+ describe Taskables::Code::ResponsesController do
5
+ routes { Tasuku::Engine.routes }
6
+
7
+ describe "POST 'create'" do
8
+ it 'routes' do
9
+ expect(post: '/code/requests/1/responses').to route_to(
10
+ action: 'create',
11
+ controller: 'tasuku/taskables/code/responses',
12
+ request_id: '1'
13
+ )
14
+ end
15
+
16
+ context 'with a response' do
17
+ let(:user) { create :user }
18
+ let(:code_request) { create :code_request, code: '1337' }
19
+ let(:params) { { request_id: code_request.id, taskables_code_response: { code: '1337' } } }
20
+
21
+ before { request.env['HTTP_REFERER'] = 'http://example.org' }
22
+ before { expect(subject).to receive(:current_user).and_return(user) }
23
+
24
+ it_behaves_like 'redirectable' do
25
+ let(:action) { :create }
26
+ let(:verb) { :post }
27
+ end
28
+
29
+ it 'creates a new response' do
30
+ post :create, params
31
+
32
+ expect(code_request.responses.count).to eq 1
33
+ expect(code_request.responses.first.code).to eq '1337'
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -33,6 +33,27 @@ module Tasuku
33
33
  expect(question.answers.count).to eq 1
34
34
  end
35
35
  end
36
+
37
+ context 'no answers' do
38
+ let(:user) { create :user }
39
+ let(:question) { create :question }
40
+ let(:params) { { question_id: question.id } }
41
+
42
+ before { request.env['HTTP_REFERER'] = 'http://example.org' }
43
+ before { post :create, params }
44
+
45
+ it 'does not create a new answer' do
46
+ expect(question.answers.count).to be_zero
47
+ end
48
+
49
+ it 'redirects back' do
50
+ expect(response).to redirect_to 'http://example.org'
51
+ end
52
+
53
+ it 'renders an alert' do
54
+ expect(flash[:alert]).to eq I18n.t('tasuku.taskables.questions.answers.no_answers')
55
+ end
56
+ end
36
57
  end
37
58
 
38
59
  end
@@ -4,4 +4,5 @@ class ApplicationController < ActionController::Base
4
4
  protect_from_forgery with: :exception
5
5
 
6
6
  include ApplicationHelper
7
+ include Tasuku::UrlHelper
7
8
  end
@@ -1,4 +1,5 @@
1
1
  Rails.application.routes.draw do
2
+ mount Tasks::Engine => "/"
2
3
 
3
- mount Tasks::Engine => "/tasks"
4
+ get "/", to: "application#test", as: :test
4
5
  end
Binary file
@@ -11,19 +11,44 @@
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: 20140610121130) do
14
+ ActiveRecord::Schema.define(version: 20140926105940) do
15
15
 
16
16
  create_table "articles", force: true do |t|
17
17
  t.datetime "created_at"
18
18
  t.datetime "updated_at"
19
19
  end
20
20
 
21
+ create_table "tasuku_task_requirements", force: true do |t|
22
+ t.integer "task_id"
23
+ t.integer "requirement_id"
24
+ t.datetime "created_at"
25
+ t.datetime "updated_at"
26
+ end
27
+
28
+ create_table "tasuku_taskables_code_requests", force: true do |t|
29
+ t.string "text"
30
+ t.string "code"
31
+ t.datetime "created_at"
32
+ t.datetime "updated_at"
33
+ t.text "description"
34
+ end
35
+
36
+ create_table "tasuku_taskables_code_responses", force: true do |t|
37
+ t.string "code"
38
+ t.integer "request_id"
39
+ t.integer "author_id"
40
+ t.string "author_type"
41
+ t.datetime "created_at"
42
+ t.datetime "updated_at"
43
+ end
44
+
21
45
  create_table "tasuku_taskables_image_requests", force: true do |t|
22
46
  t.text "text"
23
47
  t.datetime "created_at"
24
48
  t.datetime "updated_at"
25
49
  t.text "description"
26
50
  t.string "image"
51
+ t.string "video_url"
27
52
  end
28
53
 
29
54
  create_table "tasuku_taskables_image_responses", force: true do |t|
@@ -53,6 +78,7 @@ ActiveRecord::Schema.define(version: 20140610121130) do
53
78
  t.datetime "created_at"
54
79
  t.datetime "updated_at"
55
80
  t.boolean "correct", default: false
81
+ t.text "reply"
56
82
  end
57
83
 
58
84
  add_index "tasuku_taskables_question_options", ["question_id"], name: "index_tasuku_taskables_question_options_on_question_id"
@@ -75,6 +101,7 @@ ActiveRecord::Schema.define(version: 20140610121130) do
75
101
  t.boolean "multiple"
76
102
  t.boolean "show_statistics", default: true
77
103
  t.string "image"
104
+ t.string "video_url"
78
105
  end
79
106
 
80
107
  create_table "tasuku_taskables_taskable_responses", force: true do |t|
@@ -95,6 +122,7 @@ ActiveRecord::Schema.define(version: 20140610121130) do
95
122
  t.datetime "created_at"
96
123
  t.datetime "updated_at"
97
124
  t.string "image"
125
+ t.string "video_url"
98
126
  end
99
127
 
100
128
  create_table "tasuku_taskables_text_responses", force: true do |t|
@@ -114,6 +142,7 @@ ActiveRecord::Schema.define(version: 20140610121130) do
114
142
  t.datetime "created_at"
115
143
  t.datetime "updated_at"
116
144
  t.string "image"
145
+ t.string "video_url"
117
146
  end
118
147
 
119
148
  create_table "tasuku_taskables_url_responses", force: true do |t|
@@ -1,3 +1,3 @@
1
- require "tasks/seeds"
1
+ require "tasuku/seeds"
2
2
 
3
3
  User.create!
Binary file