Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
version: 2
updates:
- package-ecosystem: bundler
directory: "/"
schedule:
interval: monthly
52 changes: 52 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: CI

on:
push:
branches:
- master
pull_request:

jobs:
test:
strategy:
matrix:
database: [ mysql, postgresql ]
ruby: [ 2.7, 2.6 ]
fail-fast: false
max-parallel: 20
runs-on: ubuntu-latest

env:
CI: true
DB: ${{ matrix.database }}
MYSQL_PASSWORD: root
PGHOST: localhost
PGPASSWORD: runner
PGUSER: runner
RAILS_ENV: test
RETRY_COUNT: 3

name: ${{ matrix.extension }} ${{ matrix.ruby }} ${{ matrix.database }}
steps:
- run: sudo apt-get update && sudo apt-get install libsqlite3-dev -y
- uses: actions/checkout@v2
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
ruby-version: ${{ matrix.ruby }}

- name: "Set up MySQL using VM's server"
if: ${{ env.DB == 'mysql' }}
run: |
sudo apt-get install libmysqlclient-dev -y
sudo systemctl start mysql.service

- name: "Set up PostgreSQL using VM's server"
if: ${{ env.DB == 'postgresql' }}
run: |
sudo apt-get install libpq-dev -y
sudo systemctl start postgresql.service
sudo -u postgres psql -c "CREATE USER runner WITH SUPERUSER PASSWORD 'runner'"

- run: bin/rake refinery:testing:dummy_app
- run: bin/rspec spec
13 changes: 8 additions & 5 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ source "https://rubygems.org"

gemspec

git "https://github.com/refinery/refinerycms", branch: "master" do
git "https://github.com/refinery/refinerycms", branch: "zeitwerk" do
gem "refinerycms"

group :test do
Expand All @@ -22,9 +22,12 @@ if !ENV["TRAVIS"] || ENV["DB"] == "mysql"
gem "mysql2", :platform => :ruby
end

if !ENV["TRAVIS"] || ENV["DB"] == "postgresql"
gem "activerecord-jdbcpostgresql-adapter", :platform => :jruby
gem 'pg', '~> 0.21', platform: :ruby

if !ENV['CI'] || ENV['DB'] == 'postgresql'
group :postgres, :postgresql do
gem 'activerecord-jdbcpostgresql-adapter', '>= 1.3.0.rc1', platform: :jruby
gem 'pg', '~> 1.1', platform: :ruby
end
end

gem "jruby-openssl", :platform => :jruby
Expand All @@ -49,4 +52,4 @@ end
# Load local gems according to Refinery developer preference.
if File.exist? local_gemfile = File.expand_path("../.gemfile", __FILE__)
eval File.read(local_gemfile)
end
end
2 changes: 1 addition & 1 deletion app/controllers/refinery/admin/settings_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def new
end

def edit
@setting = ::Refinery::Setting.find(params[:id])
@setting = ::Refinery::Setting.friendly.find(params[:id])

render :layout => false if request.xhr?
end
Expand Down
12 changes: 12 additions & 0 deletions config/initializers/zeitwerk.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

class RefineryInflector < Zeitwerk::Inflector
def camelize(basename, abspath)
return 'Refinery' if basename.start_with?('refinerycms-')
super
end
end

Rails.autoloaders.each do |autoloader|
autoloader.inflector = RefineryInflector.new
end
1 change: 1 addition & 0 deletions lib/refinerycms/settings.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
require_relative '../refinery/settings'
11 changes: 5 additions & 6 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,10 @@

## About

Refinery Settings was extracted from Refinery CMS just before 2.0.0 was released
and can now be used separately.
Refinery Settings is compatible with Refinery CMS 4.1.0 and Rails 6

## Installation
Add the gem to you Gemfile:
Add the gem to your Gemfile:

gem 'refinerycms-settings'

Expand All @@ -17,13 +16,13 @@ Generate and install the necessary migrations:
rails generate refinery:settings
rake db:migrate

## Upgrading from 2.0.x
When you upgrade from version 2.0.x make sure you run:
## Upgrading
When you upgrade run:

rails generate refinery:settings
rake db:migrate

It will copy the new migration and migrate the database.
If there are new migrations for Settings it will copy them to your app and migrate the database.

## How do I Make my Own Settings?

Expand Down
4 changes: 2 additions & 2 deletions refinerycms-settings.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = %q{refinerycms-settings}
s.version = %q{4.0.1}
s.version = %q{4.1.0}
s.summary = %q{Settings engine for Refinery CMS}
s.description = %q{Adds programmer creatable, user editable settings.}
s.email = %q{info@refinerycms.com}
Expand All @@ -15,7 +15,7 @@ Gem::Specification.new do |s|
s.files = `git ls-files`.split("\n")
s.test_files = `git ls-files -- spec/*`.split("\n")

s.add_dependency 'refinerycms-core', ['~> 4.0', '>= 4.0.0']
s.add_dependency 'refinerycms-core', ['~> 4.0', '>= 4.1.0']
s.add_dependency 'friendly_id', ['>= 5.1.0', '< 5.3']

