acts_as_bookable 0.1.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.
Files changed (66) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +43 -0
  6. data/Appraisals +21 -0
  7. data/Gemfile +21 -0
  8. data/Gemfile.lock +168 -0
  9. data/Guardfile +5 -0
  10. data/MIT-LICENSE +20 -0
  11. data/README.md +473 -0
  12. data/Rakefile +19 -0
  13. data/acts_as_bookable.gemspec +41 -0
  14. data/app/assets/images/acts_as_bookable/.keep +0 -0
  15. data/app/assets/javascripts/acts_as_bookable/application.js +13 -0
  16. data/app/assets/stylesheets/acts_as_bookable/application.css +15 -0
  17. data/app/controllers/acts_as_bookable/application_controller.rb +4 -0
  18. data/app/helpers/acts_as_bookable/application_helper.rb +4 -0
  19. data/app/views/layouts/acts_as_bookable/application.html.erb +14 -0
  20. data/bin/rails +12 -0
  21. data/config/locales/en.yml +12 -0
  22. data/config/routes.rb +2 -0
  23. data/db/migrate/20160217085200_create_acts_as_bookable_bookings.rb +14 -0
  24. data/gemfiles/activerecord_3.2.gemfile +16 -0
  25. data/gemfiles/activerecord_4.0.gemfile +16 -0
  26. data/gemfiles/activerecord_4.1.gemfile +16 -0
  27. data/gemfiles/activerecord_4.2.gemfile +17 -0
  28. data/gemfiles/activerecord_5.0.gemfile +17 -0
  29. data/lib/acts_as_bookable/bookable/core.rb +285 -0
  30. data/lib/acts_as_bookable/bookable.rb +56 -0
  31. data/lib/acts_as_bookable/booker.rb +70 -0
  32. data/lib/acts_as_bookable/booking.rb +54 -0
  33. data/lib/acts_as_bookable/db_utils.rb +39 -0
  34. data/lib/acts_as_bookable/engine.rb +5 -0
  35. data/lib/acts_as_bookable/t.rb +11 -0
  36. data/lib/acts_as_bookable/time_utils.rb +135 -0
  37. data/lib/acts_as_bookable/version.rb +3 -0
  38. data/lib/acts_as_bookable.rb +42 -0
  39. data/lib/tasks/acts_as_bookable_tasks.rake +4 -0
  40. data/spec/acts_as_bookable/acts_as_bookable_spec.rb +52 -0
  41. data/spec/acts_as_bookable/acts_as_booker_spec.rb +57 -0
  42. data/spec/acts_as_bookable/bookable/core_spec.rb +593 -0
  43. data/spec/acts_as_bookable/bookable_spec.rb +124 -0
  44. data/spec/acts_as_bookable/booker_spec.rb +140 -0
  45. data/spec/acts_as_bookable/booking_spec.rb +241 -0
  46. data/spec/acts_as_bookable/schedule_spec.rb +137 -0
  47. data/spec/acts_as_bookable/time_utils_spec.rb +525 -0
  48. data/spec/factories/bookable.rb +7 -0
  49. data/spec/factories/booker.rb +5 -0
  50. data/spec/factories/room.rb +11 -0
  51. data/spec/internal/app/models/Bookable.rb +3 -0
  52. data/spec/internal/app/models/Booker.rb +3 -0
  53. data/spec/internal/app/models/Event.rb +3 -0
  54. data/spec/internal/app/models/Generic.rb +2 -0
  55. data/spec/internal/app/models/NotBooker.rb +2 -0
  56. data/spec/internal/app/models/Room.rb +3 -0
  57. data/spec/internal/app/models/Show.rb +3 -0
  58. data/spec/internal/app/models/Unbookable.rb +2 -0
  59. data/spec/internal/config/database.yml.sample +17 -0
  60. data/spec/internal/db/schema.rb +51 -0
  61. data/spec/spec_helper.rb +26 -0
  62. data/spec/support/0-helpers.rb +32 -0
  63. data/spec/support/1-database.rb +42 -0
  64. data/spec/support/2-database_cleaner.rb +21 -0
  65. data/spec/support/3-factory_girl.rb +12 -0
  66. metadata +296 -0
