pose 3.0.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +42 -19
- data/Rakefile +37 -5
- data/lib/pose/activerecord_base_additions.rb +7 -6
- data/{app/models → lib}/pose/assignment.rb +6 -1
- data/lib/pose/jobs/install.rb +27 -0
- data/lib/pose/jobs/reindex_all.rb +34 -0
- data/lib/pose/jobs/remove.rb +28 -0
- data/lib/pose/jobs/uninstall.rb +19 -0
- data/lib/pose/jobs/vacuum.rb +23 -0
- data/lib/pose/model_class_additions.rb +32 -14
- data/lib/pose/query.rb +49 -9
- data/lib/pose/search.rb +5 -5
- data/lib/pose/static_api.rb +21 -3
- data/lib/pose/version.rb +1 -1
- data/lib/pose/word.rb +33 -0
- data/lib/pose.rb +11 -5
- data/lib/tasks/pose_tasks.rake +16 -27
- data/spec/{dummy/db/development.sqlite3 → db/pose.sqlite3} +0 -0
- data/spec/factories/posable_one.rb +2 -0
- data/spec/factories/posable_three.rb +8 -0
- data/spec/factories/posable_two.rb +2 -0
- data/spec/factories/user.rb +2 -0
- data/spec/lib/pose/activerecord_base_additions_spec.rb +11 -0
- data/spec/{models → lib/pose}/assignment_spec.rb +5 -5
- data/spec/lib/pose/jobs/reindex_all_spec.rb +31 -0
- data/spec/lib/pose/jobs/remove_spec.rb +20 -0
- data/spec/lib/pose/model_class_additions_spec.rb +150 -0
- data/spec/lib/pose/query_spec.rb +106 -8
- data/spec/lib/pose/search_spec.rb +2 -22
- data/spec/lib/pose/word_spec.rb +68 -0
- data/spec/pose_api_spec.rb +33 -13
- data/spec/spec_helper.rb +4 -32
- data/spec/support/config/database.yml +51 -0
- data/spec/support/config/database.yml.example +16 -0
- data/spec/{dummy/db/migrate → support/migrations}/20130308054001_create_posable_one.rb +0 -0
- data/spec/{dummy/db/migrate → support/migrations}/20130308054142_create_posable_two.rb +0 -0
- data/spec/support/migrations/20130308054143_create_posable_three.rb +9 -0
- data/spec/{dummy/db/migrate → support/migrations}/20130708084009_create_users.rb +0 -0
- data/spec/support/migrations/20130808084009_setup_pose_specs.rb +5 -0
- data/spec/{dummy/app → support}/models/posable_one.rb +1 -1
- data/spec/support/models/posable_three.rb +10 -0
- data/spec/{dummy/app → support}/models/posable_two.rb +1 -1
- data/spec/{dummy/app → support}/models/user.rb +1 -1
- data/spec/support/spec_manager.rb +105 -0
- metadata +70 -101
- data/app/models/pose/word.rb +0 -22
- data/db/migrate/20130308144915_pose_install.rb +0 -18
- data/lib/generators/pose/install/install_generator.rb +0 -56
- data/lib/generators/pose/install/templates/install_migration.rb +0 -24
- data/lib/generators/pose/remove/remove_generator.rb +0 -56
- data/lib/generators/pose/remove/templates/remove_migration.rb +0 -23
- data/lib/generators/pose/upgrade/templates/upgrade_migration.rb +0 -7
- data/lib/generators/pose/upgrade/upgrade_generator.rb +0 -35
- data/lib/pose/engine.rb +0 -5
- data/lib/pose/helpers.rb +0 -89
- data/lib/pose/railtie.rb +0 -19
- data/spec/dummy/Rakefile +0 -7
- data/spec/dummy/config/application.rb +0 -23
- data/spec/dummy/config/boot.rb +0 -10
- data/spec/dummy/config/database.yml +0 -25
- data/spec/dummy/config/environment.rb +0 -5
- data/spec/dummy/config/environments/development.rb +0 -30
- data/spec/dummy/config/environments/production.rb +0 -81
- data/spec/dummy/config/environments/test.rb +0 -37
- data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
- data/spec/dummy/config/initializers/inflections.rb +0 -15
- data/spec/dummy/config/initializers/mime_types.rb +0 -5
- data/spec/dummy/config/initializers/secret_token.rb +0 -7
- data/spec/dummy/config/initializers/session_store.rb +0 -8
- data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
- data/spec/dummy/config/locales/en.yml +0 -5
- data/spec/dummy/config/routes.rb +0 -2
- data/spec/dummy/config.ru +0 -4
- data/spec/dummy/db/schema.rb +0 -47
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/development.log +0 -309
- data/spec/dummy/log/test.log +0 -88518
- data/spec/dummy/script/rails +0 -6
- data/spec/lib/pose/helpers_spec.rb +0 -147
- data/spec/models/word_spec.rb +0 -42
data/spec/dummy/script/rails
DELETED
@@ -1,6 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
|
3
|
-
|
4
|
-
APP_PATH = File.expand_path('../../config/application', __FILE__)
|
5
|
-
require File.expand_path('../../config/boot', __FILE__)
|
6
|
-
require 'rails/commands'
|
@@ -1,147 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require "spec_helper"
|
3
|
-
|
4
|
-
describe Pose::Helpers do
|
5
|
-
|
6
|
-
describe :get_words_to_add do
|
7
|
-
let(:one) { Pose::Word.new(text: 'one') }
|
8
|
-
let(:two) { Pose::Word.new(text: 'two') }
|
9
|
-
|
10
|
-
context 'having a new word to be added' do
|
11
|
-
it 'returns an array with strings that need to be added' do
|
12
|
-
expect(Pose::Helpers.get_words_to_add([one, two], %w{one three})).to eql(['three'])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'nothing to add' do
|
17
|
-
it 'returns an empty array' do
|
18
|
-
expect(Pose::Helpers.get_words_to_add([one, two], %w{one two})).to be_empty
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
|
24
|
-
describe :get_words_to_remove do
|
25
|
-
let(:one) { Pose::Word.new(text: 'one') }
|
26
|
-
let(:two) { Pose::Word.new(text: 'two') }
|
27
|
-
|
28
|
-
it "returns an array of word objects that need to be removed" do
|
29
|
-
expect(Pose::Helpers.get_words_to_remove([one, two], %w{one three})).to eql([two])
|
30
|
-
end
|
31
|
-
|
32
|
-
it 'returns an empty array if there are no words to be removed' do
|
33
|
-
expect(Pose::Helpers.get_words_to_remove([one, two], %w{one two})).to be_empty
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
describe :is_sql_database? do
|
39
|
-
|
40
|
-
it 'recognizes postgres databases' do
|
41
|
-
ActiveRecord::Base.connection.class.stub(:name).and_return 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'
|
42
|
-
expect(Pose::Helpers.is_sql_database?).to be_true
|
43
|
-
end
|
44
|
-
|
45
|
-
it 'recognizes sqlite3 databases' do
|
46
|
-
ActiveRecord::Base.connection.class.stub(:name).and_return 'ActiveRecord::ConnectionAdapters::SQLite3Adapter'
|
47
|
-
expect(Pose::Helpers.is_sql_database?).to be_true
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
describe 'is_url?' do
|
52
|
-
|
53
|
-
it 'returns TRUE if the given string is a URL' do
|
54
|
-
expect(Pose::Helpers.is_url? 'http://web.com').to be_true
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'returns TRUE if the given string is a HTTPS URL' do
|
58
|
-
expect(Pose::Helpers.is_url? 'https://web.com').to be_true
|
59
|
-
end
|
60
|
-
|
61
|
-
it 'returns FALSE if the given string is not a URL' do
|
62
|
-
expect(Pose::Helpers.is_url? 'foo').to be_false
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'returns FALSE if the given string is a malformed URL' do
|
66
|
-
expect(Pose::Helpers.is_url? 'http://web').to be_false
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
describe :make_array do
|
71
|
-
|
72
|
-
it 'converts a single value into an array' do
|
73
|
-
expect(Pose::Helpers.make_array(1)).to eq [1]
|
74
|
-
end
|
75
|
-
|
76
|
-
it 'leaves arrays as arrays' do
|
77
|
-
expect(Pose::Helpers.make_array([1])).to eq [1]
|
78
|
-
end
|
79
|
-
|
80
|
-
it 'flattens nested arrays' do
|
81
|
-
Pose::Helpers.make_array([1, [2], [[3]]]).should eq [1, 2, 3]
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
|
86
|
-
describe :root_word do
|
87
|
-
|
88
|
-
it 'converts words into singular' do
|
89
|
-
expect(Pose::Helpers.root_word('bars')).to eql(['bar'])
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'removes special characters' do
|
93
|
-
expect(Pose::Helpers.root_word('(bar')).to eq ['bar']
|
94
|
-
expect(Pose::Helpers.root_word('bar)')).to eq ['bar']
|
95
|
-
expect(Pose::Helpers.root_word('(bar)')).to eq ['bar']
|
96
|
-
expect(Pose::Helpers.root_word('>foo')).to eq ['foo']
|
97
|
-
expect(Pose::Helpers.root_word('<foo')).to eq ['foo']
|
98
|
-
expect(Pose::Helpers.root_word('"foo"')).to eq ['foo']
|
99
|
-
expect(Pose::Helpers.root_word('"foo')).to eq ['foo']
|
100
|
-
expect(Pose::Helpers.root_word("'foo'")).to eq ['foo']
|
101
|
-
expect(Pose::Helpers.root_word("'foo's")).to eq ['foo']
|
102
|
-
expect(Pose::Helpers.root_word("foo?")).to eq ['foo']
|
103
|
-
expect(Pose::Helpers.root_word("foo!")).to eq ['foo']
|
104
|
-
expect(Pose::Helpers.root_word("foo/bar")).to eq ['foo', 'bar']
|
105
|
-
expect(Pose::Helpers.root_word("foo-bar")).to eq ['foo', 'bar']
|
106
|
-
expect(Pose::Helpers.root_word("foo--bar")).to eq ['foo', 'bar']
|
107
|
-
expect(Pose::Helpers.root_word("foo.bar")).to eq ['foo', 'bar']
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'removes umlauts' do
|
111
|
-
expect(Pose::Helpers.root_word('fünf')).to eq ['funf']
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'splits up numbers' do
|
115
|
-
expect(Pose::Helpers.root_word('11.2.2011')).to eq ['11', '2', '2011']
|
116
|
-
expect(Pose::Helpers.root_word('11-2-2011')).to eq ['11', '2', '2011']
|
117
|
-
expect(Pose::Helpers.root_word('30:4-5')).to eq ['30', '4', '5']
|
118
|
-
end
|
119
|
-
|
120
|
-
it 'converts into lowercase' do
|
121
|
-
expect(Pose::Helpers.root_word('London')).to eq ['london']
|
122
|
-
end
|
123
|
-
|
124
|
-
it "stores single-letter words" do
|
125
|
-
expect(Pose::Helpers.root_word('a b')).to eq ['a', 'b']
|
126
|
-
end
|
127
|
-
|
128
|
-
it "does't encode external URLs" do
|
129
|
-
expect(Pose::Helpers.root_word('http://web.com')).to eq ['http', 'web', 'com']
|
130
|
-
end
|
131
|
-
|
132
|
-
it "doesn't store empty words" do
|
133
|
-
expect(Pose::Helpers.root_word(' one two ')).to eq ['one', 'two']
|
134
|
-
end
|
135
|
-
|
136
|
-
it "removes duplicates" do
|
137
|
-
expect(Pose::Helpers.root_word('one_one')).to eq ['one']
|
138
|
-
expect(Pose::Helpers.root_word('one one')).to eq ['one']
|
139
|
-
end
|
140
|
-
|
141
|
-
it "splits up complex URLs" do
|
142
|
-
expect(Pose::Helpers.root_word('books?id=p7uyWPcVGZsC&dq=closure%20definitive%20guide&pg=PP1#v=onepage&q&f=false')).to eql([
|
143
|
-
"book", "id", "p7uywpcvgzsc", "dq", "closure", "definitive", "guide", "pg", "pp1", "v", "onepage", "q", "f", "false"])
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
end
|
data/spec/models/word_spec.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Pose
|
4
|
-
describe Word do
|
5
|
-
|
6
|
-
describe 'class methods' do
|
7
|
-
|
8
|
-
describe :remove_unused_words do
|
9
|
-
|
10
|
-
shared_examples 'it properly removes unused words' do
|
11
|
-
it 'removes unused words' do
|
12
|
-
FactoryGirl.create :word
|
13
|
-
Word.remove_unused_words
|
14
|
-
expect(Word.count).to eql 0
|
15
|
-
end
|
16
|
-
|
17
|
-
it 'does not remove used words' do
|
18
|
-
FactoryGirl.create :posable_one
|
19
|
-
Word.remove_unused_words
|
20
|
-
expect(Word.count).to be > 0
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context 'with a SQL database' do
|
26
|
-
before :each do
|
27
|
-
Helpers.should_receive(:is_sql_database?).and_return(true)
|
28
|
-
end
|
29
|
-
|
30
|
-
it_should_behave_like 'it properly removes unused words'
|
31
|
-
end
|
32
|
-
|
33
|
-
context 'without a SQL database' do
|
34
|
-
before :each do
|
35
|
-
Helpers.should_receive(:is_sql_database?).and_return(false)
|
36
|
-
end
|
37
|
-
|
38
|
-
it_should_behave_like 'it properly removes unused words'
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|