From d38c42306504953100c809fec9772a23c0f91a10 Mon Sep 17 00:00:00 2001 From: albert Date: Wed, 6 Mar 2013 19:24:58 -0500 Subject: [PATCH] add test cases --- app/logical/post_query_builder.rb | 4 ++-- db/structure.sql | 16 ++++++++++++++++ test/unit/post_test.rb | 14 ++++++++++++++ 3 files changed, 32 insertions(+), 2 deletions(-) diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 78a6aff3f..59b628bea 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -149,9 +149,9 @@ class PostQueryBuilder relation = relation.where("(posts.source = '' OR posts.source IS NULL)") elsif q[:source] =~ /^(pixiv\/|%\.?pixiv(\.net(\/img)?)?(%\/|(?=%$)))(.+)$/ if $5 == "%" - relation = relation.where("substring(posts.source, 'pixiv.net/img.*/([^/]*/[^/]*)$') IS NOT NULL") + relation = relation.where("substring(posts.source, 'pixiv.net/img.*/([^/]*/[^/]*)$') IS NOT NULL") else - relation = relation.where("substring(posts.source, 'pixiv.net/img.*/([^/]*/[^/]*)$') LIKE ? ESCAPE E'\\\\'", $5) + relation = relation.where("substring(posts.source, 'pixiv.net/img.*/([^/]*/[^/]*)$') LIKE ? ESCAPE E'\\\\'", $5) end has_constraints! else diff --git a/db/structure.sql b/db/structure.sql index f486d06bb..cc14ee26a 100644 --- a/db/structure.sql +++ b/db/structure.sql @@ -5851,6 +5851,20 @@ CREATE INDEX index_posts_on_mpixels ON posts USING btree (((((image_width * imag CREATE INDEX index_posts_on_parent_id ON posts USING btree (parent_id); +-- +-- Name: index_posts_on_pixiv_id; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_posts_on_pixiv_id ON posts USING btree ((("substring"((source)::text, 'pixiv.net/img.*/([0-9]+)[^/]*$'::text))::integer)); + + +-- +-- Name: index_posts_on_pixiv_suffix; Type: INDEX; Schema: public; Owner: -; Tablespace: +-- + +CREATE INDEX index_posts_on_pixiv_suffix ON posts USING btree ("substring"((source)::text, 'pixiv.net/img.*/([^/]*/[^/]*)$'::text) text_pattern_ops); + + -- -- Name: index_posts_on_source; Type: INDEX; Schema: public; Owner: -; Tablespace: -- @@ -6210,4 +6224,6 @@ INSERT INTO schema_migrations (version) VALUES ('20130221035518'); INSERT INTO schema_migrations (version) VALUES ('20130221214811'); +INSERT INTO schema_migrations (version) VALUES ('20130302214500'); + INSERT INTO schema_migrations (version) VALUES ('20130305005138'); \ No newline at end of file diff --git a/test/unit/post_test.rb b/test/unit/post_test.rb index 139a71937..712d723a7 100644 --- a/test/unit/post_test.rb +++ b/test/unit/post_test.rb @@ -856,6 +856,12 @@ class PostTest < ActiveSupport::TestCase assert_equal(1, relation.count) assert_equal(post1.id, relation.first.id) end + + should "return posts for the metatag" do + post = FactoryGirl.create(:post, :source => "http://i1.pixiv.net/img123/img/artist-name/789.png") + assert_equal(1, Post.tag_match("pixiv:789").count) + assert_equal(0, Post.tag_match("pixiv:790").count) + end should "return posts for a list of md5 hashes" do post1 = FactoryGirl.create(:post, :md5 => "abcd") @@ -874,6 +880,14 @@ class PostTest < ActiveSupport::TestCase assert_equal(1, relation.count) assert_equal(post2.id, relation.first.id) end + + should "return posts for a pixiv source search" do + post = FactoryGirl.create(:post, :source => "http://i1.pixiv.net/img123/img/artist-name/789.png") + assert_equal(1, Post.tag_match("source:pixiv/artist-name/*").count) + assert_equal(0, Post.tag_match("source:pixiv/artist-fake/*").count) + assert_equal(1, Post.tag_match("source:*.pixiv.net/img*/artist-name/*").count) + assert_equal(0, Post.tag_match("source:*.pixiv.net/img*/artist-fake/*").count) + end should "return posts for a tag subscription search" do post1 = FactoryGirl.create(:post, :tag_string => "aaa")