activeadmin-mongoid 0.2.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2f4ee2f7bcc78891d91481ee20bdaa7ab082fba8
4
- data.tar.gz: eb4fdbb0600638727f75187488434b6377ef44a1
3
+ metadata.gz: 9157f6b8aa66c4264bfb42bf5220ace2e7c79d30
4
+ data.tar.gz: 3f67da796eb5c7b42c9ecc313c030315d452fe7c
5
5
  SHA512:
6
- metadata.gz: 15256821b3a1a2ce7fde50128a55690b4f1e004772ba0a0b273cd77c70f3fd54a9f789934b9825f36f6bbb0fe6441c1f77c672f04b82894baf73cb3ee3c0e3e5
7
- data.tar.gz: 500cf07724202dd9f078334c893d7788ff0540a2771580e9fa52edf726ac9d8b4be848012e0446820cdc8033f08039e4a8e6bc1b339ff2f49d3e4e202ec97565
6
+ metadata.gz: f41834ee3606eff87869fcf5e741bc888fa8492329f19be35ea27a0526be6c76e9f745891a983d1c3a3befe644a1e80e56d780554f972ab81ca518b097fa99a5
7
+ data.tar.gz: c1f54fe99d590b2346591b3a38f2b6d22f5c3097b3f881aa9bd2be342146f0700fc1f36d811438597c159771032d192622f7ea98dfe8653a7440fa7a15fc4b56
data/Gemfile CHANGED
@@ -22,9 +22,12 @@ group :assets do
22
22
  end
23
23
 
24
24
  gem 'jquery-rails'
25
+ gem 'jquery-ui-rails'
25
26
  gem 'jslint'
26
27
 
27
28
  group :test do
28
29
  gem 'capybara'
30
+ gem 'poltergeist'
29
31
  gem 'launchy'
32
+ gem 'simplecov', require: false
30
33
  end
data/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # ActiveAdmin::Mongoid
2
2
 
