magazine 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/javascripts/magazine/application.js +13 -0
  6. data/app/assets/stylesheets/magazine/application.css +15 -0
  7. data/app/controllers/magazine/application_controller.rb +4 -0
  8. data/app/controllers/magazine/articles_controller.rb +56 -0
  9. data/app/controllers/magazine/articles_controller.rb~ +55 -0
  10. data/app/helpers/magazine/application_helper.rb +30 -0
  11. data/app/helpers/magazine/application_helper.rb~ +30 -0
  12. data/app/models/magazine/data.rb~ +40 -0
  13. data/app/models/magazine/rack.rb +40 -0
  14. data/app/models/magazine/rack.rb~ +40 -0
  15. data/app/views/layouts/magazine/application.html.erb +14 -0
  16. data/config/routes.rb +5 -0
  17. data/config/routes.rb~ +5 -0
  18. data/lib/magazine.rb +8 -0
  19. data/lib/magazine.rb~ +8 -0
  20. data/lib/magazine/engine.rb +12 -0
  21. data/lib/magazine/engine.rb~ +13 -0
  22. data/lib/magazine/version.rb +3 -0
  23. data/lib/tasks/magazine_tasks.rake +4 -0
  24. data/spec/dummy/README.rdoc +28 -0
  25. data/spec/dummy/Rakefile +6 -0
  26. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  27. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  28. data/spec/dummy/app/controllers/application_controller.rb +9 -0
  29. data/spec/dummy/app/controllers/application_controller.rb~ +5 -0
  30. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  31. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  32. data/spec/dummy/app/views/magazine/articles/index.html.erb +23 -0
  33. data/spec/dummy/app/views/magazine/articles/index.html.erb~ +23 -0
  34. data/spec/dummy/app/views/magazine/articles/shared/_list_article.html.erb +1 -0
  35. data/spec/dummy/app/views/magazine/articles/shared/_list_article.html.erb~ +1 -0
  36. data/spec/dummy/app/views/magazine/articles/shared/beans/_kilimanjaro.html.erb +1 -0
  37. data/spec/dummy/app/views/magazine/articles/shared/beans/_kilimanjaro.html.erb~ +0 -0
  38. data/spec/dummy/app/views/magazine/articles/shared/drip/_water.html.erb +1 -0
  39. data/spec/dummy/app/views/magazine/articles/shared/drip/_water.html.erb~ +0 -0
  40. data/spec/dummy/app/views/magazine/articles/show.html.erb +6 -0
  41. data/spec/dummy/app/views/magazine/articles/show.html.erb~ +6 -0
  42. data/spec/dummy/app/views/magazine/index.html.erb~ +7 -0
  43. data/spec/dummy/bin/bundle +3 -0
  44. data/spec/dummy/bin/rails +4 -0
  45. data/spec/dummy/bin/rake +4 -0
  46. data/spec/dummy/config.ru +4 -0
  47. data/spec/dummy/config/application.rb +23 -0
  48. data/spec/dummy/config/boot.rb +5 -0
  49. data/spec/dummy/config/database.yml +25 -0
  50. data/spec/dummy/config/environment.rb +5 -0
  51. data/spec/dummy/config/environments/development.rb +37 -0
  52. data/spec/dummy/config/environments/production.rb +78 -0
  53. data/spec/dummy/config/environments/test.rb +39 -0
  54. data/spec/dummy/config/initializers/assets.rb +8 -0
  55. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  56. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  57. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  58. data/spec/dummy/config/initializers/inflections.rb +16 -0
  59. data/spec/dummy/config/initializers/magazine.rb +1 -0
  60. data/spec/dummy/config/initializers/magazine.rb~ +0 -0
  61. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  62. data/spec/dummy/config/initializers/session_store.rb +3 -0
  63. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  64. data/spec/dummy/config/locales/en.yml +23 -0
  65. data/spec/dummy/config/magazine.yml +48 -0
  66. data/spec/dummy/config/magazine.yml~ +48 -0
  67. data/spec/dummy/config/routes.rb +3 -0
  68. data/spec/dummy/config/routes.rb~ +4 -0
  69. data/spec/dummy/config/secrets.yml +22 -0
  70. data/spec/dummy/db/test.sqlite3 +0 -0
  71. data/spec/dummy/log/development.log +0 -0
  72. data/spec/dummy/log/test.log +1180 -0
  73. data/spec/dummy/public/404.html +67 -0
  74. data/spec/dummy/public/422.html +67 -0
  75. data/spec/dummy/public/500.html +66 -0
  76. data/spec/dummy/public/favicon.ico +0 -0
  77. data/spec/dummy/tmp/cache/assets/test/sprockets/13ef700ed1b340ce31710c628c9b1506 +0 -0
  78. data/spec/dummy/tmp/cache/assets/test/sprockets/13fe41fee1fe35b49d145bcc06610705 +0 -0
  79. data/spec/dummy/tmp/cache/assets/test/sprockets/2f5173deea6c795b8fdde723bb4b63af +0 -0
  80. data/spec/dummy/tmp/cache/assets/test/sprockets/357970feca3ac29060c1e3861e2c0953 +0 -0
  81. data/spec/dummy/tmp/cache/assets/test/sprockets/3c36df6af1863f67917951036d1d7221 +0 -0
  82. data/spec/dummy/tmp/cache/assets/test/sprockets/5bf1895db17a04b83c2f8c9bd096ca85 +0 -0
  83. data/spec/dummy/tmp/cache/assets/test/sprockets/7f4ca612f398e7c52f7fd934cddbaa50 +0 -0
  84. data/spec/dummy/tmp/cache/assets/test/sprockets/b9d7ea8e2449bbec7d43b6518403dc6c +0 -0
  85. data/spec/dummy/tmp/cache/assets/test/sprockets/cffd775d018f68ce5dba1ee0d951a994 +0 -0
  86. data/spec/dummy/tmp/cache/assets/test/sprockets/d771ace226fc8215a3572e0aa35bb0d6 +0 -0
  87. data/spec/dummy/tmp/cache/assets/test/sprockets/ed792a88666afd4aff94594da589930e +0 -0
  88. data/spec/dummy/tmp/cache/assets/test/sprockets/f7cbd26ba1d28d48de824f0e94586655 +0 -0
  89. data/spec/features/magazine/articles_spec.rb +109 -0
  90. data/spec/features/magazine/articles_spec.rb~ +109 -0
  91. data/spec/models/magazine/data.rb~ +5 -0
  92. data/spec/models/magazine/data_spec.rb~ +12 -0
  93. data/spec/models/magazine/rack_spec.rb +173 -0
  94. data/spec/models/magazine/rack_spec.rb~ +173 -0
  95. data/spec/rails_helper.rb +38 -0
  96. data/spec/rails_helper.rb~ +39 -0
  97. data/spec/spec_helper.rb +85 -0
  98. data/spec/spec_helper.rb~ +86 -0
  99. metadata +306 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,109 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Magazine Articles' do
