diff --git a/.travis.yml b/.travis.yml index 32e278ce..526916eb 100755 --- a/.travis.yml +++ b/.travis.yml @@ -18,3 +18,8 @@ env: script: - docker-compose run web rails db:test:prepare - docker-compose run web rspec + +test: + testLogging: + - events "passed", "skipped", "failed" + - exceptionFormat "full" \ No newline at end of file diff --git a/Gemfile b/Gemfile index 924d562c..e7a03573 100755 --- a/Gemfile +++ b/Gemfile @@ -124,7 +124,7 @@ group :test do gem 'capybara', '>= 2.15' # Easy installation and use of chromedriver to run system tests with Chrome gem 'chromedriver-helper' - gem 'database_cleaner' + gem 'database_cleaner-active_record' gem 'factory_bot_rails' gem 'poltergeist' gem 'selenium-webdriver' diff --git a/Gemfile.lock b/Gemfile.lock index fe85e359..fcfb2fa6 100755 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -45,9 +45,9 @@ GEM tzinfo (~> 1.1) addressable (2.5.2) public_suffix (>= 2.0.2, < 4.0) - airbrake (8.1.4) - airbrake-ruby (~> 3.2) - airbrake-ruby (3.2.6) + airbrake (10.0.0) + airbrake-ruby (~> 4.12) + airbrake-ruby (4.13.0) rbtree3 (~> 0.5) and_feathers (0.0.1) and_feathers-gzipped_tarball (1.0.0.pre) @@ -112,7 +112,10 @@ GEM crass (1.0.4) css_parser (1.7.0) addressable - database_cleaner (1.7.0) + database_cleaner (1.8.0.beta) + database_cleaner-active_record (1.8.0.beta) + activerecord + database_cleaner (~> 1.8.0.beta) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) diff-lcs (1.3) @@ -288,7 +291,7 @@ GEM rb-fsevent (0.10.3) rb-inotify (0.10.0) ffi (~> 1.0) - rbtree3 (0.5.0) + rbtree3 (0.6.0) redcarpet (3.4.0) redis (4.1.0) regexp_parser (1.3.0) @@ -441,7 +444,7 @@ DEPENDENCIES chromedriver-helper coffee-rails (~> 4.2) commonmarker - database_cleaner + database_cleaner-active_record dotenv-rails email_reply_parser escape_utils diff --git a/app/controllers/concerns/annotations.rb b/app/controllers/concerns/annotations.rb index eb06d1b8..45103e72 100755 --- a/app/controllers/concerns/annotations.rb +++ b/app/controllers/concerns/annotations.rb @@ -14,7 +14,7 @@ def common_annotations(extension, version, asset=nil) version.release_assets.map{|a| a.labels}.flatten.reject(&:blank?).uniq.sort.join(', ') end tags ||= nil - owner_name = extension.hosted? ? ENV['HOST_ORGANIZATION'] : extension.owner_name + owner_name = extension.hosted? ? ENV['HOST_ORGANIZATION'] : extension.owner_name.downcase annotations = { 'io.sensu.bonsai.url' => owner_scoped_extension_url(extension), diff --git a/app/models/extension.rb b/app/models/extension.rb index 3e03ced7..061de07d 100755 --- a/app/models/extension.rb +++ b/app/models/extension.rb @@ -84,7 +84,7 @@ class Extension < ApplicationRecord } scope :in_namespace, lambda { |namespace| - where(owner_name: namespace) + where(Extension.arel_table[:owner_name].matches(namespace)) } scope :supported_platforms, lambda { |sp_ids| @@ -161,13 +161,13 @@ class Extension < ApplicationRecord class << self def with_owner_and_lowercase_name(owner_name:, lowercase_name:) - Extension.find_by!(owner_name: owner_name, lowercase_name: lowercase_name) + Extension.where(Extension.arel_table[:owner_name].matches(owner_name)).where(lowercase_name: lowercase_name).first! end def filter_private(current_user) if current_user.present? user_names = current_user.accounts.for(:github).map(&:username) - where("COALESCE(extensions.privacy, false) = false OR extensions.owner_name = ?", user_names) + where("COALESCE(extensions.privacy, false) = false OR extensions.owner_name ILIKE ?", user_names) else where("COALESCE(extensions.privacy, false) = false") end diff --git a/app/workers/extension_notify_worker.rb b/app/workers/extension_notify_worker.rb index cc390d4b..ca160050 100755 --- a/app/workers/extension_notify_worker.rb +++ b/app/workers/extension_notify_worker.rb @@ -1,4 +1,5 @@ -class ExtensionNotifyWorker +class ExtensionNotifyWorker < ApplicationWorker + # # Notify all followers that a new version of the specified +Extension+ has been updated. # This will only email the follower if the user has email notifications turned on. @@ -31,4 +32,5 @@ def perform(extension_version_id) ExtensionMailer.follower_notification_email(extension_version, extension_follower.user).deliver end end + end diff --git a/spec/models/extension_spec.rb b/spec/models/extension_spec.rb index fc39b60c..6980003e 100755 --- a/spec/models/extension_spec.rb +++ b/spec/models/extension_spec.rb @@ -42,6 +42,13 @@ end + describe "with_owner_and_lowercase_name" do + let(:extension) { create(:extension, owner_name: 'MiXeDcAsE')} + it 'returns_extension_case_insensitive' do + expect(Extension.with_owner_and_lowercase_name(owner_name: 'mixedcase', lowercase_name: extension.lowercase_name)).to eq(extension) + end + end + describe "sorted_extension_versions" do let(:extension) { create(:extension, extension_versions_count: 6) } let(:versions ) { extension.extension_versions } diff --git a/spec/rails_helper.rb b/spec/rails_helper.rb index 71d342ae..5b7a2c8a 100755 --- a/spec/rails_helper.rb +++ b/spec/rails_helper.rb @@ -1,19 +1,17 @@ require 'spec_helper' -require 'database_cleaner' +require 'database_cleaner/active_record' RSpec.configure do |config| config.before(:suite) do + DatabaseCleaner.strategy = :transaction DatabaseCleaner.clean_with(:truncation) end - config.before(:each) do - DatabaseCleaner.strategy = :transaction - DatabaseCleaner.start - end - - config.append_after(:each) do - DatabaseCleaner.clean + config.around(:each) do |test| + DatabaseCleaner.cleaning do + test.run + end end end \ No newline at end of file