acts_as_commentable_more 1.0.0

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.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.gitignore +48 -0
  4. data/.travis.yml +23 -0
  5. data/CHANGELOG.rdoc +5 -0
  6. data/Gemfile +40 -0
  7. data/Gemfile.lock +212 -0
  8. data/LICENSE +22 -0
  9. data/MIT-LICENSE +20 -0
  10. data/README.rdoc +16 -0
  11. data/Rakefile +32 -0
  12. data/acts_as_commentable_more.gemspec +36 -0
  13. data/lib/acts_as_commentable_more/version.rb +3 -0
  14. data/lib/acts_as_commentable_more.rb +4 -0
  15. data/lib/comment_methods.rb +19 -0
  16. data/lib/commentable_methods.rb +68 -0
  17. data/lib/generators/commentable/USAGE +11 -0
  18. data/lib/generators/commentable/commentable_generator.rb +18 -0
  19. data/lib/generators/commentable/templates/comment.rb +17 -0
  20. data/lib/generators/commentable/templates/create_comments.rb +18 -0
  21. data/lib/tasks/acts_as_commentable_more_tasks.rake +4 -0
  22. data/test/acts_as_commentable_more_test.rb +7 -0
  23. data/test/dummy/README.rdoc +28 -0
  24. data/test/dummy/Rakefile +17 -0
  25. data/test/dummy/app/assets/images/.keep +0 -0
  26. data/test/dummy/app/assets/javascripts/application.js +13 -0
  27. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  28. data/test/dummy/app/controllers/application_controller.rb +5 -0
  29. data/test/dummy/app/controllers/concerns/.keep +0 -0
  30. data/test/dummy/app/helpers/application_helper.rb +2 -0
  31. data/test/dummy/app/mailers/.keep +0 -0
  32. data/test/dummy/app/models/.keep +0 -0
  33. data/test/dummy/app/models/admin.rb +2 -0
  34. data/test/dummy/app/models/comment.rb +17 -0
  35. data/test/dummy/app/models/concerns/.keep +0 -0
  36. data/test/dummy/app/models/custom_comment.rb +17 -0
  37. data/test/dummy/app/models/letter.rb +3 -0
  38. data/test/dummy/app/models/note.rb +3 -0
  39. data/test/dummy/app/models/post.rb +4 -0
  40. data/test/dummy/app/models/topic.rb +3 -0
  41. data/test/dummy/app/models/user.rb +2 -0
  42. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  43. data/test/dummy/bin/bundle +3 -0
  44. data/test/dummy/bin/rails +4 -0
  45. data/test/dummy/bin/rake +4 -0
  46. data/test/dummy/config/application.rb +35 -0
  47. data/test/dummy/config/boot.rb +5 -0
  48. data/test/dummy/config/database.travis.yml +18 -0
  49. data/test/dummy/config/environment.rb +5 -0
  50. data/test/dummy/config/environments/development.rb +37 -0
  51. data/test/dummy/config/environments/production.rb +78 -0
  52. data/test/dummy/config/environments/test.rb +39 -0
  53. data/test/dummy/config/initializers/assets.rb +8 -0
  54. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  55. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  56. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  57. data/test/dummy/config/initializers/inflections.rb +16 -0
  58. data/test/dummy/config/initializers/mime_types.rb +4 -0
  59. data/test/dummy/config/initializers/session_store.rb +3 -0
  60. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  61. data/test/dummy/config/locales/en.yml +23 -0
  62. data/test/dummy/config/routes.rb +56 -0
  63. data/test/dummy/config/secrets.yml +22 -0
  64. data/test/dummy/config.ru +4 -0
  65. data/test/dummy/db/migrate/20150113045806_create_posts.rb +9 -0
  66. data/test/dummy/db/migrate/20150113045817_create_admins.rb +9 -0
  67. data/test/dummy/db/migrate/20150113045831_create_users.rb +9 -0
  68. data/test/dummy/db/migrate/20150113065948_create_notes.rb +9 -0
  69. data/test/dummy/db/migrate/20150113074249_create_topics.rb +9 -0
  70. data/test/dummy/db/migrate/20150114052120_create_letters.rb +9 -0
  71. data/test/dummy/db/migrate/20150114100411_create_comments.rb +18 -0
  72. data/test/dummy/db/migrate/20150114100422_create_custom_comments.rb +18 -0
  73. data/test/dummy/db/schema.rb +86 -0
  74. data/test/dummy/lib/assets/.keep +0 -0
  75. data/test/dummy/log/.keep +0 -0
  76. data/test/dummy/public/404.html +67 -0
  77. data/test/dummy/public/422.html +67 -0
  78. data/test/dummy/public/500.html +66 -0
  79. data/test/dummy/public/favicon.ico +0 -0
  80. data/test/dummy/spec/acts_as_commentable_more_spec.rb +205 -0
  81. data/test/dummy/spec/factories/admins.rb +7 -0
  82. data/test/dummy/spec/factories/comments.rb +7 -0
  83. data/test/dummy/spec/factories/custom_comments.rb +7 -0
  84. data/test/dummy/spec/factories/letters.rb +7 -0
  85. data/test/dummy/spec/factories/notes.rb +7 -0
  86. data/test/dummy/spec/factories/posts.rb +7 -0
  87. data/test/dummy/spec/factories/topics.rb +7 -0
  88. data/test/dummy/spec/factories/users.rb +7 -0
  89. data/test/dummy/spec/models/admin_spec.rb +5 -0
  90. data/test/dummy/spec/models/custom_comment_spec.rb +5 -0
  91. data/test/dummy/spec/models/letter_spec.rb +5 -0
  92. data/test/dummy/spec/models/note_spec.rb +5 -0
  93. data/test/dummy/spec/models/post_spec.rb +5 -0
  94. data/test/dummy/spec/models/topic_spec.rb +5 -0
  95. data/test/dummy/spec/models/user_spec.rb +5 -0
  96. data/test/dummy/spec/rails_helper.rb +61 -0
  97. data/test/dummy/spec/spec_helper.rb +85 -0
  98. data/test/test_helper.rb +16 -0
  99. metadata +197 -0