4
+ feature 'visit /:mount_point' do
5
+ scenario do
6
+ visit magazine_path
7
+ # Category list
8
+ expect(page).to have_content('ドリップ')
9
+ expect(page).to have_content('コーヒー豆')
10
+
11
+ # Article list
12
+ expect(page).to have_selector('img[src="/images/magazine/cover_photo.jpg"]')
13
+ expect(page).to have_content('All Articles')
14
+ expect(page).to have_content('ウォータードリップ')
15
+ expect(page).to have_content('ペーパードリップ')
16
+ expect(page).to have_content('ネルドリップ')
17
+ expect(page).to have_content('ブルーマウンテン')
18
+ expect(page).to have_content('コナ')
19
+ expect(page).to have_content('キリマンジャロ')
20
+ end
21
+ end
22
+
23
+ feature 'visit /:mount_point/:category_slug' do
24
+ context 'exist category' do
25
+ scenario do
26
+ visit magazine.category_index_path('drip')
27
+ # Category list
28
+ expect(page).to have_content('ドリップ')
29
+ expect(page).to have_content('コーヒー豆')
30
+
31
+ # Article list
32
+ expect(page).to have_selector('img[src="/images/magazine/drip/cover_photo.jpg"]')
33
+ expect(page).to have_content('ドリップ Articles')
34
+ expect(page).to have_content('ウォータードリップ')
35
+ expect(page).to have_content('ペーパードリップ')
36
+ expect(page).to have_content('ネルドリップ')
37
+ expect(page).to_not have_content('ブルーマウンテン')
38
+ expect(page).to_not have_content('コナ')
39
+ expect(page).to_not have_content('キリマンジャロ')
40
+ end
41
+ end
42
+
43
+ context 'not exist category' do
44
+ scenario do
45
+ expect {
46
+ visit magazine.category_index_path('foo')
47
+ }.to raise_error(ActionController::RoutingError)
48
+ end
49
+ end
50
+ end
51
+
52
+ feature 'visit /:mount_point/:category_slug/:article_slug' do
53
+ context 'exist article' do
54
+ context 'not in review' do
55
+ scenario do
56
+ visit magazine.article_path('drip', 'water')
57
+ expect(page).to have_content('ウォータードリップ')
58
+ expect(page).to have_content('専用の機材を用い水でコーヒーを抽出する方法。')
59
+ expect(page).to have_selector('img[src="/images/magazine/drip/water/thumbnail.jpg"]')
60
+ expect(page).to have_content('water drip content')
61
+ end
62
+ end
63
+
64
+ context 'in review' do
65
+ context 'success authorize' do
66
+ scenario do
67
+ expect {
68
+ visit magazine.article_path('beans', 'kilimanjaro')
69
+ }.to_not raise_error
70
+ end
71
+ end
72
+
73
+ context 'fail authorize' do
74
+ before do
75
+ class ::ApplicationController < ActionController::Base
76
+ private
77
+ def current_admin
78
+ false
79
+ end
80
+ end
81
+ end
82
+
83
+ after do
84
+ class ::ApplicationController < ActionController::Base
85
+ private
86
+ def current_admin
87
+ true
88
+ end
89
+ end
90
+ end
91
+
92
+ scenario do
93
+ expect {
94
+ visit magazine.article_path('beans', 'kilimanjaro')
95
+ }.to raise_error(ActionController::RoutingError)
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ context 'not exist article' do
102
+ scenario do
103
+ expect {
104
+ visit magazine.article_path('foo', 'water')
105
+ }.to raise_error(ActionController::RoutingError)
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,109 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Magazine Articles' do
4
+ feature 'visit /:mount_point' do
5
+ scenario do
6
+ visit magazine_path
7
+ # Category list
8
+ expect(page).to have_content('ドリップ')
9
+ expect(page).to have_content('コーヒー豆')
10
+
11
+ # Article list
12
+ expect(page).to have_selector('img[src="/images/magazine/cover_photo.jpg"]')
13
+ expect(page).to have_content('All Articles')
14
+ expect(page).to have_content('ウォータードリップ')
15
+ expect(page).to have_content('ペーパードリップ')
16
+ expect(page).to have_content('ネルドリップ')
17
+ expect(page).to have_content('ブルーマウンテン')
18
+ expect(page).to have_content('コナ')
19
+ expect(page).to have_content('キリマンジャロ')
20
+ end
21
+ end
22
+
23
+ feature 'visit /:mount_point/:category_slug' do
24
+ context 'exist category' do
25
+ scenario do
26
+ visit magazine.category_index_path('drip')
27
+ # Category list
28
+ expect(page).to have_content('ドリップ')
29
+ expect(page).to have_content('コーヒー豆')
30
+
31
+ # Article list
32
+ expect(page).to have_selector('img[src="/images/magazine/drip/cover_photo.jpg"]')
33
+ expect(page).to have_content('ドリップ Articles')
34
+ expect(page).to have_content('ウォータードリップ')
35
+ expect(page).to have_content('ペーパードリップ')
36
+ expect(page).to have_content('ネルドリップ')
37
+ expect(page).to_not have_content('ブルーマウンテン')
38
+ expect(page).to_not have_content('コナ')
39
+ expect(page).to_not have_content('キリマンジャロ')
40
+ end
41
+ end
42
+
43
+ context 'not exist category' do
44
+ scenario do
45
+ expect {
46
+ visit magazine.category_index_path('foo')
47
+ }.to raise_error(ActionController::RoutingError)
48
+ end
49
+ end
50
+ end
51
+
52
+ feature 'visit /:mount_point/:category_slug/:article_slug' do
53
+ context 'exist article' do
54
+ context 'not in review' do
55
+ scenario do
56
+ visit magazine.article_path('drip', 'water')
57
+ expect(page).to have_content('ウォータードリップ')
58
+ expect(page).to have_content('専用の機材を用い水でコーヒーを抽出する方法。')
59
+ expect(page).to have_selector('img[src="/images/magazine/drip/water/thumbnail.jpg"]')
60
+ expect(page).to have_content('water drip content')
61
+ end
62
+ end
63
+
64
+ context 'in review' do
65
+ context 'success authorize' do
66
+ scenario do
67
+ expect {
68
+ visit magazine.article_path('beans', 'kilimanjaro')
69
+ }.to_not raise_error
70
+ end
71
+ end
72
+
73
+ context 'fail authorize' do
74
+ before do
75
+ class ::ApplicationController < ActionController::Base
76
+ private
77
+ def current_admin
78
+ false
79
+ end
80
+ end
81
+ end
82
+
83
+ after do
84
+ class ::ApplicationController < ActionController::Base
85
+ private
86
+ def current_admin
87
+ true
88
+ end
89
+ end
90
+ end
91
+
92
+ scenario do
93
+ expect {
94
+ visit magazine.article_path('beans', 'kilimanjaro')
95
+ }.to raise_error(ActionController::RoutingError)
96
+ end
97
+ end
98
+ end
99
+ end
100
+
101
+ context 'not exist article' do
102
+ scenario do
103
+ expect {
104
+ visit magazine.article_path('foo', 'water')
105
+ }.to raise_error(ActionController::RoutingError)
106
+ end
107
+ end
108
+ end
109
+ end