diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..a17d9e8 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,14 @@ +Rails: + Enabled: true + +AllCops: + TargetRubyVersion: 2.6 + +Documentation: + Enabled: false + +Style/BracesAroundHashParameters: + EnforcedStyle: context_dependent + +Layout/MultilineMethodCallBraceLayout: + EnforcedStyle: same_line diff --git a/Gemfile b/Gemfile index 3676964..3b368fb 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,5 @@ +# frozen_string_literal: true + source 'https://rubygems.org' # Specify your gem's dependencies in active_admin_datetimepicker.gemspec @@ -6,16 +8,16 @@ group :test do default_rails_version = '5.2.1' default_activeadmin_version = '1.3.1' - gem 'rails', "~> #{ENV['RAILS'] || default_rails_version}" gem 'activeadmin', "~> #{ENV['AA'] || default_activeadmin_version}" + gem 'rails', "~> #{ENV['RAILS'] || default_rails_version}" - gem 'rspec-rails' + gem 'capybara' + gem 'chromedriver-helper' gem 'coveralls', require: false # Test coverage website. Go to https://coveralls.io - gem 'sass-rails' - gem 'sqlite3' - gem 'launchy' gem 'database_cleaner' - gem 'capybara' + gem 'launchy' + gem 'rspec-rails' + gem 'sass-rails' gem 'selenium-webdriver' - gem 'chromedriver-helper' + gem 'sqlite3' end diff --git a/Rakefile b/Rakefile index a5cc536..d20caef 100644 --- a/Rakefile +++ b/Rakefile @@ -1,4 +1,6 @@ -require "bundler" +# frozen_string_literal: true + +require 'bundler' require 'rake' Bundler.setup Bundler::GemHelper.install_tasks diff --git a/active_admin_datetimepicker.gemspec b/active_admin_datetimepicker.gemspec index 04c164e..6f4d9a2 100644 --- a/active_admin_datetimepicker.gemspec +++ b/active_admin_datetimepicker.gemspec @@ -1,24 +1,25 @@ -# coding: utf-8 -lib = File.expand_path('../lib', __FILE__) +# frozen_string_literal: true + +lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) require 'active_admin_datetimepicker/version' Gem::Specification.new do |spec| - spec.name = "active_admin_datetimepicker" + spec.name = 'active_admin_datetimepicker' spec.version = ActiveAdminDatetimepicker::VERSION - spec.authors = ["Igor Fedoronchuk"] - spec.email = ["fedoronchuk@gmail.com"] + spec.authors = ['Igor Fedoronchuk'] + spec.email = ['fedoronchuk@gmail.com'] - spec.summary = %q{datetimepicker extension for ActiveAdmin} - spec.description = %q{Integrate jQuery xdan datetimepicker plugin to ActiveAdmin} - spec.homepage = "https://github.com/activeadmin-plugins/activeadmin_datetimepicker" - spec.license = "MIT" + spec.summary = 'datetimepicker extension for ActiveAdmin' + spec.description = 'Integrate jQuery xdan datetimepicker plugin to ActiveAdmin' + spec.homepage = 'https://github.com/activeadmin-plugins/activeadmin_datetimepicker' + spec.license = 'MIT' spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) } - spec.bindir = "bin" + spec.bindir = 'bin' spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) } - spec.require_paths = ["lib"] + spec.require_paths = ['lib'] - spec.add_dependency "activeadmin", "~> 1.1" - spec.add_dependency "xdan-datetimepicker-rails", "~> 2.5.4" + spec.add_dependency 'activeadmin', '~> 1.1' + spec.add_dependency 'xdan-datetimepicker-rails', '~> 2.5.4' end diff --git a/config/initializers/active_admin_datetimepicker.rb b/config/initializers/active_admin_datetimepicker.rb index 4325594..12894da 100644 --- a/config/initializers/active_admin_datetimepicker.rb +++ b/config/initializers/active_admin_datetimepicker.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + ActiveAdmin.setup do |config| config.register_stylesheet 'jquery.xdan.datetimepicker.css' end diff --git a/lib/active_admin_datetimepicker.rb b/lib/active_admin_datetimepicker.rb index 9867a32..9c91053 100644 --- a/lib/active_admin_datetimepicker.rb +++ b/lib/active_admin_datetimepicker.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + require 'activeadmin' require 'xdan-datetimepicker-rails' require 'active_admin_datetimepicker/version' diff --git a/lib/active_admin_datetimepicker/base.rb b/lib/active_admin_datetimepicker/base.rb index d31d811..c9824c4 100644 --- a/lib/active_admin_datetimepicker/base.rb +++ b/lib/active_admin_datetimepicker/base.rb @@ -1,9 +1,15 @@ +# frozen_string_literal: true + module ActiveAdminDatetimepicker module Base mattr_accessor :default_datetime_picker_options @@default_datetime_picker_options = {} mattr_accessor :format - @@format = '%Y-%m-%d %H:%M' + @@format = '%Y/%m/%d %H:%M' + mattr_accessor :format_date + @@format_date = '%Y/%m/%d' + # mattr_accessor :format_time + # @@format_time = '%H:%M' def html_class 'date-time-picker' @@ -13,11 +19,11 @@ def input_html_data {} end - def input_html_options(input_name = nil, placeholder = nil) + def input_html_options(input_name = nil, _placeholder = nil) options = {} options[:class] = [self.options[:class], html_class].compact.join(' ') options[:data] ||= input_html_data - options[:data].merge!(datepicker_options: datetime_picker_options) + options[:data][:datepicker_options] = datetime_picker_options options[:value] ||= input_value(input_name) options[:maxlength] = 19 options @@ -25,8 +31,15 @@ def input_html_options(input_name = nil, placeholder = nil) def input_value(input_name = nil) val = object.public_send(input_name || method) - return DateTime.new(val.year, val.month, val.day, val.hour, val.min, val.sec).strftime(format) if val.is_a?(Time) - val.to_s + case val + when Time + return DateTime.new(val.year, val.month, val.day, val.hour, val.min, + val.sec).strftime(format) + when Date + return Date.new(val.year, val.month, val.day).strftime(format_date) + else + val.to_s + end end def datetime_picker_options @@ -53,4 +66,3 @@ def _default_datetime_picker_options end end end - diff --git a/lib/active_admin_datetimepicker/inputs/date_time_picker_input.rb b/lib/active_admin_datetimepicker/inputs/date_time_picker_input.rb index 4acd9aa..4d32b51 100644 --- a/lib/active_admin_datetimepicker/inputs/date_time_picker_input.rb +++ b/lib/active_admin_datetimepicker/inputs/date_time_picker_input.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveAdmin module Inputs class DateTimePickerInput < ::Formtastic::Inputs::StringInput diff --git a/lib/active_admin_datetimepicker/inputs/filters/date_time_range_input.rb b/lib/active_admin_datetimepicker/inputs/filters/date_time_range_input.rb index e5fc7b8..763058b 100644 --- a/lib/active_admin_datetimepicker/inputs/filters/date_time_range_input.rb +++ b/lib/active_admin_datetimepicker/inputs/filters/date_time_range_input.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveAdmin module Inputs module Filters diff --git a/lib/active_admin_datetimepicker/version.rb b/lib/active_admin_datetimepicker/version.rb index 4cdf210..5e58841 100644 --- a/lib/active_admin_datetimepicker/version.rb +++ b/lib/active_admin_datetimepicker/version.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + module ActiveAdminDatetimepicker - VERSION = '0.6.3' + VERSION = '0.6.4' end diff --git a/spec/active_admin_datetimepicker_spec.rb b/spec/active_admin_datetimepicker_spec.rb index 2fedc9b..2abdde2 100644 --- a/spec/active_admin_datetimepicker_spec.rb +++ b/spec/active_admin_datetimepicker_spec.rb @@ -1,9 +1,9 @@ +# frozen_string_literal: true + require 'spec_helper' describe ActiveAdminDatetimepicker do - it 'has a version number' do expect(ActiveAdminDatetimepicker::VERSION).not_to be nil end - end diff --git a/spec/base_spec.rb b/spec/base_spec.rb index e15d3b8..efdbbc9 100644 --- a/spec/base_spec.rb +++ b/spec/base_spec.rb @@ -1,7 +1,8 @@ +# frozen_string_literal: true + require 'spec_helper' describe ActiveAdminDatetimepicker::Base do - class Dummy include ActiveAdminDatetimepicker::Base end @@ -9,12 +10,11 @@ class Dummy let(:dummy) { Dummy.new } it 'html_class' do - expect(dummy.html_class).to eq "date-time-picker" + expect(dummy.html_class).to eq 'date-time-picker' end it 'format' do expect(dummy.format).to eq '%Y-%m-%d %H:%M' expect(ActiveAdminDatetimepicker::Base.format).to eq '%Y-%m-%d %H:%M' end - end diff --git a/spec/date_time_picker_input_spec.rb b/spec/date_time_picker_input_spec.rb index e836028..d9bbf76 100644 --- a/spec/date_time_picker_input_spec.rb +++ b/spec/date_time_picker_input_spec.rb @@ -1,13 +1,13 @@ +# frozen_string_literal: true + require 'spec_helper' describe ActiveAdmin::Inputs::DateTimePickerInput do - it 'included from ActiveAdminDatetimepicker::Base' do input = ActiveAdmin::Inputs::DateTimePickerInput.new( # all dummy args for now Object.new, Object.new, Object.new, Object.new, Object.new, {}) - expect(input.html_class).to eq "date-time-picker" + expect(input.html_class).to eq 'date-time-picker' expect(input.format).to eq '%Y-%m-%d %H:%M' end - end diff --git a/spec/filters_and_edit_form_spec.rb b/spec/filters_and_edit_form_spec.rb index 7cd6b2a..b6e9c05 100644 --- a/spec/filters_and_edit_form_spec.rb +++ b/spec/filters_and_edit_form_spec.rb @@ -1,10 +1,11 @@ +# frozen_string_literal: true + require 'spec_helper' describe 'authors index', type: :feature, js: true do - before do - Author.create!(name: "John", last_name: "Doe") - Author.create!(name: "Jane", last_name: "Roe") + Author.create!(name: 'John', last_name: 'Doe') + Author.create!(name: 'Jane', last_name: 'Roe') end before do @@ -33,15 +34,14 @@ end it 'can set date from/to' do - date_from = Date.today.beginning_of_month.strftime("%Y-%m-%d") - date_to = (Date.today.beginning_of_month + 19.days).strftime("%Y-%m-%d") + date_from = Date.today.beginning_of_month.strftime('%Y-%m-%d') + date_to = (Date.today.beginning_of_month + 19.days).strftime('%Y-%m-%d') expect(page.find('input#q_birthday_gteq').value).to start_with(date_from) expect(page.find('input#q_birthday_lteq').value).to start_with(date_to) end end - context 'edit form' do before do visit '/admin/authors/new' @@ -56,10 +56,9 @@ .find('.xdsoft_timepicker.active .xdsoft_time.xdsoft_current').click end - it 'can set birthday' do - date_birthday = Date.today.beginning_of_month.strftime("%Y-%m-%d") + it 'can set birthday' do + date_birthday = Date.today.beginning_of_month.strftime('%Y-%m-%d') expect(page.find('#author_birthday').value).to start_with(date_birthday) end end - end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c0098f6..d11d55c 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,11 +1,13 @@ +# frozen_string_literal: true + require 'coveralls' Coveralls.wear! $LOAD_PATH.unshift(File.dirname(__FILE__)) -$LOAD_PATH << File.expand_path('../support', __FILE__) +$LOAD_PATH << File.expand_path('support', __dir__) -ENV['BUNDLE_GEMFILE'] = File.expand_path('../../Gemfile', __FILE__) -require "bundler" +ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', __dir__) +require 'bundler' Bundler.setup ENV['RAILS_ENV'] = 'test' @@ -14,15 +16,13 @@ ENV['RAILS'] = Rails.version ENV['RAILS_ROOT'] = File.expand_path("../rails/rails-#{ENV['RAILS']}", __FILE__) # Create the test app if it doesn't exists -unless File.exists?(ENV['RAILS_ROOT']) - system 'rake setup' -end +system 'rake setup' unless File.exist?(ENV['RAILS_ROOT']) require 'active_model' # require ActiveRecord to ensure that Ransack loads correctly require 'active_record' require 'active_admin' -ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + "/app/admin"] +ActiveAdmin.application.load_paths = [ENV['RAILS_ROOT'] + '/app/admin'] require ENV['RAILS_ROOT'] + '/config/environment.rb' # Disabling authentication in specs so that we don't have to worry about # it allover the place diff --git a/spec/support/admin.rb b/spec/support/admin.rb index ea143fc..dbf4503 100644 --- a/spec/support/admin.rb +++ b/spec/support/admin.rb @@ -1,5 +1,6 @@ -def add_author_resource(options = {}, &block) +# frozen_string_literal: true +def add_author_resource(_options = {}) ActiveAdmin.register Author do config.filters = true @@ -17,5 +18,4 @@ def add_author_resource(options = {}, &block) end end Rails.application.reload_routes! - end diff --git a/spec/support/capybara.rb b/spec/support/capybara.rb index 07db01d..57b0f6f 100644 --- a/spec/support/capybara.rb +++ b/spec/support/capybara.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + Capybara.server = :webrick Capybara.configure do |config| @@ -6,8 +8,7 @@ Capybara.register_driver :selenium_chrome do |app| options = Selenium::WebDriver::Chrome::Options.new( - args: %w[headless disable-gpu no-sandbox] - ) + args: %w[headless disable-gpu no-sandbox]) Capybara::Selenium::Driver.new(app, browser: :chrome, options: options) end diff --git a/spec/support/rails_template.rb b/spec/support/rails_template.rb index 5bd69e1..f9f8a13 100644 --- a/spec/support/rails_template.rb +++ b/spec/support/rails_template.rb @@ -1,21 +1,23 @@ +# frozen_string_literal: true + # Rails template to build the sample app for specs generate :model, 'author name:string{10}:uniq last_name:string birthday:date' generate :model, 'post title:string:uniq body:text author:references' -#Add validation -inject_into_file "app/models/author.rb", " validates_presence_of :name\n validates_uniqueness_of :last_name\n", after: "Base\n" -inject_into_file "app/models/post.rb", " validates_presence_of :author\n", after: ":author\n" +# Add validation +inject_into_file 'app/models/author.rb', " validates_presence_of :name\n validates_uniqueness_of :last_name\n", after: "Base\n" +inject_into_file 'app/models/post.rb', " validates_presence_of :author\n", after: ":author\n" # Configure default_url_options in test environment -inject_into_file "config/environments/test.rb", " config.action_mailer.default_url_options = { :host => 'example.com' }\n", after: "config.cache_classes = true\n" +inject_into_file 'config/environments/test.rb', " config.action_mailer.default_url_options = { :host => 'example.com' }\n", after: "config.cache_classes = true\n" # Add our local Active Admin to the load path -inject_into_file "config/environment.rb", +inject_into_file 'config/environment.rb', "\n$LOAD_PATH.unshift('#{File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib'))}')\nrequire \"active_admin\"\n", after: "require File.expand_path('../application', __FILE__)" -run "rm Gemfile" +run 'rm Gemfile' $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) @@ -23,17 +25,17 @@ generate :'formtastic:install' # Install active_admin_date_time_datetimepicker assets -inject_into_file "app/assets/stylesheets/active_admin.scss", +inject_into_file 'app/assets/stylesheets/active_admin.scss', "@import \"active_admin_datetimepicker\";\n", after: "@import \"active_admin/base\";\n" -inject_into_file "app/assets/javascripts/active_admin.js.coffee", +inject_into_file 'app/assets/javascripts/active_admin.js.coffee', "#= require active_admin_datetimepicker\n", after: "#= require active_admin/base\n" -run "rm -r test" -run "rm -r spec" +run 'rm -r test' +run 'rm -r spec' route "root :to => 'admin/dashboard#index'" -rake "db:migrate" +rake 'db:migrate' diff --git a/tasks/test.rake b/tasks/test.rake index f46bf45..7f150b9 100644 --- a/tasks/test.rake +++ b/tasks/test.rake @@ -1,13 +1,15 @@ -desc "Creates a test rails app for the specs to run against" +# frozen_string_literal: true + +desc 'Creates a test rails app for the specs to run against' task :setup do require 'rails/version' - rails_new_opts = %w( + rails_new_opts = %w[ --skip-turbolinks --skip-spring --skip-bootsnap -m spec/support/rails_template.rb - ) + ] system "bundle exec rails new spec/rails/rails-#{Rails::VERSION::STRING} #{rails_new_opts.join(' ')}" end