pose 3.0.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +42 -19
  3. data/Rakefile +37 -5
  4. data/lib/pose/activerecord_base_additions.rb +7 -6
  5. data/{app/models → lib}/pose/assignment.rb +6 -1
  6. data/lib/pose/jobs/install.rb +27 -0
  7. data/lib/pose/jobs/reindex_all.rb +34 -0
  8. data/lib/pose/jobs/remove.rb +28 -0
  9. data/lib/pose/jobs/uninstall.rb +19 -0
  10. data/lib/pose/jobs/vacuum.rb +23 -0
  11. data/lib/pose/model_class_additions.rb +32 -14
  12. data/lib/pose/query.rb +49 -9
  13. data/lib/pose/search.rb +5 -5
  14. data/lib/pose/static_api.rb +21 -3
  15. data/lib/pose/version.rb +1 -1
  16. data/lib/pose/word.rb +33 -0
  17. data/lib/pose.rb +11 -5
  18. data/lib/tasks/pose_tasks.rake +16 -27
  19. data/spec/{dummy/db/development.sqlite3 → db/pose.sqlite3} +0 -0
  20. data/spec/factories/posable_one.rb +2 -0
  21. data/spec/factories/posable_three.rb +8 -0
  22. data/spec/factories/posable_two.rb +2 -0
  23. data/spec/factories/user.rb +2 -0
  24. data/spec/lib/pose/activerecord_base_additions_spec.rb +11 -0
  25. data/spec/{models → lib/pose}/assignment_spec.rb +5 -5
  26. data/spec/lib/pose/jobs/reindex_all_spec.rb +31 -0
  27. data/spec/lib/pose/jobs/remove_spec.rb +20 -0
  28. data/spec/lib/pose/model_class_additions_spec.rb +150 -0
  29. data/spec/lib/pose/query_spec.rb +106 -8
  30. data/spec/lib/pose/search_spec.rb +2 -22
  31. data/spec/lib/pose/word_spec.rb +68 -0
  32. data/spec/pose_api_spec.rb +33 -13
  33. data/spec/spec_helper.rb +4 -32
  34. data/spec/support/config/database.yml +51 -0
  35. data/spec/support/config/database.yml.example +16 -0
  36. data/spec/{dummy/db/migrate → support/migrations}/20130308054001_create_posable_one.rb +0 -0
  37. data/spec/{dummy/db/migrate → support/migrations}/20130308054142_create_posable_two.rb +0 -0
  38. data/spec/support/migrations/20130308054143_create_posable_three.rb +9 -0
  39. data/spec/{dummy/db/migrate → support/migrations}/20130708084009_create_users.rb +0 -0
  40. data/spec/support/migrations/20130808084009_setup_pose_specs.rb +5 -0
  41. data/spec/{dummy/app → support}/models/posable_one.rb +1 -1
  42. data/spec/support/models/posable_three.rb +10 -0
  43. data/spec/{dummy/app → support}/models/posable_two.rb +1 -1
  44. data/spec/{dummy/app → support}/models/user.rb +1 -1
  45. data/spec/support/spec_manager.rb +105 -0
  46. metadata +70 -101
  47. data/app/models/pose/word.rb +0 -22
  48. data/db/migrate/20130308144915_pose_install.rb +0 -18
  49. data/lib/generators/pose/install/install_generator.rb +0 -56
  50. data/lib/generators/pose/install/templates/install_migration.rb +0 -24
  51. data/lib/generators/pose/remove/remove_generator.rb +0 -56
  52. data/lib/generators/pose/remove/templates/remove_migration.rb +0 -23
  53. data/lib/generators/pose/upgrade/templates/upgrade_migration.rb +0 -7
  54. data/lib/generators/pose/upgrade/upgrade_generator.rb +0 -35
  55. data/lib/pose/engine.rb +0 -5
  56. data/lib/pose/helpers.rb +0 -89
  57. data/lib/pose/railtie.rb +0 -19
  58. data/spec/dummy/Rakefile +0 -7
  59. data/spec/dummy/config/application.rb +0 -23
  60. data/spec/dummy/config/boot.rb +0 -10
  61. data/spec/dummy/config/database.yml +0 -25
  62. data/spec/dummy/config/environment.rb +0 -5
  63. data/spec/dummy/config/environments/development.rb +0 -30
  64. data/spec/dummy/config/environments/production.rb +0 -81
  65. data/spec/dummy/config/environments/test.rb +0 -37
  66. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  67. data/spec/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  68. data/spec/dummy/config/initializers/inflections.rb +0 -15
  69. data/spec/dummy/config/initializers/mime_types.rb +0 -5
  70. data/spec/dummy/config/initializers/secret_token.rb +0 -7
  71. data/spec/dummy/config/initializers/session_store.rb +0 -8
  72. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  73. data/spec/dummy/config/locales/en.yml +0 -5
  74. data/spec/dummy/config/routes.rb +0 -2
  75. data/spec/dummy/config.ru +0 -4
  76. data/spec/dummy/db/schema.rb +0 -47
  77. data/spec/dummy/db/test.sqlite3 +0 -0
  78. data/spec/dummy/log/development.log +0 -309
  79. data/spec/dummy/log/test.log +0 -88518
  80. data/spec/dummy/script/rails +0 -6
  81. data/spec/lib/pose/helpers_spec.rb +0 -147
  82. data/spec/models/word_spec.rb +0 -42
@@ -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
@@ -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