acts_as_bookable 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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