web47core 0.0.2 → 0.0.7
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 +4 -4
- data/.circleci/config.yml +58 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +33 -0
- data/Gemfile +19 -0
- data/Gemfile.lock +277 -0
- data/README.md +38 -0
- data/Rakefile +7 -0
- data/lib/app/models/concerns/auto_clear_cache.rb +34 -0
- data/lib/app/models/concerns/cdn_url.rb +52 -0
- data/lib/app/models/concerns/core_system_configuration.rb +258 -0
- data/lib/app/models/concerns/standard_model.rb +20 -0
- data/lib/web47core.rb +4 -1
- data/test/models/concerns/auto_clear_cache_test.rb +27 -0
- data/test/models/concerns/cdn_url_test.rb +54 -0
- data/test/models/concerns/system_configuration_test.rb +223 -0
- data/test/rails_setup.rb +4 -3
- data/test/shoulda_macros/mongoid.rb +70 -0
- data/test/test_helper.rb +13 -33
- data/web47core.gemspec +50 -0
- metadata +90 -32
@@ -0,0 +1,70 @@
|
|
1
|
+
module ActiveSupport
|
2
|
+
class TestCase
|
3
|
+
class << self
|
4
|
+
def should_have_field(name, options = {})
|
5
|
+
should "have field named #{name}" do
|
6
|
+
assert subject.class.fields[name.to_s], "#{name} field not present"
|
7
|
+
assert_equal options, subject.class.fields[name.to_s].options
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
#
|
12
|
+
# NOTE: Temporarily commented out methods until we need them to avoid Codacy issues
|
13
|
+
#
|
14
|
+
# def should_have_index(name, options = { unique: false })
|
15
|
+
# should "have index on #{name.inspect}" do
|
16
|
+
# assert_equal options, subject.class.index_options[name]
|
17
|
+
# end
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
def should_be_embedded_in(name, options = {})
|
21
|
+
should_have_relation name, Mongoid::Relations::Embedded::In, 'be embedded in'
|
22
|
+
end
|
23
|
+
#
|
24
|
+
# def should_embed_many(name)
|
25
|
+
# should_have_relation name, Mongoid::Relations::Embedded::Many, 'embed many'
|
26
|
+
# end
|
27
|
+
#
|
28
|
+
# def should_embed_one(name)
|
29
|
+
# should_have_relation name, Mongoid::Relations::Embedded::One, 'embed one'
|
30
|
+
# end
|
31
|
+
|
32
|
+
def should_reference_many(name, _options = {})
|
33
|
+
should_have_relation name, Mongoid::Relations::Referenced::Many, 'reference many'
|
34
|
+
end
|
35
|
+
alias should_have_many should_reference_many
|
36
|
+
#
|
37
|
+
# def should_reference_and_be_referenced_in_many(name, options = {})
|
38
|
+
# should_have_relation name, Mongoid::Relations::Referenced::ManyToMany, 'reference and be referenced in many'
|
39
|
+
# end
|
40
|
+
# alias should_have_and_belong_to_many should_reference_and_be_referenced_in_many
|
41
|
+
|
42
|
+
def should_reference_one(name)
|
43
|
+
should_have_relation name, Mongoid::Relations::Referenced::One, 'reference one'
|
44
|
+
end
|
45
|
+
alias should_have_one should_reference_one
|
46
|
+
|
47
|
+
def should_be_referenced_in(name)
|
48
|
+
should_have_relation name, Mongoid::Relations::Referenced::In, 'be referenced in'
|
49
|
+
end
|
50
|
+
alias should_belong_to should_be_referenced_in
|
51
|
+
|
52
|
+
def should_have_relation(name, relation_class, relationship)
|
53
|
+
should "#{relationship} #{name}" do
|
54
|
+
reflection = subject.class.reflect_on_association(name)
|
55
|
+
assert reflection.present?, "#{name} association not present"
|
56
|
+
assert_equal relation_class, reflection.relation
|
57
|
+
end
|
58
|
+
end
|
59
|
+
#
|
60
|
+
# def should_have_scope(name, conditions = {})
|
61
|
+
# should "have scope #{name}" do
|
62
|
+
# scope = subject.class.scopes[name.to_sym]
|
63
|
+
# assert scope.present?, "#{name} scope not present"
|
64
|
+
# assert_equal conditions, scope.conditions
|
65
|
+
# end
|
66
|
+
# end
|
67
|
+
# alias should_have_named_scope should_have_scope
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -1,23 +1,21 @@
|
|
1
|
+
ENV['RAILS_ENV'] = 'test'
|
2
|
+
|
1
3
|
if ENV['CODACY_PROJECT_TOKEN']
|
2
4
|
require 'simplecov'
|
3
5
|
require 'codacy-coverage'
|
4
6
|
|
5
7
|
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter,
|
6
8
|
Codacy::Formatter])
|
7
|
-
|
8
9
|
Codacy::Reporter.start do
|
9
|
-
add_filter 'vendor'
|
10
10
|
add_filter '/spec/'
|
11
|
+
add_filter '/test/'
|
11
12
|
add_filter '/config/'
|
12
|
-
add_filter '
|
13
|
-
add_filter '/vendor/'
|
13
|
+
add_filter 'vendor/**/*'
|
14
14
|
end
|
15
|
-
SimpleCov.start 'rails'
|
16
15
|
end
|
17
16
|
|
18
17
|
require 'rubygems'
|
19
18
|
require 'mongoid'
|
20
|
-
require 'database_cleaner'
|
21
19
|
require_relative 'rails_setup'
|
22
20
|
require 'rails/test_help'
|
23
21
|
require 'test/unit'
|
@@ -27,15 +25,21 @@ require 'minitest/rails/capybara'
|
|
27
25
|
require 'minitest/reporters'
|
28
26
|
require 'factory_bot'
|
29
27
|
require 'webmock/minitest'
|
28
|
+
require 'database_cleaner'
|
30
29
|
Mongoid.logger.level = Logger::ERROR
|
31
30
|
Mongo::Logger.logger.level = Logger::ERROR
|
32
31
|
DatabaseCleaner.strategy = :truncation
|
33
|
-
if ['CODACY_PROJECT_TOKEN']
|
32
|
+
if ENV['CODACY_PROJECT_TOKEN']
|
34
33
|
Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new)
|
35
34
|
else
|
36
35
|
Minitest::Reporters.use!(Minitest::Reporters::RubyMineReporter.new)
|
37
36
|
end
|
38
37
|
|
38
|
+
class SystemConfiguration
|
39
|
+
include StandardModel
|
40
|
+
include CoreSystemConfiguration
|
41
|
+
end
|
42
|
+
|
39
43
|
module ActiveSupport
|
40
44
|
class TestCase
|
41
45
|
FactoryBot.find_definitions
|
@@ -46,19 +50,7 @@ module ActiveSupport
|
|
46
50
|
DatabaseCleaner.clean
|
47
51
|
DatabaseCleaner.start
|
48
52
|
Rails.cache.clear
|
49
|
-
|
50
|
-
# base_url: 'http://localhost:3000',
|
51
|
-
# mailgun_api_key: 'key-4b2ee697fc07bea89d51666123503e6d',
|
52
|
-
# smtp_name: 'email',
|
53
|
-
# smtp_address: 'email@app47.com',
|
54
|
-
# smtp_port: 587,
|
55
|
-
# smtp_domain: 'app47.net',
|
56
|
-
# smtp_user_name: 'email@app47.com',
|
57
|
-
# smtp_password: 'abc123',
|
58
|
-
# smtp_enable_starttls_auto: false,
|
59
|
-
# support_email: 'support@app47.com',
|
60
|
-
# default_email: 'mailer@app47.com'
|
61
|
-
# )
|
53
|
+
SystemConfiguration.configuration.update!(base_url: 'http://localhost:3000')
|
62
54
|
WebMock.enable!
|
63
55
|
end
|
64
56
|
teardown do
|
@@ -79,19 +71,7 @@ module ActionDispatch
|
|
79
71
|
DatabaseCleaner.clean
|
80
72
|
DatabaseCleaner.start
|
81
73
|
Rails.cache.clear
|
82
|
-
|
83
|
-
# base_url: 'http://localhost:3000',
|
84
|
-
# mailgun_api_key: 'key-4b2ee697fc07bea89d51666123503e6d',
|
85
|
-
# smtp_name: 'email',
|
86
|
-
# smtp_address: 'email@app47.com',
|
87
|
-
# smtp_port: 587,
|
88
|
-
# smtp_domain: 'app47.net',
|
89
|
-
# smtp_user_name: 'email@app47.com',
|
90
|
-
# smtp_password: 'abc123',
|
91
|
-
# smtp_enable_starttls_auto: false,
|
92
|
-
# support_email: 'support@app47.com',
|
93
|
-
# default_email: 'mailer@app47.com'
|
94
|
-
# )
|
74
|
+
SystemConfiguration.configuration.update!(base_url: 'http://localhost:3000')
|
95
75
|
WebMock.enable!
|
96
76
|
end
|
97
77
|
teardown do
|
data/web47core.gemspec
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Spec of App47 Web Core GEM
|
3
|
+
#
|
4
|
+
lib = File.expand_path('../lib', __FILE__)
|
5
|
+
|
6
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.required_ruby_version = '~> 2.4.1'
|
10
|
+
spec.name = 'web47core'
|
11
|
+
spec.version = '0.0.7'
|
12
|
+
spec.authors = ['Chris Schroeder']
|
13
|
+
spec.email = ['chris@app47.com']
|
14
|
+
spec.summary = 'App47 Web Core Library.'
|
15
|
+
spec.description = 'Common core components used in all our web products.'
|
16
|
+
spec.homepage = 'https://app47.com'
|
17
|
+
spec.license = 'MIT'
|
18
|
+
|
19
|
+
spec.files = `git ls-files -z`.split("\x0")
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
spec.test_files = spec.files.grep(%r{^(test)/})
|
22
|
+
spec.require_paths = ['lib']
|
23
|
+
|
24
|
+
# spec.add_dependency 'json'
|
25
|
+
spec.add_runtime_dependency 'aws-sdk-ec2', '>= 1.60', '<= 1.151'
|
26
|
+
spec.add_runtime_dependency 'activesupport', '~> 5.0'
|
27
|
+
spec.add_runtime_dependency 'delayed_job_mongoid', '~> 2.3'
|
28
|
+
spec.add_runtime_dependency 'jwt'
|
29
|
+
spec.add_runtime_dependency 'mongoid', '> 6', '< 7'
|
30
|
+
spec.add_runtime_dependency 'rails', '< 5.3', '>= 4.2'
|
31
|
+
spec.add_runtime_dependency 'redis', '~> 4.1'
|
32
|
+
spec.add_runtime_dependency 'redis-rails', '> 5', '< 6'
|
33
|
+
spec.add_development_dependency 'bundler'
|
34
|
+
spec.add_development_dependency 'codacy-coverage', '~> 2.1.0'
|
35
|
+
spec.add_development_dependency 'database_cleaner'
|
36
|
+
spec.add_development_dependency 'factory_bot'
|
37
|
+
spec.add_development_dependency 'factory_bot_rails'
|
38
|
+
spec.add_development_dependency 'listen'
|
39
|
+
spec.add_development_dependency 'minitest', '= 5.10.3'
|
40
|
+
spec.add_development_dependency 'minitest-rails', '= 3.0.0'
|
41
|
+
spec.add_development_dependency 'minitest-rails-capybara', '= 3.0.1'
|
42
|
+
spec.add_development_dependency 'minitest-reporters'
|
43
|
+
spec.add_development_dependency 'mocha'
|
44
|
+
spec.add_development_dependency 'shoulda', '= 3.6.0'
|
45
|
+
spec.add_development_dependency 'shoulda-matchers', '= 3.1.2'
|
46
|
+
spec.add_development_dependency 'simplecov', '= 0.16.1'
|
47
|
+
spec.add_development_dependency 'test-unit'
|
48
|
+
spec.add_development_dependency 'vcr'
|
49
|
+
spec.add_development_dependency 'webmock'
|
50
|
+
end
|
metadata
CHANGED
@@ -1,111 +1,151 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: web47core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Schroeder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: aws-sdk-ec2
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '1.60'
|
20
|
+
- - "<="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '1.151'
|
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
|
-
version: '
|
29
|
+
version: '1.60'
|
30
|
+
- - "<="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '1.151'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
34
|
+
name: activesupport
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - "~>"
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
39
|
+
version: '5.0'
|
34
40
|
type: :runtime
|
35
41
|
prerelease: false
|
36
42
|
version_requirements: !ruby/object:Gem::Requirement
|
37
43
|
requirements:
|
38
44
|
- - "~>"
|
39
45
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
46
|
+
version: '5.0'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
48
|
+
name: delayed_job_mongoid
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
44
50
|
requirements:
|
45
51
|
- - "~>"
|
46
52
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
53
|
+
version: '2.3'
|
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: '
|
60
|
+
version: '2.3'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
62
|
+
name: jwt
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
58
64
|
requirements:
|
59
|
-
- - "
|
65
|
+
- - ">="
|
60
66
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
67
|
+
version: '0'
|
62
68
|
type: :runtime
|
63
69
|
prerelease: false
|
64
70
|
version_requirements: !ruby/object:Gem::Requirement
|
65
71
|
requirements:
|
66
|
-
- - "
|
72
|
+
- - ">="
|
67
73
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
74
|
+
version: '0'
|
69
75
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
76
|
+
name: mongoid
|
71
77
|
requirement: !ruby/object:Gem::Requirement
|
72
78
|
requirements:
|
73
79
|
- - ">"
|
74
80
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
81
|
+
version: '6'
|
76
82
|
- - "<"
|
77
83
|
- !ruby/object:Gem::Version
|
78
|
-
version: '
|
84
|
+
version: '7'
|
79
85
|
type: :runtime
|
80
86
|
prerelease: false
|
81
87
|
version_requirements: !ruby/object:Gem::Requirement
|
82
88
|
requirements:
|
83
89
|
- - ">"
|
84
90
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
91
|
+
version: '6'
|
86
92
|
- - "<"
|
87
93
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
94
|
+
version: '7'
|
89
95
|
- !ruby/object:Gem::Dependency
|
90
96
|
name: rails
|
91
97
|
requirement: !ruby/object:Gem::Requirement
|
92
98
|
requirements:
|
99
|
+
- - ">="
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '4.2'
|
93
102
|
- - "<"
|
94
103
|
- !ruby/object:Gem::Version
|
95
104
|
version: '5.3'
|
105
|
+
type: :runtime
|
106
|
+
prerelease: false
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
96
109
|
- - ">="
|
97
110
|
- !ruby/object:Gem::Version
|
98
111
|
version: '4.2'
|
112
|
+
- - "<"
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: '5.3'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: redis
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - "~>"
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '4.1'
|
99
122
|
type: :runtime
|
100
123
|
prerelease: false
|
101
124
|
version_requirements: !ruby/object:Gem::Requirement
|
102
125
|
requirements:
|
126
|
+
- - "~>"
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '4.1'
|
129
|
+
- !ruby/object:Gem::Dependency
|
130
|
+
name: redis-rails
|
131
|
+
requirement: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">"
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '5'
|
103
136
|
- - "<"
|
104
137
|
- !ruby/object:Gem::Version
|
105
|
-
version: '
|
106
|
-
|
138
|
+
version: '6'
|
139
|
+
type: :runtime
|
140
|
+
prerelease: false
|
141
|
+
version_requirements: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">"
|
107
144
|
- !ruby/object:Gem::Version
|
108
|
-
version: '
|
145
|
+
version: '5'
|
146
|
+
- - "<"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '6'
|
109
149
|
- !ruby/object:Gem::Dependency
|
110
150
|
name: bundler
|
111
151
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,16 +332,16 @@ dependencies:
|
|
292
332
|
name: simplecov
|
293
333
|
requirement: !ruby/object:Gem::Requirement
|
294
334
|
requirements:
|
295
|
-
- -
|
335
|
+
- - '='
|
296
336
|
- !ruby/object:Gem::Version
|
297
|
-
version:
|
337
|
+
version: 0.16.1
|
298
338
|
type: :development
|
299
339
|
prerelease: false
|
300
340
|
version_requirements: !ruby/object:Gem::Requirement
|
301
341
|
requirements:
|
302
|
-
- -
|
342
|
+
- - '='
|
303
343
|
- !ruby/object:Gem::Version
|
304
|
-
version:
|
344
|
+
version: 0.16.1
|
305
345
|
- !ruby/object:Gem::Dependency
|
306
346
|
name: test-unit
|
307
347
|
requirement: !ruby/object:Gem::Requirement
|
@@ -351,14 +391,28 @@ executables: []
|
|
351
391
|
extensions: []
|
352
392
|
extra_rdoc_files: []
|
353
393
|
files:
|
394
|
+
- ".circleci/config.yml"
|
354
395
|
- ".gitignore"
|
396
|
+
- ".rubocop.yml"
|
397
|
+
- Gemfile
|
398
|
+
- Gemfile.lock
|
355
399
|
- LICENSE
|
356
400
|
- README.md
|
401
|
+
- Rakefile
|
402
|
+
- lib/app/models/concerns/auto_clear_cache.rb
|
403
|
+
- lib/app/models/concerns/cdn_url.rb
|
404
|
+
- lib/app/models/concerns/core_system_configuration.rb
|
405
|
+
- lib/app/models/concerns/standard_model.rb
|
357
406
|
- lib/web47core.rb
|
358
407
|
- test/fixtures/mongoid.yml
|
408
|
+
- test/models/concerns/auto_clear_cache_test.rb
|
409
|
+
- test/models/concerns/cdn_url_test.rb
|
410
|
+
- test/models/concerns/system_configuration_test.rb
|
359
411
|
- test/rails_setup.rb
|
412
|
+
- test/shoulda_macros/mongoid.rb
|
360
413
|
- test/test_helper.rb
|
361
|
-
|
414
|
+
- web47core.gemspec
|
415
|
+
homepage: https://app47.com
|
362
416
|
licenses:
|
363
417
|
- MIT
|
364
418
|
metadata: {}
|
@@ -377,11 +431,15 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
377
431
|
- !ruby/object:Gem::Version
|
378
432
|
version: '0'
|
379
433
|
requirements: []
|
380
|
-
rubygems_version: 3.
|
434
|
+
rubygems_version: 3.0.8
|
381
435
|
signing_key:
|
382
436
|
specification_version: 4
|
383
437
|
summary: App47 Web Core Library.
|
384
438
|
test_files:
|
385
439
|
- test/fixtures/mongoid.yml
|
440
|
+
- test/models/concerns/auto_clear_cache_test.rb
|
441
|
+
- test/models/concerns/cdn_url_test.rb
|
442
|
+
- test/models/concerns/system_configuration_test.rb
|
386
443
|
- test/rails_setup.rb
|
444
|
+
- test/shoulda_macros/mongoid.rb
|
387
445
|
- test/test_helper.rb
|