ecm_tags 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/app/models/ecm/tags/tagging.rb +16 -0
  3. data/config/initializers/inject_taggable_concern.rb +6 -0
  4. data/config/locales/de.yml +18 -8
  5. data/config/locales/en.yml +21 -8
  6. data/lib/ecm/tags/configuration.rb +3 -3
  7. data/lib/ecm/tags/engine.rb +0 -7
  8. data/lib/ecm/tags/version.rb +1 -1
  9. data/lib/generators/ecm/tags/install/templates/initializer.rb +10 -5
  10. data/spec/dummy/README.rdoc +28 -0
  11. data/spec/dummy/Rakefile +6 -0
  12. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  13. data/spec/dummy/app/assets/javascripts/posts.js +2 -0
  14. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  15. data/spec/dummy/app/assets/stylesheets/posts.css +4 -0
  16. data/spec/dummy/app/assets/stylesheets/scaffold.css +56 -0
  17. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  18. data/spec/dummy/app/controllers/frontend_controller.rb +2 -0
  19. data/spec/dummy/app/controllers/posts_controller.rb +59 -0
  20. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  21. data/spec/dummy/app/helpers/posts_helper.rb +2 -0
  22. data/spec/dummy/app/models/post.rb +4 -0
  23. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  24. data/spec/dummy/app/views/posts/_form.html.erb +25 -0
  25. data/spec/dummy/app/views/posts/_post.html.erb +3 -0
  26. data/spec/dummy/app/views/posts/edit.html.erb +6 -0
  27. data/spec/dummy/app/views/posts/index.html.erb +29 -0
  28. data/spec/dummy/app/views/posts/new.html.erb +5 -0
  29. data/spec/dummy/app/views/posts/show.html.erb +14 -0
  30. data/spec/dummy/bin/bundle +3 -0
  31. data/spec/dummy/bin/rails +4 -0
  32. data/spec/dummy/bin/rake +4 -0
  33. data/spec/dummy/bin/setup +29 -0
  34. data/spec/dummy/config.ru +4 -0
  35. data/spec/dummy/config/application.rb +31 -0
  36. data/spec/dummy/config/boot.rb +5 -0
  37. data/spec/dummy/config/database.yml +25 -0
  38. data/spec/dummy/config/environment.rb +5 -0
  39. data/spec/dummy/config/environments/development.rb +41 -0
  40. data/spec/dummy/config/environments/production.rb +79 -0
  41. data/spec/dummy/config/environments/test.rb +42 -0
  42. data/spec/dummy/config/initializers/assets.rb +11 -0
  43. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  44. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  45. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  46. data/spec/dummy/config/initializers/inflections.rb +16 -0
  47. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  48. data/spec/dummy/config/initializers/session_store.rb +3 -0
  49. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  50. data/spec/dummy/config/locales/en.yml +23 -0
  51. data/spec/dummy/config/routes.rb +5 -0
  52. data/spec/dummy/config/secrets.yml +22 -0
  53. data/spec/dummy/db/development.sqlite3 +0 -0
  54. data/spec/dummy/db/migrate/20160212133931_create_ecm_tags_tags.ecm_tags.rb +11 -0
  55. data/spec/dummy/db/migrate/20160212133932_create_ecm_tags_taggings.ecm_tags.rb +18 -0
  56. data/spec/dummy/db/migrate/20160212134222_create_posts.rb +10 -0
  57. data/spec/dummy/db/schema.rb +41 -0
  58. data/spec/dummy/db/test.sqlite3 +0 -0
  59. data/spec/dummy/public/404.html +67 -0
  60. data/spec/dummy/public/422.html +67 -0
  61. data/spec/dummy/public/500.html +66 -0
  62. data/spec/dummy/public/favicon.ico +0 -0
  63. data/spec/dummy/spec/controllers/posts_controller_spec.rb +157 -0
  64. data/spec/dummy/spec/factories/posts.rb +6 -0
  65. data/spec/dummy/spec/helpers/posts_helper_spec.rb +15 -0
  66. data/spec/dummy/spec/models/post_spec.rb +5 -0
  67. data/spec/dummy/spec/requests/posts_spec.rb +10 -0
  68. data/spec/dummy/spec/routing/posts_routing_spec.rb +37 -0
  69. data/spec/dummy/spec/views/posts/edit.html.erb_spec.rb +20 -0
  70. data/spec/dummy/spec/views/posts/index.html.erb_spec.rb +22 -0
  71. data/spec/dummy/spec/views/posts/new.html.erb_spec.rb +20 -0
  72. data/spec/dummy/spec/views/posts/show.html.erb_spec.rb +16 -0
  73. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-Rk46EWcF9JNQvs4jamoC5UetyQe_Liydnzz339Ah5c.cache +2 -0
  74. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/-tiBAjaN_MhRxnGs10DJTQjnj4h1yRQkeejcmBYdwJo.cache +1 -0
  75. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/2Yi2yjcAHgeIXKOYmsGlDp7Jc9-YxdBAerr4uk4uO0Q.cache +0 -0
  76. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/3vFcUkP2kWu2iktHlcSC_OfjYi3u_BqXmoCf2gvEE2M.cache +0 -0
  77. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/4JaU4ZW9j_RMb-z_fzYbPLoZctdUv0Fzt3_U-gy3kAw.cache +1 -0
  78. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5Lly_CA8DZvPhQV2jDQx-Y6P_y3Ygra9t5jfSlGhHDA.cache +2 -0
  79. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5P-OzgUkwyAgoOv7CZL2UfSgs4rcG7DcMYr5WUkHaZc.cache +1 -0
  80. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/5TzYmONEI2HYkxGdPZU9iJFCuuoe70CB-i-w-KEHZv0.cache +2 -0
  81. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/6H66m5FQazePA0g_qkHvuCMPzaPtznXdj-yAWWUtPnw.cache +1 -0
  82. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/7C_O90lo1Yi2b0Ed9bpFF6gUVqTrK_4goAv2_cdLnSI.cache +1 -0
  83. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/8wkEYFnE3ZJ8vdlwNXJpFg1xc81ULuNYx7O-FuYA55w.cache +1 -0
  84. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/AAiF0geR48ctD2aHAqAVSLKQFWesFqJLP-ZGPId5wWM.cache +1 -0
  85. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ClUHQDSdna_TRtjSG_r6jD3hQEmJ_laO_2IDDTNafGw.cache +1 -0
  86. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DesJkeilWecg6a2hoWgP6KtHYFXVculbTQwOY824Ov0.cache +0 -0
  87. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/DmmfrCpXtt74Hr6NO54lxyOCDv6klnDyBqeDFR7oDU8.cache +2 -0
  88. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ETOLFW7z9GHBdRPSYUVj-RVoXPXxMmOc86KlwkUFXWM.cache +1 -0
  89. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/FQvx5zKlMSn1gKaT7Elj4CgsWHC-_8FYDN_VO0vyGH4.cache +0 -0
  90. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/I-Fn3is-YC5z6FFns4kf2DQWiNPmSh5FE6mqR4hNeqY.cache +1 -0
  91. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JAmHv7GyzaWXmLMT2CiP8pUuvPOX7gNlyP7DcId3xcA.cache +1 -0
  92. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/JIV6P9o3lv6AF-6_7Yd35SryD44vS_LPdThsYeXjgQk.cache +1 -0
  93. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/KB1t0DQJfRViGhML3u0NuVlVpQHjbFYWs_SrFvbXQB0.cache +1 -0
  94. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/M76cE2oAZjvfK9meOD0uCS1k5slLFYxmtLiMykNl1oY.cache +0 -0
  95. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/MWYCQbJoVG_HtuEyKiBNUM4zGAV9pVXr6uoxvtpixrE.cache +1 -0
  96. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/OI6uxGcnsKavdWTtwDAasU3wPx8QXhzBgV0X2n1KjMQ.cache +2 -0
  97. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Q8H_klVplUAUyXyRxcoz5K3HyirGXjwxQ9-6sTKm74U.cache +0 -0
  98. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/RSK82eed7XubPBRL-4jf0eOlKgtGg-ooQXrY0F4W194.cache +0 -0
  99. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/Z_pLuEtd8bZcpv5q0r6aYNl9SP4KClCsP-i0wAOelmM.cache +1 -0
  100. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/dlQOci5ZlcWlh7tHZpxpamNwe343IjDbezrfcPEcPw0.cache +3 -0
  101. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/egxIcSNP_AHgCIboNW03qbGhxwrCOcPqms6nGntC7Fs.cache +0 -0
  102. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/hZi1k6tpxxCGYxRe7zY74ItcOI8gZrREOpGuA8JSpGg.cache +2 -0
  103. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/i18WqDjAKooAMM0YPXJRMtHBycPcmo-BU8eoqXKyfPU.cache +0 -0
  104. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/jVD7-rQv89s_Pta-2_Sf9U7i8ao1gix2Lp90ISIkasA.cache +2 -0
  105. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/nWo2ysO8pNRVLI4LiUqzjyZyrU1cIxq20bSCDbgswdM.cache +2 -0
  106. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/ompUzgaB0qfmoE6djKuHjLjMYlToLX0_lb6iFwWPO0o.cache +2 -0
  107. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pEhaat2KBd5SrT7szC_8R1_6hK17FTpvoRFkmCRSD3M.cache +2 -0
  108. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pOoJAHtZ3sqU9_DaqDFTu0HPRhuSfgJDE8bdi9IVlI4.cache +1 -0
  109. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/pzyYjBHQiM-yOIhztKOpuHU7Jepq82zWJg-mzp5L418.cache +1 -0
  110. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wJMzpOMn4cGBbHRf1uOBEApoBZag48B9djjpFhAG8mE.cache +1 -0
  111. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/wafl6XJiIk4VCd-yj42MMaao0dyAqQSTSPn0YiXvElQ.cache +0 -0
  112. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/xuNJ32gKsrwphnFigSODyGeYqNKhBBSa49ffAXRJ8jg.cache +3 -0
  113. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zF3sNycdAc5fpqhKKmuKS2F2Zc-OkZ-T2Qiqq4ywang.cache +0 -0
  114. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zMHd1CpL0ukpIS90SExzXc3eTzMQreOm__lG4fVygp8.cache +1 -0
  115. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zPep_9K14vA0ICucNx5t8umt9e2caMo0jvNg80b4kJs.cache +1 -0
  116. data/spec/dummy/tmp/cache/assets/sprockets/v3.0/zt-2He-6ayIMtuqNcliVhJNUcEnCi6M39pTVaXV9VjA.cache +0 -0
  117. data/spec/factories/ecm_tags_taggings.rb +6 -0
  118. data/spec/factories/ecm_tags_tags.rb +6 -0
  119. data/spec/features/ecm/tags/search_spec.rb +19 -0
  120. data/spec/models/ecm/tags/tag_search_spec.rb +43 -0
  121. data/spec/rails_helper.rb +57 -0
  122. data/spec/spec_helper.rb +90 -0
  123. data/spec/support/capybara.rb +1 -0
  124. data/spec/support/factory_girl_rails.rb +5 -0
  125. data/spec/support/formulaic.rb +5 -0
  126. data/spec/support/shoulda_matchers.rb +8 -0
  127. metadata +120 -2
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :post do
3
+ title 'MyString'
4
+ body 'MyText'
5
+ end
6
+ end
@@ -0,0 +1,15 @@
1
+ require 'rails_helper'
2
+
3
+ # Specs in this file have access to a helper object that includes
4
+ # the PostsHelper. For example:
5
+ #
6
+ # describe PostsHelper do
7
+ # describe "string concat" do
8
+ # it "concats two strings with spaces" do
9
+ # expect(helper.concat_strings("this","that")).to eq("this that")
10
+ # end
11
+ # end
12
+ # end
13
+ RSpec.describe PostsHelper, type: :helper do
14
+ pending "add some examples to (or delete) #{__FILE__}"
15
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Post, type: :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,10 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'Posts', type: :request do
4
+ describe 'GET /posts' do
5
+ it 'works! (now write some real specs)' do
6
+ get posts_path
7
+ expect(response).to have_http_status(200)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,37 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe PostsController, type: :routing do
4
+ describe 'routing' do
5
+ it 'routes to #index' do
6
+ expect(get: '/posts').to route_to('posts#index')
7
+ end
8
+
9
+ it 'routes to #new' do
10
+ expect(get: '/posts/new').to route_to('posts#new')
11
+ end
12
+
13
+ it 'routes to #show' do
14
+ expect(get: '/posts/1').to route_to('posts#show', id: '1')
15
+ end
16
+
17
+ it 'routes to #edit' do
18
+ expect(get: '/posts/1/edit').to route_to('posts#edit', id: '1')
19
+ end
20
+
21
+ it 'routes to #create' do
22
+ expect(post: '/posts').to route_to('posts#create')
23
+ end
24
+
25
+ it 'routes to #update via PUT' do
26
+ expect(put: '/posts/1').to route_to('posts#update', id: '1')
27
+ end
28
+
29
+ it 'routes to #update via PATCH' do
30
+ expect(patch: '/posts/1').to route_to('posts#update', id: '1')
31
+ end
32
+
33
+ it 'routes to #destroy' do
34
+ expect(delete: '/posts/1').to route_to('posts#destroy', id: '1')
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'posts/edit', type: :view do
4
+ before(:each) do
5
+ @post = assign(:post, Post.create!(
6
+ title: 'MyString',
7
+ body: 'MyText'
8
+ ))
9
+ end
10
+
11
+ it 'renders the edit post form' do
12
+ render
13
+
14
+ assert_select 'form[action=?][method=?]', post_path(@post), 'post' do
15
+ assert_select 'input#post_title[name=?]', 'post[title]'
16
+
17
+ assert_select 'textarea#post_body[name=?]', 'post[body]'
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'posts/index', type: :view do
4
+ before(:each) do
5
+ assign(:posts, [
6
+ Post.create!(
7
+ title: 'Title',
8
+ body: 'MyText'
9
+ ),
10
+ Post.create!(
11
+ title: 'Title',
12
+ body: 'MyText'
13
+ )
14
+ ])
15
+ end
16
+
17
+ it 'renders a list of posts' do
18
+ render
19
+ assert_select 'tr>td', text: 'Title'.to_s, count: 2
20
+ assert_select 'tr>td', text: 'MyText'.to_s, count: 2
21
+ end
22
+ end
@@ -0,0 +1,20 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'posts/new', type: :view do
4
+ before(:each) do
5
+ assign(:post, Post.new(
6
+ title: 'MyString',
7
+ body: 'MyText'
8
+ ))
9
+ end
10
+
11
+ it 'renders new post form' do
12
+ render
13
+
14
+ assert_select 'form[action=?][method=?]', posts_path, 'post' do
15
+ assert_select 'input#post_title[name=?]', 'post[title]'
16
+
17
+ assert_select 'textarea#post_body[name=?]', 'post[body]'
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,16 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe 'posts/show', type: :view do
4
+ before(:each) do
5
+ @post = assign(:post, Post.create!(
6
+ title: 'Title',
7
+ body: 'MyText'
8
+ ))
9
+ end
10
+
11
+ it 'renders attributes in <p>' do
12
+ render
13
+ expect(rendered).to match(/Title/)
14
+ expect(rendered).to match(/MyText/)
15
+ end
16
+ end
@@ -0,0 +1,2 @@
1
+ "%����͹mm�
2
+ a�l�|a56���v�6}��(&5
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/application.css?type=text/css&pipeline=self&id=0d3a39f9094d99bd2be6d0078f3b017f17f96e897f4b6539038c71c6fc704922:ET
@@ -0,0 +1 @@
1
+ I"�/home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags/application.js?type=application/javascript&id=c3ecf71899c4bcb8d46cab08991f5a1d94f4289bb9b4714b8861e8ad0d49f875:ET
@@ -0,0 +1 @@
1
+ I"�/home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags/application.js?type=application/javascript&pipeline=self&id=d42395d5b88eae78e9b2723ecfdb90ed20a95033f32c8522ea59e393e2f5e044:ET
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"3file-digest://app/assets/stylesheets/posts.css;TT
@@ -0,0 +1 @@
1
+ "%��A�I8���߅�u7�!��H���j���\��|x
@@ -0,0 +1 @@
1
+ "%��a��lz�l��q�.{�S�a����@/�7�ź
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&pipeline=self&id=fb3f0c21729964ae0146c05968db640e6c11fb6452e2abe24f2e207422aed762:ET
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/application.js?type=application/javascript&id=1d878e109ec1fff0a4b0eb71966873fcf411450367b3b155c4c64436dd5fc562:ET
@@ -0,0 +1 @@
1
+ "%�W\�yho9S���ƫ˥��)|�~���(���
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"6file-digest://app/assets/stylesheets/scaffold.css;TT
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/scaffold.css?type=text/css&pipeline=self&id=7c5c0397060dfbb3080ab7f19d91adc68d9b9be205e7013d9176128d700d71c2:ET
@@ -0,0 +1 @@
1
+ "%Ѱč@�����6H�uZoX�Z�gbh0W��V
@@ -0,0 +1 @@
1
+ I"�app/assets/stylesheets/posts.css?type=text/css&pipeline=self&id=f9f00d3a7698bee097643a0536577b79f8e76f2ba421ad23226a4bf5d16c6b0c:ET
@@ -0,0 +1 @@
1
+ "%??Gɒ��RvTy���W��>�o!{���L�
@@ -0,0 +1 @@
1
+ I"}app/assets/stylesheets/application.css?type=text/css&id=05bfc66a47f2e2a7bf48b5aa25396d7090ce53e910757f1a67ba6bde4bf79176:ET
@@ -0,0 +1 @@
1
+ "%���q�{=1O�4���Hw�Aۯ��>��v
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"9file-digest://app/assets/stylesheets/application.css;TTI")file-digest://app/assets/stylesheets;TTI"3file-digest://app/assets/stylesheets/posts.css;TTI"6file-digest://app/assets/stylesheets/scaffold.css;TT
@@ -0,0 +1 @@
1
+ "%-����k�ŏ�5g�A��A]������pMt^7/�
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"bfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags/application.js;TTI"Sfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"8file-digest://app/assets/javascripts/application.js;TTI")file-digest://app/assets/javascripts;TTI"2file-digest://app/assets/javascripts/posts.js;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"bfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"Sfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/javascripts/ecm/tags;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"0processors:type=text/css&file_type=text/css;TTI"cfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags/application.css;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"Sfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"2file-digest://app/assets/javascripts/posts.js;TT
@@ -0,0 +1,2 @@
1
+ [o:Set:
2
+ @hash{ I"environment-version:ETTI"environment-paths;TTI"Lprocessors:type=application/javascript&file_type=application/javascript;TTI"8file-digest://app/assets/javascripts/application.js;TTI"Zprocessors:type=application/javascript&file_type=application/javascript&pipeline=self;TTI"2file-digest://app/assets/javascripts/posts.js;TTI")file-digest://app/assets/javascripts;TT
@@ -0,0 +1 @@
1
+ I"�/home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags/application.css?type=text/css&id=33196728942580a7d04aeabef8783126b1a06dc10f15399ee733d98093e91dd7:ET
@@ -0,0 +1 @@
1
+ "%��Rm�v�S3.��O�L���ڹc�ƕq�=_j�
@@ -0,0 +1 @@
1
+ I"�app/assets/javascripts/posts.js?type=application/javascript&pipeline=self&id=7073d8061e1566274393d9962e56125fd99d10d901079f0c712228841011920c:ET
@@ -0,0 +1,3 @@
1
+ [o:Set:
2
+ @hash{
3
+ I"environment-version:ETTI"environment-paths;TTI">processors:type=text/css&file_type=text/css&pipeline=self;TTI"cfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags/application.css;TTI"Sfile-digest:///home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags;TT
@@ -0,0 +1 @@
1
+ "%֧�NTZq�בH�L��#p3��Jg!��)
@@ -0,0 +1 @@
1
+ I"�/home/vagrant/rails/ecm/ecm_tags/app/assets/stylesheets/ecm/tags/application.css?type=text/css&pipeline=self&id=4d164f4e4f3b954b8ad3b1eea9a8356ba81b9231189ad1ee40a0b83f4a2cada0:ET
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :ecm_tags_tagging, class: Ecm::Tags::Tagging do
3
+ association :tag, factory: :ecm_tags_tag
4
+ context 'tags'
5
+ end
6
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :ecm_tags_tag, class: Ecm::Tags::Tag do
3
+ sequence(:name) { |i| "tag-name-#{i}" }
4
+ end
5
+ end
6
+
@@ -0,0 +1,19 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.feature 'Tag search', type: :feature do
4
+ background do
5
+ @post = create(:post)
6
+ @post.tag_list.add('foo, bar, baz')
7
+ @post.save!
8
+ end
9
+
10
+ scenario 'User searches for tags' do
11
+ visit '/tags'
12
+
13
+ fill_in 'tag_search[tag_list]', with: 'foo'
14
+ check 'tag_search[fuzzy]'
15
+ click_on submit(:tag_search)
16
+
17
+ expect(page).to have_text(@post.title)
18
+ end
19
+ end
@@ -0,0 +1,43 @@
1
+ require 'rails_helper'
2
+
3
+ module Ecm::Tags
4
+ describe TagSearch do
5
+ context 'instance' do
6
+ subject { Ecm::Tags::TagSearch.new }
7
+
8
+ it { expect(subject).to be_a(Ecm::Tags::TagSearch) }
9
+ end
10
+
11
+ context 'simple search' do
12
+ subject do
13
+ @post = create(:post)
14
+ @post.tag_list.add('foo')
15
+ @post.save!
16
+ Ecm::Tags::TagSearch.new(tag_list: 'foo').do_work
17
+ end
18
+
19
+ it 'should return a hash' do
20
+ expect(subject).to be_a(Hash)
21
+ end
22
+
23
+ it { expect(subject.keys).to include('Post') }
24
+ it { expect(subject['Post'].size).to eq(1) }
25
+ end
26
+
27
+ context 'fuzzy search' do
28
+ subject do
29
+ @post = create(:post)
30
+ @post.tag_list.add('foo')
31
+ @post.save!
32
+ Ecm::Tags::TagSearch.new(tag_list: 'f', fuzzy: true).do_work
33
+ end
34
+
35
+ it 'should return a hash' do
36
+ expect(subject).to be_a(Hash)
37
+ end
38
+
39
+ it { expect(subject.keys).to include('Post') }
40
+ it { expect(subject['Post'].size).to eq(1) }
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,57 @@
1
+ # This file is copied to spec/ when you run 'rails generate rspec:install'
2
+ ENV['RAILS_ENV'] ||= 'test'
3
+ require File.expand_path('../dummy/config/environment', __FILE__)
4
+ # Prevent database truncation if the environment is production
5
+ abort('The Rails environment is running in production mode!') if Rails.env.production?
6
+ require 'spec_helper'
7
+ require 'rspec/rails'
8
+ # Add additional requires below this line. Rails is not loaded until this point!
9
+
10
+ # Requires supporting ruby files with custom matchers and macros, etc, in
11
+ # spec/support/ and its subdirectories. Files matching `spec/**/*_spec.rb` are
12
+ # run as spec files by default. This means that files in spec/support that end
13
+ # in _spec.rb will both be required and run as specs, causing the specs to be
14
+ # run twice. It is recommended that you do not name files matching this glob to
15
+ # end with _spec.rb. You can configure this pattern with the --pattern
16
+ # option on the command line or in ~/.rspec, .rspec or `.rspec-local`.
17
+ #
18
+ # The following line is provided for convenience purposes. It has the downside
19
+ # of increasing the boot-up time by auto-requiring all files in the support
20
+ # directory. Alternatively, in the individual `*_spec.rb` files, manually
21
+ # require only the support files necessary.
22
+ #
23
+ Dir[Ecm::Tags::Engine.root.join('spec/support/**/*.rb')].each { |f| require f }
24
+
25
+ # Checks for pending migration and applies them before tests are run.
26
+ # If you are not using ActiveRecord, you can remove this line.
27
+ # ActiveRecord::Migration.maintain_test_schema!
28
+
29
+ RSpec.configure do |config|
30
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
31
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
32
+
33
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
34
+ # examples within a transaction, remove the following line or assign false
35
+ # instead of true.
36
+ config.use_transactional_fixtures = true
37
+
38
+ # RSpec Rails can automatically mix in different behaviours to your tests
39
+ # based on their file location, for example enabling you to call `get` and
40
+ # `post` in specs under `spec/controllers`.
41
+ #
42
+ # You can disable this behaviour by removing the line below, and instead
43
+ # explicitly tag your specs with their type, e.g.:
44
+ #
45
+ # RSpec.describe UsersController, :type => :controller do
46
+ # # ...
47
+ # end
48
+ #
49
+ # The different available types are documented in the features, such as in
50
+ # https://relishapp.com/rspec/rspec-rails/docs
51
+ config.infer_spec_type_from_file_location!
52
+
53
+ # Filter lines from Rails gems in backtraces.
54
+ config.filter_rails_from_backtrace!
55
+ # arbitrary gems may also be filtered via:
56
+ # config.filter_gems_from_backtrace("gem name")
57
+ end