3
+ [![Build Status](https://secure.travis-ci.org/elia/activeadmin-mongoid.png?branch=master)](http://travis-ci.org/elia/activeadmin-mongoid)
4
+ [![Gem Version](https://badge.fury.io/rb/activeadmin-mongoid.png)](http://badge.fury.io/rb/activeadmin-mongoid)
5
+
6
+
3
7
  ActiveAdmin hacks to support Mongoid.
4
8
  Some ActiveAdmin features are disabled:
5
9
 
@@ -18,10 +18,11 @@ Gem::Specification.new do |gem|
18
18
  gem.version = ActiveAdmin::Mongoid::VERSION
19
19
  gem.license = 'MIT'
20
20
 
21
- gem.add_runtime_dependency 'mongoid', '~> 3.0'
21
+ gem.add_runtime_dependency 'mongoid', ['> 3.0', '< 5.0']
22
22
  gem.add_runtime_dependency 'activeadmin', '~> 0.6'
23
- gem.add_runtime_dependency 'meta_search', '>= 1.1.0.pre'
24
- gem.add_runtime_dependency 'sass-rails', ['~> 3.1', '>= 3.1.4']
23
+ gem.add_runtime_dependency 'jquery-rails', '< 3.0' # in which they remove jquery-ui
24
+ gem.add_runtime_dependency 'sass-rails', ['>= 3.1.4', '< 5.0']
25
+ gem.add_runtime_dependency 'meta_search', '~> 1.1.3'
25
26
 
26
27
  gem.add_development_dependency 'rspec-rails', '~> 2.7'
27
28
  end
@@ -13,17 +13,22 @@ require 'active_admin/mongoid/document'
13
13
  require 'active_admin/mongoid/helpers/collection'
14
14
  require 'active_admin/mongoid/criteria'
15
15
 
16
- # module ActiveAdmin
17
- # module Mongoid
18
- # end
19
- #
20
- # class << self
21
- # alias setup_without_mongoid setup
22
- #
23
- # # Load monkey patches *after* the setup process
24
- # def setup *args, &block
25
- # setup_without_mongoid *args, &block
26
- #
27
- # end
28
- # end
29
- # end
16
+ module ActiveAdmin
17
+ module Mongoid
18
+ class Railtie < ::Rails::Railtie
19
+ config.after_initialize do
20
+ I18n.backend.reload!
21
+ end
22
+ end
23
+ end
24
+
25
+ # class << self
26
+ # alias setup_without_mongoid setup
27
+ #
28
+ # # Load monkey patches *after* the setup process
29
+ # def setup *args, &block
30
+ # setup_without_mongoid *args, &block
31
+ #
32
+ # end
33
+ # end
34
+ end
@@ -1,3 +1,5 @@
1
+ require 'delegate'
2
+
1
3
  Mongoid::Criteria.class_eval do
2
4
  def relation *args, &block
3
5
  self
@@ -6,5 +8,15 @@ Mongoid::Criteria.class_eval do
6
8
  def base
7
9
  klass
8
10
  end
11
+
12
+ def table
13
+ CollectionTable.new(klass.collection)
14
+ end
15
+
16
+ class CollectionTable < SimpleDelegator
17
+ def from(*a)
18
+ self
19
+ end
20
+ end
9
21
  end
10
22
 
@@ -1,14 +1,24 @@
1
+ require 'delegate'
2
+ require 'meta_search/searches/mongoid'
3
+
1
4
  module ActiveAdmin::Mongoid::Document
2
5
  extend ActiveSupport::Concern
3
6
 
4
- included do
5
- unless respond_to? :primary_key
6
- class << self
7
- attr_accessor :primary_key
7
+
8
+
9
+
10
+ # PROXY CLASSES
11
+
12
+ class ColumnWrapper < SimpleDelegator
13
+ def type
14
+ _super = super
15
+ case _super
16
+ when Moped::BSON::ObjectId, Object
17
+ :string
18
+ else
19
+ _super.name.underscore.to_sym
8
20
  end
9
21
  end
10
-
11
- self.primary_key ||= [:_id]
12
22
  end
13
23
 
14
24
  class Connection
@@ -21,25 +31,94 @@ module ActiveAdmin::Mongoid::Document
21
31
  end
22
32
  end
23
33
 
34
+
35
+
36
+
37
+ # CLASS METHODS
38
+
39
+ included do
40
+ include MetaSearch::Searches::Mongoid
41
+
42
+ unless respond_to? :primary_key
43
+ class << self
44
+ attr_accessor :primary_key
45
+ end
46
+ end
47
+
48
+ self.primary_key ||= [:_id]
49
+
50
+ end
51
+
24
52
  module ClassMethods
25
- def content_columns
26
- @content_columns ||= fields.map(&:second).select {|f| f.name !~ /(^_|^(created|updated)_at)/}
53
+
54
+ # Metasearch
55
+
56
+ def joins_values *args
57
+ criteria
27
58
  end
28
59
 
29
- def metasearch *args, &block
60
+ def group_by *args, &block
61
+ criteria
62
+ end
63
+
64
+ def ransack *args
65
+ scoped
66
+
67
+ scoped.class.class_eval do
68
+ def result
69
+ self
70
+ end
71
+ end
72
+
30
73
  scoped
31
74
  end
32
75
 
76
+
77
+ # Cache
78
+
79
+ def [] name
80
+ raise name.inspect
81
+ cache[name]
82
+ end
83
+
84
+ def []= name, value
85
+ cache[name]= value
86
+ end
87
+
88
+ def cache
89
+ @cache ||= {}
90
+ end
91
+
92
+
93
+ # Columns
94
+
95
+ def content_columns
96
+ # cannot cache this, since changes in time (while defining fields)
97
+ fields.map(&:second).reject do |f|
98
+ f.name =~ /(^_|^(created|updated)_at)/ or Mongoid::Fields::ForeignKey === f
99
+ end
100
+ end
101
+
33
102
  def columns
34
- @columns ||= fields.map(&:second)
103
+ @columns ||= fields.map(&:second).map{ |c| ColumnWrapper.new(c) }
35
104
  end
36
105
 
37
106
  def column_names
38
107
  @column_names ||= fields.map(&:first)
39
108
  end
40
109
 
41
- def reorder *args
42
- scoped
110
+ def columns_hash
111
+ columns.index_by(&:name)
112
+ end
113
+
114
+
115
+
116
+ def reorder sorting
117
+ return unscoped if sorting.blank?
118
+ options = sorting.split(/ |\./)
119
+ options.shift if options.count == 3
120
+ field, order = *options
121
+ unscoped.order_by(field => order)
43
122
  end
44
123
 
45
124
  def connection
@@ -54,7 +133,14 @@ module ActiveAdmin::Mongoid::Document
54
133
  collection_name.to_s.inspect
55
134
  end
56
135
 
136
+
137
+ def reflections *a
138
+ relations *a
139
+ end
57
140
  end
58
141
  end
59
142
 
60
143
  Mongoid::Document.send :include, ActiveAdmin::Mongoid::Document
144
+ Mongoid::Document.send :include, MetaSearch::Searches::Mongoid
145
+
146
+
@@ -1,10 +1,9 @@
1
- # module ActiveAdmin
2
- # module Helpers
3
- # module Collection
4
- # def collection_size(collection=collection)
5
- # raise collection.inspect
6
- # collection.count
7
- # end
8
- # end
9
- # end
10
- # end
1
+ module ActiveAdmin
2
+ module Helpers
3
+ module Collection
4
+ def collection_size(collection=collection)
5
+ collection.count(true)
6
+ end
7
+ end
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module ActiveAdmin
2
2
  module Mongoid
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -0,0 +1,117 @@
1
+ require 'active_support/concern'
2
+ require 'meta_search/method'
3
+ require 'meta_search/builder'
4
+
5
+ module MetaSearch
6
+ module Searches
7
+
8
+ require 'delegate'
9
+ class MongoidSearchBuilder < SimpleDelegator
10
+ def initialize relation, params, options
11
+ super(relation)
12
+ @relation = relation
13
+ @params, @options = params, options
14
+ end
15
+
16
+ def build
17
+ params.each_pair do |field_query, value|
18
+ field, query = field_query.to_s.scan(metasearch_regexp).first
19
+ case query.to_sym
20
+ when :equals, :eq
21
+ @relation = relation.where(field => value)
22
+ when :does_not_equal, :ne, :not_eq
23
+ @relation = relation.where(field.to_sym.ne => value)
24
+ when :contains, :like, :matches
25
+ @relation = relation.where(field => /#{value}/i)
26
+ when :does_not_contain, :nlike, :not_matches
27
+ @relation = relation.where(field.to_sym.not => /#{value}/i)
28
+ when :starts_with, :sw
29
+ @relation = relation.where(field.to_sym => /\A#{Regexp.quote(value)}/i)
30
+ when :does_not_start_with, :dnsw
31
+ @relation = relation.where(field.to_sym.not => /\A#{Regexp.quote(value)}/i)
32
+ when :ends_with, :ew
33
+ @relation = relation.where(field.to_sym => /#{Regexp.quote(value)}\z/i)
34
+ when :does_not_end_with, :dnew
35
+ @relation = relation.where(field.to_sym.not => /#{Regexp.quote(value)}\z/i)
36
+ when :greater_than, :gt
37
+ @relation = relation.where(field.to_sym.gt => value)
38
+ when :less_than, :lt
39
+ @relation = relation.where(field.to_sym.lt => value)
40
+ when :greater_than_or_equal_to, :gte, :gteq
41
+ @relation = relation.where(field.to_sym.gte => value)
42
+ when :less_than_or_equal_to, :lte, :lteq
43
+ @relation = relation.where(field.to_sym.lte => value)
44
+ when :in
45
+ @relation = relation.where(field.to_sym.in => Array.wrap(value))
46
+ when :not_in, :ni
47
+ @relation = relation.where(field.to_sym.nin => Array.wrap(value))
48
+ when :is_true
49
+ @relation = relation.where(field => true)
50
+ when :is_false
51
+ @relation = relation.where(field => false)
52
+ when :is_present
53
+ @relation = relation.where(field.to_sym.exists => true)
54
+ when :is_blank
55
+ @relation = relation.where(field.to_sym.exists => false)
56
+ when :is_null
57
+ @relation = relation.where(field => nil)
58
+ when :is_not_null
59
+ @relation = relation.where(field.to_sym.ne => nil)
60
+ else
61
+ raise [field_query, value].inspect
62
+ end
63
+ end
64
+ self
65
+ end
66
+
67
+ attr_reader :relation, :params, :options
68
+
69
+ def base
70
+ self
71
+ end
72
+
73
+ def klass
74
+ relation
75
+ end
76
+
77
+ def method_missing name, *attrs, &block
78
+ relation.send(name, *attrs, &block)
79
+ end
80
+
81
+
82
+ def respond_to? name, include_private = false
83
+ name.to_s =~ metasearch_regexp or super
84
+ end
85
+
86
+ def method_missing name, *args, &block
87
+ if name =~ metasearch_regexp
88
+ params[name]
89
+ else
90
+ super
91
+ end
92
+ end
93
+
94
+ def metasearch_regexp
95
+ field_names = klass.fields.map(&:second).map(&:name)
96
+ conditions = MetaSearch::DEFAULT_WHERES.map {|condition| condition[0...-1]} # pop tail options
97
+
98
+ /\A(#{field_names.join('|')})_(#{conditions.join('|')})\z/
99
+ end
100
+
101
+ end
102
+
103
+ module Mongoid
104
+ extend ActiveSupport::Concern
105
+
106
+ module ClassMethods
107
+ def metasearch(params = nil, options = nil)
108
+ options ||= {}
109
+ params ||= {}
110
+ MongoidSearchBuilder.new(criteria, params, options).build
111
+ end
112
+ alias_method :search, :metasearch unless respond_to?(:search)
113
+ end
114
+
115
+ end
116
+ end
117
+ end
@@ -5,56 +5,246 @@ require 'activeadmin'
5
5
  describe 'browse the test app' do
6
6
  let(:password) { 'foobar•secret' }
7
7
  let(:email) { 'john@doe.com' }
8
+ let(:admin_user) do
9
+ AdminUser.where(email: email).first || AdminUser.create!(email: email, password: password)
10
+ end
11
+ let(:other_email) { 'jane@doe.com' }
12
+ let(:other_user) do
13
+ AdminUser.where(email: other_email).first || AdminUser.create!(email: other_email, password: password)
14
+ end
8
15
 
9
16
  before do
10
17
  Mongoid.purge!
11
- AdminUser.create! email: email, password: password
18
+ expect(admin_user).to be_persisted
19
+ expect(other_user).to be_persisted
12
20
  end
13
- before { visit '/admin' }
14
21
 
15
- it 'does something' do
16
- I18n.t('active_admin.devise.login.submit').should eq('Login')
22
+ context 'when authorized' do
23
+ before do
24
+ visit '/admin'
25
+
26
+ I18n.t('active_admin.devise.login.submit').should eq('Login')
17
27
 
18
- # Auth
19
- fill_in 'Email', with: email
20
- fill_in 'Password', with: password
21
- click_on 'Login'
28
+ # Auth
29
+ fill_in 'Email', with: email
30
+ fill_in 'Password', with: password
31
+ click_on 'Login'
32
+ end
22
33
 
23
- # New
24
- click_on 'Posts'
25
- click_on 'New Post'
34
+ it 'creates and edits a new post' do
35
+ # New
36
+ click_on 'Posts'
37
+ click_on 'New Post'
38
+ fill_in 'Title', with: 'dhh screencast'
39
+ fill_in 'Body', with: 'is still the best intro to rails'
26
40
 
27
- fill_in 'Title', with: 'dhh screencast'
28
- fill_in 'Body', with: 'is still the best intro to rails'
41
+ # Create
42
+ click_on 'Create Post'
29
43
 
30
- # Create
31
- click_on 'Create Post'
44
+ within '.attributes_table.post' do
45
+ page.should have_content('dhh screencast')
46
+ page.should have_content('is still the best intro to rails')
47
+ end
32
48
 
33
- within '.attributes_table.post' do
34
- page.should have_content('dhh screencast')
35
- page.should have_content('is still the best intro to rails')
36
- end
49
+ # Edit
50
+ click_on 'Edit Post'
51
+ fill_in 'Title', with: 'DHH original screencast'
37
52
 
38
- # Edit
39
- click_on 'Edit Post'
40
- fill_in 'Title', with: 'DHH original screencast'
53
+ # Update
54
+ click_on 'Update Post'
41
55
 
42
- # Update
43
- click_on 'Update Post'
56
+ within '.attributes_table.post' do
57
+ page.should have_content('DHH original screencast')
58
+ page.should have_content('is still the best intro to rails')
59
+ end
44
60
 
45
- within '.attributes_table.post' do
46
- page.should have_content('DHH original screencast')
47
- page.should have_content('is still the best intro to rails')
61
+ # List
62
+ within('.breadcrumb') { click_on 'Posts' }
63
+ within '#index_table_posts' do
64
+ page.should have_content('DHH original screencast')
65
+ page.should have_content('is still the best intro to rails')
66
+ end
48
67
  end
49
68
 
50
- # List
51
- within('.breadcrumb') { click_on 'Posts' }
69
+ context 'with 1 post' do
70
+
71
+ before do
72
+ Post.create!(title: 'Quick Brown Fox', body: 'The quick brown fox jumps over the lazy dog.', view_count: 5, admin_user: admin_user, other_user: other_user)
73
+
74
+ click_on 'Posts'
75
+ end
76
+
77
+ describe 'filters' do
78
+ describe 'string' do
79
+ it 'searches by title' do
80
+ fill_in 'Title', with: 'Brown'
81
+ click_on 'Filter'
82
+
83
+ within '#index_table_posts' do
84
+ page.should have_content('Quick Brown Fox')
85
+ end
86
+
87
+ fill_in 'Title', with: 'dog'
88
+ click_on 'Filter'
89
+ page.should_not have_content('Quick Brown Fox')
90
+
91
+ fill_in 'Title', with: ''
92
+ click_on 'Filter'
93
+
94
+ page.should have_content('Displaying 1 Post')
95
+ end
96
+ end
97
+
98
+ describe 'date_range' do
99
+ it 'searches by created_at range' do
100
+ fill_in 'q[created_at_gte]', with: 1.day.ago.to_datetime.strftime("%Y-%m-%d")
101
+ fill_in 'q[created_at_lte]', with: 2.days.from_now.to_datetime.strftime("%Y-%m-%d")
102
+ click_on 'Filter'
103
+
104
+ within '#index_table_posts' do
105
+ page.should have_content('Quick Brown Fox')
106
+ end
107
+
108
+ fill_in 'q[created_at_gte]', with: 1.day.from_now.to_datetime.strftime("%Y-%m-%d")
109
+ click_on 'Filter'
110
+ page.should_not have_content('Quick Brown Fox')
111
+
112
+ fill_in 'q[created_at_gte]', with: ''
113
+ fill_in 'q[created_at_lte]', with: ''
114
+ click_on 'Filter'
115
+
116
+ page.should have_content('Displaying 1 Post')
117
+ end
118
+ end
119
+
120
+ describe 'numeric' do
121
+ it 'searches by created_at range', js: true do
122
+ within '.filter_numeric' do
123
+ find(:select).find('option[value=view_count_equals]').select_option
124
+ end
125
+ fill_in 'View count', with: '5'
126
+ click_on 'Filter'
127
+
128
+ within '#index_table_posts' do
129
+ page.should have_content('Quick Brown Fox')
130
+ end
131
+
132
+ fill_in 'View count', with: '6'
133
+ click_on 'Filter'
134
+ page.should_not have_content('Quick Brown Fox')
135
+
136
+ within '.filter_numeric' do
137
+ find(:select).find('option[value=view_count_less_than]').select_option
138
+ end
139
+ click_on 'Filter'
140
+
141
+ within '#index_table_posts' do
142
+ page.should have_content('Quick Brown Fox')
143
+ end
144
+
145
+ within '.filter_numeric' do
146
+ find(:select).find('option[value=view_count_greater_than]').select_option
147
+ end
148
+ click_on 'Filter'
149
+ page.should_not have_content('Quick Brown Fox')
52
150
 
53
- within '#index_table_posts' do
54
- page.should have_content('DHH original screencast')
55
- page.should have_content('is still the best intro to rails')
151
+ fill_in 'View count', with: '4'
152
+ click_on 'Filter'
153
+
154
+ within '#index_table_posts' do
155
+ page.should have_content('Quick Brown Fox')
156
+ end
157
+
158
+ fill_in 'View count', with: ''
159
+ click_on 'Filter'
160
+
161
+ page.should have_content('Displaying 1 Post')
162
+ end
163
+ end
164
+ end
165
+
166
+ describe 'select' do
167
+ it 'selects by admin_user' do
168
+ select email, from: 'Admin user'
169
+ click_on 'Filter'
170
+
171
+ within '#index_table_posts' do
172
+ page.should have_content('Quick Brown Fox')
173
+ end
174
+
175
+ select other_email, from: 'Admin user'
176
+ click_on 'Filter'
177
+ page.should_not have_content('Quick Brown Fox')
178
+
179
+ select 'Any', from: 'Admin user'
180
+ click_on 'Filter'
181
+
182
+ page.should have_content('Displaying 1 Post')
183
+ end
184
+ end
185
+
186
+ describe 'check_boxes' do
187
+ it 'checks by other_user' do
188
+ check email
189
+ click_on 'Filter'
190
+ page.should_not have_content('Quick Brown Fox')
191
+
192
+ check other_email
193
+ click_on 'Filter'
194
+
195
+ within '#index_table_posts' do
196
+ page.should have_content('Quick Brown Fox')
197
+ end
198
+
199
+ uncheck email
200
+ uncheck other_email
201
+ click_on 'Filter'
202
+
203
+ page.should have_content('Displaying 1 Post')
204
+ end
205
+ end
56
206
  end
57
207
 
58
- page.should have_content('Displaying 1 Post')
208
+ context 'with 100 posts' do
209
+ let(:per_page) { 30 }
210
+ let(:posts_size) { 100 }
211
+
212
+ before do
213
+ posts_size.times { |n|
214
+ Post.create!(title: "Quick Brown Fox #{n}", body: 'The quick brown fox jumps over the lazy dog.', view_count: 5, admin_user: admin_user, other_user: other_user)
215
+ }
216
+
217
+ click_on 'Posts'
218
+ end
219
+
220
+ describe "paginator" do
221
+ it "must have paginator with 4 pages" do
222
+ page.should have_css('.pagination > .page.current')
223
+ page.all(:css, '.pagination > .page').size.should == 4
224
+ end
225
+
226
+ it "must show each page correctly" do
227
+ # temprorary go to page 2
228
+ page.find('.pagination > .page > a', text: '2').click
229
+
230
+ (1..4).each do |page_number|
231
+ page.find('.pagination > .page > a', text: page_number).click
232
+ page.find('.pagination_information').should have_content('Displaying Posts')
233
+
234
+ offset = (page_number - 1) * per_page
235
+ collection_size = [per_page, posts_size - (page_number - 1) * per_page].min
236
+
237
+ display_total_text = I18n.t 'active_admin.pagination.multiple',
238
+ model: 'Posts', total: posts_size,
239
+ from: offset + 1, to: offset + collection_size
240
+ display_total_text = Nokogiri::HTML(display_total_text).text.gsub(' ', ' ')
241
+ pagination_information = page.find('.pagination_information').text
242
+ pagination_information.should include(display_total_text)
243
+ end
244
+ end
245
+ end
246
+ end # context 'with 100 posts'
247
+
59
248
  end
249
+
60
250
  end
data/spec/spec_helper.rb CHANGED
@@ -2,6 +2,14 @@
2
2
  ENV['RAILS_ENV'] ||= 'test'
3
3
  require 'rubygems'
4
4
  require 'bundler'
5
+
6
+ if %w(true 1).include?(ENV['COVERAGE'])
7
+ require 'simplecov'
8
+ SimpleCov.start do
9
+ add_filter '/test_app/'
10
+ end
11
+ end
12
+
5
13
  Bundler.require
6
14
 
7
15
  require File.expand_path("../../test_app/config/environment", __FILE__)
@@ -10,6 +18,7 @@ require 'rspec/autorun'
10
18
 
11
19
  # Requires supporting ruby files with custom matchers and macros, etc,
12
20
  # in spec/support/ and its subdirectories.
21
+ Dir[File.join(File.expand_path("../../", __FILE__), "spec/support/**/*.rb")].each {|f| require f}
13
22
  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
14
23
 
15
24
  RSpec.configure do |config|
@@ -1 +1,3 @@
1
- require 'capibara/rails'
1
+ require 'capybara/rails'
2
+ require 'capybara/poltergeist'
3
+ Capybara.javascript_driver = :poltergeist
@@ -1,3 +1,11 @@
1
1
  ActiveAdmin.register Post do
2
+ config.per_page = 30
3
+
4
+ filter :title
5
+ filter :body
6
+ filter :created_at, as: :date_range
7
+ filter :view_count, as: :numeric
8
+ filter :admin_user, as: :select
9
+ filter :other_user, as: :check_boxes
2
10
 
3
11
  end
@@ -1 +1,7 @@
1
- //= require active_admin/base
1
+ //= require jquery
2
+ //= require jquery_ujs
3
+ //= require jquery.ui.core
4
+ //= require jquery.ui.widget
5
+ //= require jquery.ui.datepicker
6
+
7
+ //= require active_admin/application
@@ -37,4 +37,8 @@ class AdminUser
37
37
 
38
38
  ## Token authenticatable
39
39
  # field :authentication_token, :type => String
40
+
41
+ def name
42
+ email
43
+ end
40
44
  end
@@ -1,6 +1,10 @@
1
1
  class Post
2
2
  include Mongoid::Document
3
+ include Mongoid::Timestamps
3
4
 
4
5
  field :title
5
6
  field :body
7
+ field :view_count, type: ::Integer, default: 0
8
+ belongs_to :admin_user
9
+ belongs_to :other_user, class_name: 'AdminUser'
6
10
  end
@@ -1,4 +1,5 @@
1
1
  require 'pathname'
2
+ require 'mongoid'
2
3
  root = Pathname(File.expand_path('../..', __FILE__))
3
4
  version = Mongoid::VERSION.to_i
4
5
 
@@ -6,6 +6,8 @@ Devise.setup do |config|
6
6
  # note that it will be overwritten if you use your own mailer class with default "from" parameter.
7
7
  config.mailer_sender = "please-change-me-at-config-initializers-devise@example.com"
8
8
 
9
+ config.secret_key = '8c57910ca9a61008a2566fc337a67ddc043b91d64e0420ca8dd691e80cf362bc8a480ecb1465bd4ae958e715d354264a97934c058c3e14f5d552012ff5755122'
10
+
9
11
  # Configure the class responsible to send e-mails.
10
12
  # config.mailer = "Devise::Mailer"
11
13
 
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activeadmin-mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elia Schito
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-25 00:00:00.000000000 Z
11
+ date: 2013-10-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mongoid
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - '>'
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.0'
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ~>
27
+ - - '>'
25
28
  - !ruby/object:Gem::Version
26
29
  version: '3.0'
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: activeadmin
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,39 +45,53 @@ dependencies:
39
45
  - !ruby/object:Gem::Version
40
46
  version: '0.6'
41
47
  - !ruby/object:Gem::Dependency
42
- name: meta_search
48
+ name: jquery-rails
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - '>='
51
+ - - <
46
52
  - !ruby/object:Gem::Version
47
- version: 1.1.0.pre
53
+ version: '3.0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - '>='
58
+ - - <
53
59
  - !ruby/object:Gem::Version
54
- version: 1.1.0.pre
60
+ version: '3.0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: sass-rails
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '3.1'
62
65
  - - '>='
63
66
  - !ruby/object:Gem::Version
64
67
  version: 3.1.4
68
+ - - <
69
+ - !ruby/object:Gem::Version
70
+ version: '5.0'
65
71
  type: :runtime
66
72
  prerelease: false
67
73
  version_requirements: !ruby/object:Gem::Requirement
68
74
  requirements:
69
- - - ~>
70
- - !ruby/object:Gem::Version
71
- version: '3.1'
72
75
  - - '>='
73
76
  - !ruby/object:Gem::Version
74
77
  version: 3.1.4
78
+ - - <
79
+ - !ruby/object:Gem::Version
80
+ version: '5.0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: meta_search
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ~>
86
+ - !ruby/object:Gem::Version
87
+ version: 1.1.3
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: 1.1.3
75
95
  - !ruby/object:Gem::Dependency
76
96
  name: rspec-rails
77
97
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +133,7 @@ files:
113
133
  - lib/active_admin/mongoid/resource.rb
114
134
  - lib/active_admin/mongoid/version.rb
115
135
  - lib/activeadmin-mongoid.rb
136
+ - lib/meta_search/searches/mongoid.rb
116
137
  - lib/tasks/activeadmin-mongoid_tasks.rake
117
138
  - spec/features/smoke_spec.rb
118
139
  - spec/spec_helper.rb
@@ -204,7 +225,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
225
  version: '0'
205
226
  requirements: []
206
227
  rubyforge_project:
207
- rubygems_version: 2.0.3
228
+ rubygems_version: 2.1.2
208
229
  signing_key:
209
230
  specification_version: 4
210
231
  summary: ActiveAdmin hacks to support Mongoid