s.cert_chain = [File.expand_path("../certs/parndt.pem", __FILE__)]
Expand Down
2 changes: 1 addition & 1 deletion spec/factories/settings.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
FactoryBot.define do
factory :setting, :class => Refinery::Setting do
name "Refinery CMS setting"
name { "Refinery CMS setting" }
end
end
36 changes: 18 additions & 18 deletions spec/models/refinery/setting_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,71 +8,71 @@ module Refinery
::Refinery::Setting.set(:rspec_testing_creating_from_scratch, nil)
end

context "slug" do
it "should create correct slug" do
describe "slug" do
it "creates a slug" do
::Refinery::Setting.set('test/something', {:value => "Look, a value"})
expect(::Refinery::Setting.last.to_param).to eq('test-something')
end
end

context "set" do
it "should save and get @keram" do
describe "set" do
it "saves and gets @keram" do
::Refinery::Setting.find_or_set(:twitter, '@keram')
setting = ::Refinery::Setting.last
expect(setting.value).to eq('@keram')
end

it "should not strip whitespaces" do
it "does not strip whitespaces" do
::Refinery::Setting.find_or_set(:author, ' benbruscella ')
setting = ::Refinery::Setting.last
expect(setting.value).to eq(' benbruscella ')
end

it "should create a setting that didn't exist" do
it "creates a new setting if there isn't one" do
expect(::Refinery::Setting.get(:creating_from_scratch, :scoping => 'rspec_testing')).to eq(nil)
expect(::Refinery::Setting.set(:creating_from_scratch, {:value => "Look, a value", :scoping => 'rspec_testing'})).to eq("Look, a value")
end

it "should override an existing setting" do
it "overrides an existing setting" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "a value", :scoping => 'rspec_testing'})
expect(set).to eq("a value")

new_set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "newer replaced value", :scoping => 'rspec_testing'})
expect(new_set).to eq("newer replaced value")
end

it "should default to form_value_type text_area" do
it "defaults to form_value_type text_area" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "a value", :scoping => 'rspec_testing'})
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing').form_value_type).to eq("text_area")
end

it "should fix true as a value to 'true' (string)" do
it "fixes true as a value to 'true' (string)" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => true, :scoping => 'rspec_testing'})
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('true')
expect(set).to eq(true)
end

it "should fix false as a value to 'false' (string)" do
it "fixes false as a value to 'false' (string)" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => false, :scoping => 'rspec_testing'})
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('false')
expect(set).to eq(false)
end

it "should fix '1' as a value with a check_box form_value_type to true" do
it "sets '1' as the value of a check_box form_value_type to true" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "1", :scoping => 'rspec_testing', :form_value_type => 'check_box'})
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('true')
expect(set).to eq(true)
end

it "should fix '0' as a value with a check_box form_value_type to false" do
it "sets '0' as the value of a check_box form_value_type to false" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "0", :scoping => 'rspec_testing', :form_value_type => 'check_box'})
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('false')
expect(set).to eq(false)
end
end

context "get" do
it "should retrieve a seting that was created" do
describe "get" do
it "should retrieve a setting that was created" do
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "some value", :scoping => 'rspec_testing'})
expect(set).to eq('some value')

Expand All @@ -97,14 +97,14 @@ module Refinery
end
end

context "find_or_set" do
it "should create a non existant setting" do
describe "find_or_set" do
it "will create a setting if it does not exist" do
created = ::Refinery::Setting.find_or_set(:creating_from_scratch, 'I am a setting being created', :scoping => 'rspec_testing')

expect(created).to eq("I am a setting being created")
end

it "should not override an existing setting" do
it "will not override an existing setting" do
created = ::Refinery::Setting.set(:creating_from_scratch, {:value => 'I am a setting being created', :scoping => 'rspec_testing'})
expect(created).to eq("I am a setting being created")

Expand All @@ -113,7 +113,7 @@ module Refinery
expect(created).to eq("I am a setting being created")
end

it "should work without scoping" do
it "works without scoping" do
expect(::Refinery::Setting.find_or_set(:rspec_testing_creating_from_scratch, 'Yes it worked')).to eq('Yes it worked')
end
end
Expand Down
23 changes: 12 additions & 11 deletions spec/routing/settings_routing_spec.rb
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
require "spec_helper"
require 'spec_helper'


describe "routes for refinery settings", :type => :routing do

context "when interface config is disabled" do
before do
describe "Refinery::Settings", type: :routing do
context 'when interface disabled' do
it "is not routable" do
allow(Refinery::Settings).to receive(:enable_interface).and_return(false)
Refinery::Plugins.registered.find_by_name("refinery_settings").hide_from_menu = true
expect(get: "/refinery/settings").to not_be_routable
end
end

it "should not be accesible" do
expect(:get => "/refinery/settings").to_not be_routable
end
end
context 'when interface enabled' do
it "routes to the settings index" do
allow(Refinery::Settings).to receive(:enable_interface).and_return(true)
expect(get: "/refinery/settings").to be_routable
end
end
end
1 change: 1 addition & 0 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
config.mock_with :rspec
config.filter_run :focus => true
config.run_all_when_everything_filtered = true
config.use_transactional_fixtures = true
end

# set javascript driver for capybara
Expand Down
3 changes: 3 additions & 0 deletions spec/support/refinery_login.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
def refinery_login
let(:logged_in_user) { Refinery::Core::NilUser.new }
end