pose 3.0.0 → 3.1.1
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.
- 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
|