web47core 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/{lib/app → app}/assets/stylesheets/status.sass +0 -0
- data/{lib/app → app}/controllers/status_controller.rb +0 -0
- data/{lib/app → app}/views/status/index.html.haml +0 -0
- metadata +6 -79
- data/.circleci/config.yml +0 -58
- data/.gitignore +0 -70
- data/.rubocop.yml +0 -33
- data/Gemfile +0 -5
- data/Gemfile.lock +0 -318
- data/Rakefile +0 -7
- data/bin/cron_server +0 -4
- data/test/controllers/status_controller_test.rb +0 -158
- data/test/factories/account_factories.rb +0 -9
- data/test/factories/notification_factories.rb +0 -14
- data/test/fixtures/mongoid.yml +0 -8
- data/test/fixtures/redis/host.yml +0 -5
- data/test/fixtures/redis/options.yml +0 -8
- data/test/fixtures/redis/sentinel.yml +0 -8
- data/test/fixtures/redis/url.yml +0 -2
- data/test/jobs/cron/server_test.rb +0 -160
- data/test/jobs/cron/switchboard_sync_configuration_test.rb +0 -64
- data/test/jobs/cron/trim_cron_servers_test.rb +0 -28
- data/test/jobs/cron/trim_failed_delayed_jobs_test.rb +0 -71
- data/test/models/concerns/app47_logger_test.rb +0 -88
- data/test/models/concerns/cdn_url_test.rb +0 -54
- data/test/models/concerns/email_able_test.rb +0 -145
- data/test/models/concerns/search_able_test.rb +0 -80
- data/test/models/concerns/standard_model_test.rb +0 -154
- data/test/models/concerns/system_configuration_test.rb +0 -212
- data/test/models/concerns/time_zone_able_test.rb +0 -77
- data/test/models/email_notification_test.rb +0 -297
- data/test/models/job_cron_tab_test.rb +0 -25
- data/test/models/notification_test.rb +0 -127
- data/test/models/redis_configuration_test.rb +0 -86
- data/test/models/slack_notification_test.rb +0 -91
- data/test/models/sms_notification_test.rb +0 -69
- data/test/models/smtp_configuration_test.rb +0 -66
- data/test/models/web47core_test.rb +0 -18
- data/test/notification_test_helper.rb +0 -146
- data/test/rails_setup.rb +0 -61
- data/test/shoulda_macros/mongoid.rb +0 -70
- data/test/test_helper.rb +0 -93
- data/test/test_models_helper.rb +0 -14
- data/web47core.gemspec +0 -58
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class Web47coreTest < ActiveSupport::TestCase
|
4
|
-
context 'models' do
|
5
|
-
should 'email able be empty by default then able to add to it' do
|
6
|
-
assert_empty Web47core.config.email_able_models
|
7
|
-
Web47core.config.email_able_models += [Account]
|
8
|
-
assert_equal 1, Web47core.config.email_able_models.count
|
9
|
-
assert_equal Account, Web47core.config.email_able_models.first
|
10
|
-
end
|
11
|
-
should 'Switchboard able be empty by default then able to add to it' do
|
12
|
-
assert_empty Web47core.config.switchboard_able_models
|
13
|
-
Web47core.config.switchboard_able_models += [Account]
|
14
|
-
assert_equal 1, Web47core.config.switchboard_able_models.count
|
15
|
-
assert_equal Account, Web47core.config.switchboard_able_models.first
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,146 +0,0 @@
|
|
1
|
-
module NotificationTestHelper
|
2
|
-
# helper to assert no emails were sent.
|
3
|
-
def assert_no_emails(account = nil)
|
4
|
-
assert_emails_count(account, 0)
|
5
|
-
end
|
6
|
-
|
7
|
-
def assert_emails_count(account = nil, count = 1)
|
8
|
-
assert_equal count, email_notifications(account).count
|
9
|
-
end
|
10
|
-
|
11
|
-
def assert_emails_subject(subject, account = nil)
|
12
|
-
assert_emails_field(:subject, subject, account)
|
13
|
-
end
|
14
|
-
|
15
|
-
def assert_emails_from(from, account = nil)
|
16
|
-
assert_emails_field(:from, from, account)
|
17
|
-
end
|
18
|
-
|
19
|
-
def assert_emails_to(to, account = nil)
|
20
|
-
assert_emails_field(:to, to, account)
|
21
|
-
end
|
22
|
-
|
23
|
-
def assert_emails_reply_to(reply_to, account = nil)
|
24
|
-
assert_emails_field(:reply_to, reply_to, account)
|
25
|
-
end
|
26
|
-
|
27
|
-
def assert_emails_includes(parts, account = nil)
|
28
|
-
assert_notifications_includes(email_notifications(account), parts)
|
29
|
-
end
|
30
|
-
|
31
|
-
def assert_emails_excludes(parts, account = nil)
|
32
|
-
assert_notifications_excludes(email_notifications(account), parts)
|
33
|
-
end
|
34
|
-
|
35
|
-
def assert_emails_attachment_count(account = nil, count = 1)
|
36
|
-
email_notifications(account).each do |email|
|
37
|
-
assert_equal count, email.attachments.count
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
########################
|
42
|
-
# Slack notifications
|
43
|
-
#
|
44
|
-
# helper to assert no slack messages were sent.
|
45
|
-
def assert_no_slacks(account = nil)
|
46
|
-
assert_slacks_count(account, 0)
|
47
|
-
end
|
48
|
-
|
49
|
-
def assert_slacks_count(account = nil, count = 1)
|
50
|
-
assert_equal count, slack_notifications(account).where(state:'processed').count, 'Incorrect number of notifications sent'
|
51
|
-
end
|
52
|
-
|
53
|
-
def assert_slacks_includes(parts, account = nil)
|
54
|
-
assert_notifications_includes(slack_notifications(account), parts)
|
55
|
-
end
|
56
|
-
|
57
|
-
def assert_slacks_excludes(parts, account = nil)
|
58
|
-
assert_notifications_excludes(slack_notifications(account), parts)
|
59
|
-
end
|
60
|
-
|
61
|
-
########################
|
62
|
-
# SMS notifications
|
63
|
-
#
|
64
|
-
def assert_no_sms(account = nil)
|
65
|
-
assert_sms_count(account, 0)
|
66
|
-
end
|
67
|
-
|
68
|
-
def assert_sms_count(account = nil, count = 1)
|
69
|
-
assert_equal count, sms_notifications(account).count, 'Incorrect number of notifications sent'
|
70
|
-
end
|
71
|
-
|
72
|
-
def assert_sms_includes(parts, account = nil)
|
73
|
-
assert_notifications_includes(sms_notifications(account), parts)
|
74
|
-
end
|
75
|
-
|
76
|
-
def assert_sms_excludes(parts, account = nil)
|
77
|
-
assert_notifications_excludes(sms_notifications(account), parts)
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
|
82
|
-
def assert_emails_field(field, value, account = nil)
|
83
|
-
email_notifications(account).each do |email|
|
84
|
-
assert_equal value, email.send(field), "Incorrect #{field}: #{email.inspect}"
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
#
|
89
|
-
# Assert the list of notifications include parts in the message of the notification
|
90
|
-
#
|
91
|
-
def assert_notifications_includes(notifications, parts)
|
92
|
-
raise 'No matching notifications to compare' if notifications.blank?
|
93
|
-
|
94
|
-
notifications.each do |notification|
|
95
|
-
message = notification.message
|
96
|
-
assert_not_nil message, "Message should not be nil: #{notification.inspect}"
|
97
|
-
parts = [parts] unless parts.is_a?(Array)
|
98
|
-
parts.each do |part|
|
99
|
-
assert message.to_s.include?(part), "Does not have message part '#{part}' in message: \n#{message}"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
#
|
105
|
-
# Assert the list of notifications exclude parts in the message of the notification
|
106
|
-
#
|
107
|
-
def assert_notifications_excludes(notifications, parts)
|
108
|
-
raise 'No matching notifications to compare' if notifications.blank?
|
109
|
-
|
110
|
-
notifications.each do |notification|
|
111
|
-
message = notification.message
|
112
|
-
assert_not_nil message, "Message should not be nil: #{notification.inspect}"
|
113
|
-
parts = [parts] unless parts.is_a?(Array)
|
114
|
-
parts.each do |part|
|
115
|
-
refute message.to_s.include?(part), "Message should not have part '#{part}' in message: \n#{message}"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
#
|
121
|
-
# Get email notifications for an account
|
122
|
-
#
|
123
|
-
def email_notifications(account = nil)
|
124
|
-
return EmailNotification.all if account.nil?
|
125
|
-
|
126
|
-
account.is_a?(Account) ? account.notifications.emails : EmailNotification.where(account_id: account)
|
127
|
-
end
|
128
|
-
|
129
|
-
#
|
130
|
-
# Get slack notifications for an account
|
131
|
-
#
|
132
|
-
def slack_notifications(account = nil)
|
133
|
-
return SlackNotification.all if account.nil?
|
134
|
-
|
135
|
-
account.is_a?(Account) ? account.notifications.slacks : SlackNotification.where(account_id: account)
|
136
|
-
end
|
137
|
-
|
138
|
-
#
|
139
|
-
# Get SMS notification for an account
|
140
|
-
#
|
141
|
-
def sms_notifications(account = nil)
|
142
|
-
return SmsNotification.all if account.nil?
|
143
|
-
|
144
|
-
account.is_a?(Account) ? account.notifications.sms : SmsNotification.where(account_id: account)
|
145
|
-
end
|
146
|
-
end
|
data/test/rails_setup.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
# require File.expand_path('../../config/environment', __FILE__)
|
2
|
-
# Load the Rails application.
|
3
|
-
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
4
|
-
|
5
|
-
require 'bundler/setup' # Set up gems listed in the Gemfile.
|
6
|
-
|
7
|
-
require 'rails'
|
8
|
-
|
9
|
-
%w[
|
10
|
-
action_controller/railtie
|
11
|
-
action_view/railtie
|
12
|
-
action_mailer/railtie
|
13
|
-
active_job/railtie
|
14
|
-
action_cable/engine
|
15
|
-
rails/test_unit/railtie
|
16
|
-
sprockets/railtie
|
17
|
-
].each do |railtie|
|
18
|
-
begin
|
19
|
-
require railtie
|
20
|
-
rescue LoadError => error
|
21
|
-
puts 'Unable to load libraries'
|
22
|
-
puts error.message
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
require 'mail'
|
27
|
-
|
28
|
-
# Require the gems listed in Gemfile, including any gems
|
29
|
-
# you've limited to :test, :development, or :production.
|
30
|
-
Bundler.require(*Rails.groups)
|
31
|
-
|
32
|
-
|
33
|
-
module WebCore
|
34
|
-
class Application < Rails::Application
|
35
|
-
# Settings in config/environments/* take precedence over those specified here.
|
36
|
-
# Application configuration should go into files in config/initializers
|
37
|
-
# -- all .rb files in that directory are automatically loaded.
|
38
|
-
# Configure redis cache
|
39
|
-
config.eager_load = false
|
40
|
-
config.cache_store = :redis_store, 'redis://127.0.0.1:6379/11/cache'
|
41
|
-
config.autoload_paths += %W(#{config.root}/lib)
|
42
|
-
config.generators do |g|
|
43
|
-
g.template_engine :haml
|
44
|
-
g.orm :mongoid
|
45
|
-
g.test_framework :shoulda
|
46
|
-
g.fallbacks[:shoulda] = :test_unit
|
47
|
-
g.fixture_replacement :factory_bot
|
48
|
-
end
|
49
|
-
config.active_job.queue_adapter = :delayed_job
|
50
|
-
|
51
|
-
# Configure the default encoding used in templates for Ruby 1.9.
|
52
|
-
config.encoding = 'utf-8'
|
53
|
-
config.logger = Logger.new(STDOUT)
|
54
|
-
config.logger.level = Logger::DEBUG
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
Delayed::Worker.delay_jobs = false
|
59
|
-
|
60
|
-
# Initialize the Rails application.
|
61
|
-
Rails.application.initialize!
|
@@ -1,70 +0,0 @@
|
|
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
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
ENV['RAILS_ENV'] = 'test'
|
2
|
-
|
3
|
-
if ENV['CODACY_PROJECT_TOKEN']
|
4
|
-
require 'simplecov'
|
5
|
-
require 'codacy-coverage'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter,
|
8
|
-
Codacy::Formatter])
|
9
|
-
Codacy::Reporter.start do
|
10
|
-
add_filter '/spec/'
|
11
|
-
add_filter '/test/'
|
12
|
-
add_filter '/config/'
|
13
|
-
add_filter 'vendor/**/*'
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
require 'rubygems'
|
18
|
-
require 'aws-sdk-autoscaling'
|
19
|
-
require 'mongoid'
|
20
|
-
require 'delayed_job_mongoid'
|
21
|
-
require 'email_format'
|
22
|
-
require 'liquid'
|
23
|
-
require 'jwt'
|
24
|
-
require 'rest-client'
|
25
|
-
require 'twilio-ruby'
|
26
|
-
require_relative 'rails_setup'
|
27
|
-
require 'rails/test_help'
|
28
|
-
require 'test/unit'
|
29
|
-
require 'mocha/minitest'
|
30
|
-
require 'shoulda'
|
31
|
-
require 'minitest/rails/capybara'
|
32
|
-
require 'minitest/reporters'
|
33
|
-
require 'factory_bot'
|
34
|
-
require 'webmock/minitest'
|
35
|
-
require 'database_cleaner'
|
36
|
-
Mongoid.logger.level = Logger::ERROR
|
37
|
-
Mongo::Logger.logger.level = Logger::ERROR
|
38
|
-
DatabaseCleaner.strategy = :truncation
|
39
|
-
if ENV['CODACY_PROJECT_TOKEN']
|
40
|
-
Minitest::Reporters.use!(Minitest::Reporters::DefaultReporter.new)
|
41
|
-
else
|
42
|
-
Minitest::Reporters.use!(Minitest::Reporters::RubyMineReporter.new)
|
43
|
-
end
|
44
|
-
|
45
|
-
require_relative 'test_models_helper'
|
46
|
-
|
47
|
-
module ActiveSupport
|
48
|
-
class TestCase
|
49
|
-
FactoryBot.find_definitions
|
50
|
-
Shoulda.autoload_macros Rails.root.to_s
|
51
|
-
Mongoid.load!('./test/fixtures/mongoid.yml')
|
52
|
-
DatabaseCleaner.strategy = :truncation
|
53
|
-
setup do
|
54
|
-
mocha_setup
|
55
|
-
DatabaseCleaner.clean
|
56
|
-
DatabaseCleaner.start
|
57
|
-
Rails.cache.clear
|
58
|
-
SystemConfiguration.configuration.update!(base_url: 'http://localhost:3000')
|
59
|
-
WebMock.enable!
|
60
|
-
end
|
61
|
-
teardown do
|
62
|
-
DatabaseCleaner.clean
|
63
|
-
Mail::TestMailer.deliveries.clear
|
64
|
-
mocha_teardown
|
65
|
-
WebMock.disable!
|
66
|
-
WebMock.reset!
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
module ActionDispatch
|
72
|
-
class IntegrationTest
|
73
|
-
# include Devise::Test::IntegrationHelpers
|
74
|
-
Shoulda.autoload_macros Rails.root.to_s
|
75
|
-
DatabaseCleaner.strategy = :truncation
|
76
|
-
Mongoid.load!('./test/fixtures/mongoid.yml')
|
77
|
-
setup do
|
78
|
-
mocha_setup
|
79
|
-
DatabaseCleaner.clean
|
80
|
-
DatabaseCleaner.start
|
81
|
-
Rails.cache.clear
|
82
|
-
SystemConfiguration.configuration.update!(base_url: 'http://localhost:3000')
|
83
|
-
WebMock.enable!
|
84
|
-
end
|
85
|
-
teardown do
|
86
|
-
DatabaseCleaner.clean
|
87
|
-
Mail::TestMailer.deliveries.clear
|
88
|
-
mocha_teardown
|
89
|
-
WebMock.disable!
|
90
|
-
WebMock.reset!
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
data/test/test_models_helper.rb
DELETED
data/web47core.gemspec
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Spec of App47 Web Core GEM
|
3
|
-
#
|
4
|
-
lib = File.expand_path('lib', __dir__)
|
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.1.4'
|
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 'activesupport', '~> 5.0'
|
26
|
-
spec.add_runtime_dependency 'aws-sdk-autoscaling'
|
27
|
-
spec.add_runtime_dependency 'delayed_job_mongoid', '~> 2.3'
|
28
|
-
spec.add_runtime_dependency 'daemons'
|
29
|
-
spec.add_runtime_dependency 'email_format'
|
30
|
-
spec.add_runtime_dependency 'haml'
|
31
|
-
spec.add_runtime_dependency 'jwt'
|
32
|
-
spec.add_runtime_dependency 'liquid'
|
33
|
-
spec.add_runtime_dependency 'materialize-sass'
|
34
|
-
spec.add_runtime_dependency 'mongoid', '> 6', '< 7'
|
35
|
-
spec.add_runtime_dependency 'rails', '< 5.3', '>= 4.2'
|
36
|
-
spec.add_runtime_dependency 'redis', '~> 4.1'
|
37
|
-
spec.add_runtime_dependency 'redis-rails', '> 5', '< 6'
|
38
|
-
spec.add_runtime_dependency 'rest-client', '<= 2.1.0', '>=0'
|
39
|
-
spec.add_runtime_dependency 'twilio-ruby', '<= 4.13', '>= 3.0'
|
40
|
-
spec.add_runtime_dependency 'tzinfo'
|
41
|
-
spec.add_development_dependency 'bundler'
|
42
|
-
spec.add_development_dependency 'codacy-coverage', '~> 2.1.0'
|
43
|
-
spec.add_development_dependency 'database_cleaner'
|
44
|
-
spec.add_development_dependency 'factory_bot'
|
45
|
-
spec.add_development_dependency 'factory_bot_rails'
|
46
|
-
spec.add_development_dependency 'listen'
|
47
|
-
spec.add_development_dependency 'minitest', '= 5.10.3'
|
48
|
-
spec.add_development_dependency 'minitest-rails', '= 3.0.0'
|
49
|
-
spec.add_development_dependency 'minitest-rails-capybara', '= 3.0.1'
|
50
|
-
spec.add_development_dependency 'minitest-reporters'
|
51
|
-
spec.add_development_dependency 'mocha'
|
52
|
-
spec.add_development_dependency 'shoulda', '= 3.6.0'
|
53
|
-
spec.add_development_dependency 'shoulda-matchers'
|
54
|
-
spec.add_development_dependency 'simplecov', '= 0.16.1'
|
55
|
-
spec.add_development_dependency 'test-unit'
|
56
|
-
spec.add_development_dependency 'vcr'
|
57
|
-
spec.add_development_dependency 'webmock'
|
58
|
-
end
|