@@ -0,0 +1,9 @@
1
+ class CreateTopics < ActiveRecord::Migration
2
+ def change
3
+ create_table :topics do |t|
4
+ t.string :title
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class CreateLetters < ActiveRecord::Migration
2
+ def change
3
+ create_table :letters do |t|
4
+ t.string :title
5
+
6
+ t.timestamps
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ class CreateComments < ActiveRecord::Migration
2
+ def change
3
+ enable_extension 'hstore'
4
+
5
+ create_table :comments do |t|
6
+ # t.string :title, :limit => 50, :default => ""
7
+ t.text :message
8
+ t.references :commentable, polymorphic: true
9
+ t.references :user, polymorphic: true, index: true
10
+ t.string :role, default: nil
11
+ t.hstore :related_attributes
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :comments, [:commentable_type, :commentable_id],
16
+ name: :index_comments_on_commentable_type_and_commentable_id
17
+ end
18
+ end
@@ -0,0 +1,18 @@
1
+ class CreateCustomComments < ActiveRecord::Migration
2
+ def change
3
+ enable_extension 'hstore'
4
+
5
+ create_table :custom_comments do |t|
6
+ # t.string :title, :limit => 50, :default => ""
7
+ t.text :message
8
+ t.references :custom_commentable, polymorphic: true
9
+ t.references :user, polymorphic: true, index: true
10
+ t.string :role, default: nil
11
+ t.hstore :related_attributes
12
+ t.timestamps
13
+ end
14
+
15
+ add_index :custom_comments, [:custom_commentable_type, :custom_commentable_id],
16
+ name: :index_custom_comments_on_commentable_type_and_commentable_id
17
+ end
18
+ end
@@ -0,0 +1,86 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20150114100422) do
15
+
16
+ # These are extensions that must be enabled in order to support this database
17
+ enable_extension "plpgsql"
18
+ enable_extension "hstore"
19
+
20
+ create_table "admins", force: true do |t|
21
+ t.string "name"
22
+ t.datetime "created_at"
23
+ t.datetime "updated_at"
24
+ end
25
+
26
+ create_table "comments", force: true do |t|
27
+ t.text "message"
28
+ t.integer "commentable_id"
29
+ t.string "commentable_type"
30
+ t.integer "user_id"
31
+ t.string "user_type"
32
+ t.string "role"
33
+ t.hstore "related_attributes"
34
+ t.datetime "created_at"
35
+ t.datetime "updated_at"
36
+ end
37
+
38
+ add_index "comments", ["commentable_type", "commentable_id"], name: "index_comments_on_commentable_type_and_commentable_id", using: :btree
39
+ add_index "comments", ["user_id", "user_type"], name: "index_comments_on_user_id_and_user_type", using: :btree
40
+
41
+ create_table "custom_comments", force: true do |t|
42
+ t.text "message"
43
+ t.integer "custom_commentable_id"
44
+ t.string "custom_commentable_type"
45
+ t.integer "user_id"
46
+ t.string "user_type"
47
+ t.string "role"
48
+ t.hstore "related_attributes"
49
+ t.datetime "created_at"
50
+ t.datetime "updated_at"
51
+ end
52
+
53
+ add_index "custom_comments", ["custom_commentable_type", "custom_commentable_id"], name: "index_custom_comments_on_commentable_type_and_commentable_id", using: :btree
54
+ add_index "custom_comments", ["user_id", "user_type"], name: "index_custom_comments_on_user_id_and_user_type", using: :btree
55
+
56
+ create_table "letters", force: true do |t|
57
+ t.string "title"
58
+ t.datetime "created_at"
59
+ t.datetime "updated_at"
60
+ end
61
+
62
+ create_table "notes", force: true do |t|
63
+ t.string "title"
64
+ t.datetime "created_at"
65
+ t.datetime "updated_at"
66
+ end
67
+
68
+ create_table "posts", force: true do |t|
69
+ t.string "title"
70
+ t.datetime "created_at"
71
+ t.datetime "updated_at"
72
+ end
73
+
74
+ create_table "topics", force: true do |t|
75
+ t.string "title"
76
+ t.datetime "created_at"
77
+ t.datetime "updated_at"
78
+ end
79
+
80
+ create_table "users", force: true do |t|
81
+ t.string "name"
82
+ t.datetime "created_at"
83
+ t.datetime "updated_at"
84
+ end
85
+
86
+ end
File without changes
File without changes
@@ -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,205 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe ActsAsCommentableMore do
4
+
5
+ describe "managed basic comment" do
6
+ it "add a comment" do
7
+ post = create(:post)
8
+ expect{post.comments.create(message: 'my message')}.to change(Comment, :count).by(1)
9
+ end
10
+
11
+ it "gets all comment" do
12
+ posts = create_list(:post, 2)
13
+ posts.each do |post|
14
+ 5.times { |i| post.comments.create(message: "message #{i}") }
15
+ expect(post.comments.count).to eq 5
16
+ end
17
+ expect(Comment.count).to eq 10
18
+ end
19
+
20
+ it "any role of user" do
21
+ post = create(:post)
22
+ admin = create(:admin)
23
+ user = create(:user)
24
+ user_comment = post.comments.create(message: 'my message', user: user)
25
+ admin_comment = post.comments.create(message: 'my message', user: admin)
26
+ expect(user_comment.user).to eq user
27
+ expect(admin_comment.user).to eq admin
28
+ end
29
+
30
+ describe "class helper" do
31
+ context "self.find_comments_by_user(user, role: nil)" do
32
+ before do
33
+ post_1 = create(:post)
34
+ post_2 = create(:post)
35
+ @admin = create(:admin)
36
+ @user = create(:user)
37
+ user_comment_post_1 = post_1.comments.create(message: 'my message', user: @user)
38
+ admin_comment_post_1 = post_1.comments.create(message: 'my message', user: @admin)
39
+ user_comment_post_2 = post_2.comments.create(message: 'my message', user: @user)
40
+ end
41
+
42
+ it "findby user and role=nil" do
43
+ Comment.find_comments_by_user(@user).each do |comment|
44
+ expect(comment.user).to eq @user
45
+ expect(comment.role).to eq 'comment'
46
+ end
47
+ Comment.find_comments_by_user(@admin).each do |comment|
48
+ expect(comment.user).to eq @admin
49
+ expect(comment.role).to eq 'comment'
50
+ end
51
+ end
52
+
53
+ it "find by user and role can find" do
54
+ Comment.find_comments_by_user(@user, :comment).each do |comment|
55
+ expect(comment.user).to eq @user
56
+ expect(comment.role).to eq 'comment'
57
+ end
58
+ Comment.find_comments_by_user(@admin, :comment).each do |comment|
59
+ expect(comment.user).to eq @admin
60
+ expect(comment.role).to eq 'comment'
61
+ end
62
+ end
63
+
64
+ it "find by user and role doesn't have" do
65
+ expect(Comment.find_comments_by_user(@user, :any_role).count).to eq 0
66
+ expect(Comment.find_comments_by_user(@admin, :any_role).count).to eq 0
67
+ end
68
+
69
+ end
70
+ end
71
+
72
+ end
73
+
74
+ describe "managed comments with association options :class_name and :as" do
75
+ it "add a comment" do
76
+ topic = create(:topic)
77
+ expect{topic.comments.create(message: 'my message')}.to change(CustomComment, :count).by(1)
78
+ end
79
+ it "gets all comment" do
80
+ topics = create_list(:topic, 2)
81
+ topics.each do |topic|
82
+ 5.times { |i| topic.comments.create(message: "message #{i}") }
83
+ expect(topic.comments.count).to eq 5
84
+ end
85
+ expect(CustomComment.count).to eq 10
86
+ end
87
+ it "any type of user" do
88
+ topic = create(:topic)
89
+ admin = create(:admin)
90
+ user = create(:user)
91
+ user_comment = topic.comments.create(message: 'my message', user: user)
92
+ admin_comment = topic.comments.create(message: 'my message', user: admin)
93
+ expect(user_comment.user).to eq user
94
+ expect(admin_comment.user).to eq admin
95
+ end
96
+ end
97
+
98
+ describe "managed comment that specific type" do
99
+ describe "socpe all_comments" do
100
+
101
+ it "default association options" do
102
+ note = create(:note)
103
+ 5.times { |i| note.private_comments.create(message: 'private message') }
104
+ 3.times { |i| note.publish_comments.create(message: 'publish message') }
105
+
106
+ other_note = create(:note)
107
+ 5.times { |i| other_note.private_comments.create(message: 'private message') }
108
+
109
+ expect(note.all_comments.count).to eq 8
110
+ end
111
+
112
+ it "custom association options" do
113
+ letter = create(:letter)
114
+ 5.times { |i| letter.hide_comments.create(message: 'hide message') }
115
+ 8.times { |i| letter.show_comments.create(message: 'show message') }
116
+
117
+ other_letter = create(:letter)
118
+ 5.times { |i| other_letter.show_comments.create(message: 'show message') }
119
+
120
+ expect(letter.all_comments.count).to eq 13
121
+ end
122
+
123
+ end
124
+
125
+ it "doesn't have comments association to get all comment" do
126
+ note = create(:note)
127
+ expect{ note.comments }.to raise_error(NoMethodError)
128
+ end
129
+
130
+ it "gets comment specific role by {role}_comments method" do
131
+ note = create(:note)
132
+ 5.times { |i| note.private_comments.create(message: 'private message') }
133
+ 3.times { |i| note.publish_comments.create(message: 'publish message') }
134
+ expect(note.private_comments.count).to eq 5
135
+ expect(note.publish_comments.count).to eq 3
136
+ end
137
+
138
+ it "add comment specific role" do
139
+ note = create(:note)
140
+
141
+ private_note = note.private_comments.build(message: 'private message')
142
+ expect{private_note.save}.to change(Comment, :count).by(1)
143
+ expect(private_note.role).to eq 'private'
144
+
145
+ publish_note = note.publish_comments.build(message: 'publish message')
146
+ expect{publish_note.save}.to change(Comment, :count).by(1)
147
+ expect(publish_note.role).to eq 'publish'
148
+ end
149
+
150
+ describe "class helper" do
151
+ context "self.find_comments_by_user(user, role: nil)" do
152
+ before do
153
+ note_1 = create(:note)
154
+ note_2 = create(:note)
155
+ @admin = create(:admin)
156
+ @user = create(:user)
157
+ user_private_comment_note_1 = note_1.private_comments.create(message: 'private message user', user: @user)
158
+ user_publish_comment_note_2 = note_2.publish_comments.create(message: 'publish message user', user: @user)
159
+ admin_comment_note_1 = note_1.publish_comments.create(message: 'publish message admin', user: @admin)
160
+ end
161
+
162
+ it "findby user and role=nil" do
163
+ Comment.find_comments_by_user(@user).each do |comment|
164
+ expect(comment.user).to eq @user
165
+ expect(comment.role).to eq('private').or eq('publish')
166
+ end
167
+ Comment.find_comments_by_user(@admin).each do |comment|
168
+ expect(comment.user).to eq @admin
169
+ expect(comment.role).to eq('private').or eq('publish')
170
+ end
171
+ end
172
+
173
+ it "find by user and role can find" do
174
+ Comment.find_comments_by_user(@user, :private).each do |comment|
175
+ expect(comment.user).to eq @user
176
+ expect(comment.role).to eq 'private'
177
+ end
178
+ Comment.find_comments_by_user(@admin, :publish).each do |comment|
179
+ expect(comment.user).to eq @admin
180
+ expect(comment.role).to eq 'publish'
181
+ end
182
+ end
183
+
184
+ it "find by user and role doesn't have" do
185
+ expect(Comment.find_comments_by_user(@user, :any_role).count).to eq 0
186
+ expect(Comment.find_comments_by_user(@admin, :any_role).count).to eq 0
187
+ end
188
+ end
189
+
190
+ end
191
+ end
192
+
193
+ describe "record related attributes" do
194
+ it "can update related_attributes feild with hash array" do
195
+ post = create(:post)
196
+ comment = post.comments.create(related_attributes: {user_id: 1, location_name: 'Thailand'})
197
+ expect(comment.related_attributes['user_id']).to eq nil
198
+ expect(comment.related_attributes['location_name']).to eq nil
199
+ expect(comment.related_attributes[:user_id]).to eq '1'
200
+ expect(comment.related_attributes[:location_name]).to eq 'Thailand'
201
+ end
202
+
203
+ end
204
+
205
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :admin do
5
+ sequence(:name) { |n| "my name #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :comment do
5
+ sequence(:message) { |n| "my massage #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :custom_comment do
5
+ sequence(:message) { |n| "my massage #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :letter do
5
+ sequence(:title) { |n| "my title #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :note do
5
+ sequence(:title) { |n| "my title #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :post do
5
+ sequence(:title) { |n| "my title #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :topic do
5
+ title "MyString"
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # Read about factories at https://github.com/thoughtbot/factory_girl
2
+
3
+ FactoryGirl.define do
4
+ factory :user do
5
+ sequence(:name) { |n| "my name #{n}" }
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Admin, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe CustomComment, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Letter, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Note, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ 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,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe Topic, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end
@@ -0,0 +1,5 @@
1
+ require 'rails_helper'
2
+
3
+ RSpec.describe User, :type => :model do
4
+ pending "add some examples to (or delete) #{__FILE__}"
5
+ end