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.
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