comments: add uniqueness constraint on votes.
This commit is contained in:
@@ -0,0 +1,5 @@
|
|||||||
|
class AddUniqueUserIdIndexToCommentVotes < ActiveRecord::Migration[6.1]
|
||||||
|
def change
|
||||||
|
add_index :comment_votes, [:user_id, :comment_id], unique: true
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -5008,10 +5008,11 @@ CREATE INDEX index_comment_votes_on_user_id ON public.comment_votes USING btree
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: index_comments_on_created_at; Type: INDEX; Schema: public; Owner: -
|
-- Name: index_comment_votes_on_user_id_and_comment_id; Type: INDEX; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
|
|
||||||
CREATE INDEX index_comments_on_created_at ON public.comments USING btree (created_at);
|
CREATE UNIQUE INDEX index_comment_votes_on_user_id_and_comment_id ON public.comment_votes USING btree (user_id, comment_id);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: index_comments_on_body_index; Type: INDEX; Schema: public; Owner: -
|
-- Name: index_comments_on_body_index; Type: INDEX; Schema: public; Owner: -
|
||||||
@@ -5020,6 +5021,13 @@ CREATE INDEX index_comments_on_created_at ON public.comments USING btree (create
|
|||||||
CREATE INDEX index_comments_on_body_index ON public.comments USING gin (body_index);
|
CREATE INDEX index_comments_on_body_index ON public.comments USING gin (body_index);
|
||||||
|
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Name: index_comments_on_created_at; Type: INDEX; Schema: public; Owner: -
|
||||||
|
--
|
||||||
|
|
||||||
|
CREATE INDEX index_comments_on_created_at ON public.comments USING btree (created_at);
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
-- Name: index_comments_on_creator_id_and_post_id; Type: INDEX; Schema: public; Owner: -
|
-- Name: index_comments_on_creator_id_and_post_id; Type: INDEX; Schema: public; Owner: -
|
||||||
--
|
--
|
||||||
@@ -7883,6 +7891,7 @@ INSERT INTO "schema_migrations" (version) VALUES
|
|||||||
('20210108030724'),
|
('20210108030724'),
|
||||||
('20210110015410'),
|
('20210110015410'),
|
||||||
('20210110090656'),
|
('20210110090656'),
|
||||||
('20210115015308');
|
('20210115015308'),
|
||||||
|
('20210123112752');
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,15 @@ class CommentVoteTest < ActiveSupport::TestCase
|
|||||||
should validate_inclusion_of(:score).in_array([-1, 1]).with_message("must be 1 or -1")
|
should validate_inclusion_of(:score).in_array([-1, 1]).with_message("must be 1 or -1")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
should "not allow creating duplicate votes" do
|
||||||
|
v1 = create(:comment_vote, comment: @comment, user: @user)
|
||||||
|
v2 = build(:comment_vote, comment: @comment, user: @user)
|
||||||
|
|
||||||
|
assert_raise(ActiveRecord::RecordNotUnique) do
|
||||||
|
v2.save(validate: false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "creating" do
|
context "creating" do
|
||||||
context "an upvote" do
|
context "an upvote" do
|
||||||
should "increment the comment's score" do
|
should "increment the comment's score" do
|
||||||
|
|||||||
Reference in New Issue
Block a user