@@ -0,0 +1,32 @@
1
+ def using_sqlite?
2
+ ActsAsBookable::Utils.connection && ActsAsBookable::Utils.connection.adapter_name == 'SQLite'
3
+ end
4
+
5
+ def supports_concurrency?
6
+ !using_sqlite?
7
+ end
8
+
9
+ def using_postgresql?
10
+ ActsAsBookable::Utils.using_postgresql?
11
+ end
12
+
13
+ def postgresql_version
14
+ if using_postgresql?
15
+ ActsAsBookable::Utils.connection.execute('SHOW SERVER_VERSION').first['server_version'].to_f
16
+ else
17
+ 0.0
18
+ end
19
+ end
20
+
21
+ def postgresql_support_json?
22
+ postgresql_version >= 9.2
23
+ end
24
+
25
+
26
+ def using_mysql?
27
+ ActsAsBookable::Utils.using_mysql?
28
+ end
29
+
30
+ def using_case_insensitive_collation?
31
+ using_mysql? && ActsAsBookable::Utils.connection.collation =~ /_ci\Z/
32
+ end
@@ -0,0 +1,42 @@
1
+ # set adapter to use, default is sqlite3
2
+ # to use an alternative adapter run => rake spec DB='postgresql'
3
+ db_name = ENV['DB'] || 'sqlite3'
4
+ database_yml = File.expand_path('../../internal/config/database.yml', __FILE__)
5
+
6
+ if File.exist?(database_yml)
7
+
8
+ ActiveRecord::Migration.verbose = false
9
+ ActiveRecord::Base.default_timezone = :utc
10
+ ActiveRecord::Base.configurations = YAML.load_file(database_yml)
11
+ ActiveRecord::Base.logger = Logger.new(File.join(File.dirname(__FILE__), '../debug.log'))
12
+ ActiveRecord::Base.logger.level = ENV['TRAVIS'] ? ::Logger::ERROR : ::Logger::DEBUG
13
+ config = ActiveRecord::Base.configurations[db_name]
14
+
15
+ begin
16
+ #activerecord 4 uses symbol
17
+ #TODO, remove when activerecord 3 support is dropped
18
+ if ActsAsBookable::Utils.active_record4? || ActsAsBookable::Utils.active_record5?
19
+ ActiveRecord::Base.establish_connection(db_name.to_sym)
20
+ else
21
+ ActiveRecord::Base.establish_connection(db_name)
22
+ end
23
+ ActiveRecord::Base.connection
24
+ rescue
25
+ case db_name
26
+ when /mysql/
27
+ ActiveRecord::Base.establish_connection(config.merge('database' => nil))
28
+ ActiveRecord::Base.connection.create_database(config['database'], {charset: 'utf8', collation: 'utf8_unicode_ci'})
29
+ when 'postgresql'
30
+ ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
31
+ ActiveRecord::Base.connection.create_database(config['database'], config.merge('encoding' => 'utf8'))
32
+ end
33
+
34
+ ActiveRecord::Base.establish_connection(config)
35
+ end
36
+
37
+ load(File.dirname(__FILE__) + '/../internal/db/schema.rb')
38
+ # load(File.dirname(__FILE__) + '/../internal/app/models/models.rb')
39
+ Dir['./spec/internal/app/models/*.rb'].sort.each { |f| load f }
40
+ else
41
+ fail "Please create #{database_yml} first to configure your database. Take a look at: #{database_yml}.sample"
42
+ end
@@ -0,0 +1,21 @@
1
+ RSpec.configure do |config|
2
+
3
+ config.before(:suite) do
4
+ DatabaseCleaner.clean_with(:truncation)
5
+ DatabaseCleaner.strategy = :transaction
6
+ DatabaseCleaner.clean
7
+ end
8
+
9
+ config.after(:suite) do
10
+ DatabaseCleaner.clean
11
+ end
12
+
13
+ config.before(:each) do
14
+ DatabaseCleaner.start
15
+ end
16
+
17
+ config.after(:each) do
18
+ DatabaseCleaner.clean
19
+ end
20
+
21
+ end
@@ -0,0 +1,12 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+
4
+ config.before(:suite) do
5
+ begin
6
+ DatabaseCleaner.start
7
+ FactoryGirl.lint
8
+ ensure
9
+ DatabaseCleaner.clean
10
+ end
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_bookable
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chosko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: ice_cube_chosko
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.1.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '3.2'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '5'
47
+ - !ruby/object:Gem::Dependency
48
+ name: sqlite3
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: mysql2
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: 0.3.7
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: 0.3.7
75
+ - !ruby/object:Gem::Dependency
76
+ name: pg
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: rspec-rails
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: rspec
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_girl_rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: barrier
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: database_cleaner
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ - !ruby/object:Gem::Dependency
160
+ name: awesome_print
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ description: The reservation engine for Rails applications that allows resources to
174
+ be booked
175
+ email:
176
+ - ruben.caliandro@gmail.com
177
+ executables: []
178
+ extensions: []
179
+ extra_rdoc_files: []
180
+ files:
181
+ - ".gitignore"
182
+ - ".rspec"
183
+ - ".ruby-version"
184
+ - ".travis.yml"
185
+ - Appraisals
186
+ - Gemfile
187
+ - Gemfile.lock
188
+ - Guardfile
189
+ - MIT-LICENSE
190
+ - README.md
191
+ - Rakefile
192
+ - acts_as_bookable.gemspec
193
+ - app/assets/images/acts_as_bookable/.keep
194
+ - app/assets/javascripts/acts_as_bookable/application.js
195
+ - app/assets/stylesheets/acts_as_bookable/application.css
196
+ - app/controllers/acts_as_bookable/application_controller.rb
197
+ - app/helpers/acts_as_bookable/application_helper.rb
198
+ - app/views/layouts/acts_as_bookable/application.html.erb
199
+ - bin/rails
200
+ - config/locales/en.yml
201
+ - config/routes.rb
202
+ - db/migrate/20160217085200_create_acts_as_bookable_bookings.rb
203
+ - gemfiles/activerecord_3.2.gemfile
204
+ - gemfiles/activerecord_4.0.gemfile
205
+ - gemfiles/activerecord_4.1.gemfile
206
+ - gemfiles/activerecord_4.2.gemfile
207
+ - gemfiles/activerecord_5.0.gemfile
208
+ - lib/acts_as_bookable.rb
209
+ - lib/acts_as_bookable/bookable.rb
210
+ - lib/acts_as_bookable/bookable/core.rb
211
+ - lib/acts_as_bookable/booker.rb
212
+ - lib/acts_as_bookable/booking.rb
213
+ - lib/acts_as_bookable/db_utils.rb
214
+ - lib/acts_as_bookable/engine.rb
215
+ - lib/acts_as_bookable/t.rb
216
+ - lib/acts_as_bookable/time_utils.rb
217
+ - lib/acts_as_bookable/version.rb
218
+ - lib/tasks/acts_as_bookable_tasks.rake
219
+ - spec/acts_as_bookable/acts_as_bookable_spec.rb
220
+ - spec/acts_as_bookable/acts_as_booker_spec.rb
221
+ - spec/acts_as_bookable/bookable/core_spec.rb
222
+ - spec/acts_as_bookable/bookable_spec.rb
223
+ - spec/acts_as_bookable/booker_spec.rb
224
+ - spec/acts_as_bookable/booking_spec.rb
225
+ - spec/acts_as_bookable/schedule_spec.rb
226
+ - spec/acts_as_bookable/time_utils_spec.rb
227
+ - spec/factories/bookable.rb
228
+ - spec/factories/booker.rb
229
+ - spec/factories/room.rb
230
+ - spec/internal/app/models/Bookable.rb
231
+ - spec/internal/app/models/Booker.rb
232
+ - spec/internal/app/models/Event.rb
233
+ - spec/internal/app/models/Generic.rb
234
+ - spec/internal/app/models/NotBooker.rb
235
+ - spec/internal/app/models/Room.rb
236
+ - spec/internal/app/models/Show.rb
237
+ - spec/internal/app/models/Unbookable.rb
238
+ - spec/internal/config/database.yml.sample
239
+ - spec/internal/db/schema.rb
240
+ - spec/spec_helper.rb
241
+ - spec/support/0-helpers.rb
242
+ - spec/support/1-database.rb
243
+ - spec/support/2-database_cleaner.rb
244
+ - spec/support/3-factory_girl.rb
245
+ homepage: https://github.com/tandusrl/acts_as_bookable
246
+ licenses:
247
+ - MIT
248
+ metadata: {}
249
+ post_install_message:
250
+ rdoc_options: []
251
+ require_paths:
252
+ - lib
253
+ required_ruby_version: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: 2.0.0
258
+ required_rubygems_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ requirements: []
264
+ rubyforge_project:
265
+ rubygems_version: 2.5.1
266
+ signing_key:
267
+ specification_version: 4
268
+ summary: The reservation engine for Rails applications that allows resources to be
269
+ booked
270
+ test_files:
271
+ - spec/acts_as_bookable/acts_as_bookable_spec.rb
272
+ - spec/acts_as_bookable/acts_as_booker_spec.rb
273
+ - spec/acts_as_bookable/bookable/core_spec.rb
274
+ - spec/acts_as_bookable/bookable_spec.rb
275
+ - spec/acts_as_bookable/booker_spec.rb
276
+ - spec/acts_as_bookable/booking_spec.rb
277
+ - spec/acts_as_bookable/schedule_spec.rb
278
+ - spec/acts_as_bookable/time_utils_spec.rb
279
+ - spec/factories/bookable.rb
280
+ - spec/factories/booker.rb
281
+ - spec/factories/room.rb
282
+ - spec/internal/app/models/Bookable.rb
283
+ - spec/internal/app/models/Booker.rb
284
+ - spec/internal/app/models/Event.rb
285
+ - spec/internal/app/models/Generic.rb
286
+ - spec/internal/app/models/NotBooker.rb
287
+ - spec/internal/app/models/Room.rb
288
+ - spec/internal/app/models/Show.rb
289
+ - spec/internal/app/models/Unbookable.rb
290
+ - spec/internal/config/database.yml.sample
291
+ - spec/internal/db/schema.rb
292
+ - spec/spec_helper.rb
293
+ - spec/support/0-helpers.rb
294
+ - spec/support/1-database.rb
295
+ - spec/support/2-database_cleaner.rb
296
+ - spec/support/3-factory_girl.rb