refinerycms-settings 2.1.1 → 3.0.0
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/.travis.yml +5 -6
- data/Gemfile +19 -17
- data/Rakefile +1 -2
- data/app/controllers/refinery/admin/settings_controller.rb +7 -2
- data/app/models/refinery/setting.rb +30 -82
- data/app/views/refinery/admin/settings/_form.html.erb +5 -6
- data/config/locales/de.yml +5 -6
- data/config/locales/en.yml +1 -0
- data/config/locales/ja.yml +0 -1
- data/db/migrate/20130422105953_add_title_to_refinery_settings.rb +5 -0
- data/refinerycms-settings.gemspec +3 -3
- data/spec/features/refinery/admin/settings_spec.rb +40 -17
- data/spec/models/refinery/setting_spec.rb +39 -27
- data/spec/routing/settings_routing_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -2
- metadata +40 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b996c2cc75a4f725c2cf6d70ed67ac7277a93e6c
|
4
|
+
data.tar.gz: b5d5585e04ca065315c798127b9c793435d714bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8edc77367390f65772d45052b61d392d4cc37da5670e3a518ddbcf9269d95924a143e9e62f31bc38af2226e8cc3868723a115a897a3b8d3a902d505c5f8d8715
|
7
|
+
data.tar.gz: 910e7b789dacd9b04c879a0d46e317ac544248c7c088356bb28ad51fb1c8bdeade407b8b0cfe851e1511f46e3aa26b70b132d5904d8e000ce4fae6141ca35536
|
data/.travis.yml
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
language: ruby
|
2
2
|
bundler_args: --without development
|
3
|
+
cache:
|
4
|
+
- bundler: true
|
5
|
+
sudo: false
|
3
6
|
before_script:
|
4
7
|
- "sh -e /etc/init.d/xvfb start"
|
5
8
|
- "bundle exec rake refinery:testing:dummy_app"
|
@@ -20,11 +23,7 @@ notifications:
|
|
20
23
|
env:
|
21
24
|
- DB=postgresql
|
22
25
|
- DB=mysql
|
23
|
-
matrix:
|
24
|
-
allow_failures:
|
25
|
-
- rvm: rbx-19mode
|
26
26
|
rvm:
|
27
|
+
- 2.2
|
28
|
+
- 2.1
|
27
29
|
- 2.0.0
|
28
|
-
- 1.9.3
|
29
|
-
- rbx-19mode
|
30
|
-
- jruby-19mode
|
data/Gemfile
CHANGED
@@ -2,35 +2,37 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
gemspec
|
4
4
|
|
5
|
-
gem 'refinerycms',
|
6
|
-
gem 'refinerycms-
|
7
|
-
gem 'refinerycms-acts-as-indexed',
|
5
|
+
gem 'refinerycms', github: 'refinery/refinerycms'
|
6
|
+
gem 'refinerycms-i18n', github: 'refinery/refinerycms-i18n'
|
7
|
+
gem 'refinerycms-acts-as-indexed', github: 'refinery/refinerycms-acts-as-indexed'
|
8
|
+
gem "mime-types", "~> 1.25"
|
9
|
+
|
10
|
+
group :test do
|
11
|
+
gem 'refinerycms-testing', github: 'refinery/refinerycms'
|
12
|
+
gem 'poltergeist'
|
13
|
+
gem 'capybara-email', '~> 2.4'
|
14
|
+
end
|
8
15
|
|
9
16
|
# Database Configuration
|
10
17
|
unless ENV['TRAVIS']
|
11
|
-
gem 'activerecord-jdbcsqlite3-adapter', :
|
12
|
-
gem 'sqlite3', :
|
18
|
+
gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
|
19
|
+
gem 'sqlite3', platform: :ruby
|
13
20
|
end
|
14
21
|
|
15
22
|
if !ENV['TRAVIS'] || ENV['DB'] == 'mysql'
|
16
|
-
gem 'activerecord-jdbcmysql-adapter', :
|
17
|
-
gem 'jdbc-mysql', '= 5.1.13', :
|
18
|
-
gem 'mysql2', :
|
23
|
+
gem 'activerecord-jdbcmysql-adapter', platform: :jruby
|
24
|
+
gem 'jdbc-mysql', '= 5.1.13', platform: :jruby
|
25
|
+
gem 'mysql2', platform: :ruby
|
19
26
|
end
|
20
27
|
|
21
28
|
if !ENV['TRAVIS'] || ENV['DB'] == 'postgresql'
|
22
|
-
gem 'activerecord-jdbcpostgresql-adapter', :
|
23
|
-
gem 'pg', :
|
29
|
+
gem 'activerecord-jdbcpostgresql-adapter', platform: :jruby
|
30
|
+
gem 'pg', platform: :ruby
|
24
31
|
end
|
25
32
|
|
26
|
-
gem 'jruby-openssl', :platform => :jruby
|
27
|
-
|
28
33
|
# Refinery/rails should pull in the proper versions of these
|
29
|
-
|
30
|
-
|
31
|
-
gem 'coffee-rails'
|
32
|
-
gem 'uglifier'
|
33
|
-
end
|
34
|
+
gem 'sass-rails', '~> 4.0.0'
|
35
|
+
gem 'coffee-rails', '~> 4.0.0'
|
34
36
|
|
35
37
|
# Load local gems according to Refinery developer preference.
|
36
38
|
if File.exist? local_gemfile = File.expand_path('../.gemfile', __FILE__)
|
data/Rakefile
CHANGED
@@ -13,8 +13,7 @@ if File.exists?(APP_RAKEFILE)
|
|
13
13
|
end
|
14
14
|
|
15
15
|
require "refinerycms-testing"
|
16
|
-
Refinery::Testing::Railtie.
|
17
|
-
Refinery::Testing::Railtie.load_dummy_tasks(ENGINE_PATH)
|
16
|
+
Refinery::Testing::Railtie.load_dummy_tasks File.dirname(__FILE__)
|
18
17
|
|
19
18
|
load File.expand_path('../tasks/rspec.rake', __FILE__)
|
20
19
|
|
@@ -6,8 +6,7 @@ module ::Refinery
|
|
6
6
|
|
7
7
|
crudify :'refinery/setting',
|
8
8
|
:order => "name ASC",
|
9
|
-
:redirect_to_url => :redirect_to_where
|
10
|
-
:xhr_paging => true
|
9
|
+
:redirect_to_url => :redirect_to_where?
|
11
10
|
|
12
11
|
before_filter :sanitise_params, :only => [:create, :update]
|
13
12
|
|
@@ -50,6 +49,12 @@ module ::Refinery
|
|
50
49
|
def sanitise_params
|
51
50
|
params.delete(:scoping)
|
52
51
|
end
|
52
|
+
|
53
|
+
def setting_params
|
54
|
+
params.require(:setting).permit(:title, :name, :value, :destroyable,
|
55
|
+
:scoping, :restricted, :form_value_type)
|
56
|
+
end
|
57
|
+
|
53
58
|
end
|
54
59
|
end
|
55
60
|
end
|
@@ -1,7 +1,15 @@
|
|
1
|
+
require 'friendly_id'
|
2
|
+
|
1
3
|
module Refinery
|
2
4
|
class Setting < Refinery::Core::BaseModel
|
3
5
|
extend FriendlyId
|
4
|
-
|
6
|
+
|
7
|
+
friendly_id :name, use: [:slugged, :finders]
|
8
|
+
|
9
|
+
# If name changes tell friendly_id to regenerate slug when saving record
|
10
|
+
def should_generate_new_friendly_id?
|
11
|
+
name_changed?
|
12
|
+
end
|
5
13
|
|
6
14
|
FORM_VALUE_TYPES = [
|
7
15
|
['Multi-line', 'text_area'],
|
@@ -12,93 +20,30 @@ module Refinery
|
|
12
20
|
|
13
21
|
serialize :value # stores into YAML format
|
14
22
|
|
15
|
-
attr_accessible :name, :value, :destroyable,
|
16
|
-
:scoping, :restricted, :form_value_type
|
17
|
-
|
18
23
|
before_save do |setting|
|
19
24
|
setting.restricted = false if setting.restricted.nil?
|
20
25
|
end
|
21
26
|
|
22
|
-
after_save do |setting|
|
23
|
-
setting.class.rewrite_cache
|
24
|
-
end
|
25
|
-
|
26
|
-
after_destroy do |setting|
|
27
|
-
setting.class.rewrite_cache
|
28
|
-
end
|
29
|
-
|
30
27
|
class << self
|
31
28
|
# Number of settings to show per page when using will_paginate
|
32
29
|
def per_page
|
33
30
|
12
|
34
31
|
end
|
35
32
|
|
36
|
-
def ensure_cache_exists!
|
37
|
-
if (result = Rails.cache.read(cache_key, :multithread => true)).nil?
|
38
|
-
result = rewrite_cache
|
39
|
-
end
|
40
|
-
|
41
|
-
result
|
42
|
-
end
|
43
|
-
protected :ensure_cache_exists!
|
44
|
-
|
45
|
-
def cache_read(name = nil, scoping = nil)
|
46
|
-
result = ensure_cache_exists!
|
47
|
-
|
48
|
-
if name.present?
|
49
|
-
scoping = scoping.to_s if scoping.is_a?(Symbol)
|
50
|
-
result = result.detect do |rs|
|
51
|
-
rs[:name] == name.to_s.downcase.to_sym and rs[:scoping] == scoping
|
52
|
-
end
|
53
|
-
result = result[:value] if !result.nil? and result.keys.include?(:value)
|
54
|
-
end
|
55
|
-
|
56
|
-
result
|
57
|
-
end
|
58
|
-
|
59
|
-
def to_cache(settings)
|
60
|
-
settings.collect do |rs|
|
61
|
-
{
|
62
|
-
:name => rs.name.to_s.downcase.to_sym,
|
63
|
-
:value => rs.value,
|
64
|
-
:scoping => rs.scoping,
|
65
|
-
:destroyable => rs.destroyable
|
66
|
-
}
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def rewrite_cache
|
71
|
-
# delete cache
|
72
|
-
Rails.cache.delete(cache_key, :multithread => true)
|
73
|
-
|
74
|
-
# generate new cache
|
75
|
-
result = (to_cache(all) if (table_exists? rescue false))
|
76
|
-
|
77
|
-
# write cache
|
78
|
-
Rails.cache.write(cache_key, result, :multithread => true)
|
79
|
-
|
80
|
-
# return cache, or lack thereof.
|
81
|
-
result ||= []
|
82
|
-
end
|
83
|
-
|
84
|
-
def cache_key
|
85
|
-
[Refinery::Core.base_cache_key, 'settings_cache'].join('_')
|
86
|
-
end
|
87
|
-
|
88
33
|
# find_or_set offers a convenient way to
|
89
34
|
def find_or_set(name, the_value, options={})
|
90
35
|
# Merge default options with supplied options.
|
91
36
|
options = {
|
92
|
-
:
|
93
|
-
:
|
94
|
-
:
|
37
|
+
scoping: nil,
|
38
|
+
restricted: false,
|
39
|
+
form_value_type: 'text_area'
|
95
40
|
}.merge(options)
|
96
41
|
|
97
42
|
# try to find the setting first
|
98
|
-
value = get(name, :
|
43
|
+
value = get(name, scoping: options[:scoping])
|
99
44
|
|
100
45
|
# if the setting's value is nil, store a new one using the existing functionality.
|
101
|
-
value = set(name, options.merge(
|
46
|
+
value = set(name, options.merge(value: the_value)) if value.nil?
|
102
47
|
|
103
48
|
# Return what we found.
|
104
49
|
value
|
@@ -108,8 +53,9 @@ module Refinery
|
|
108
53
|
|
109
54
|
# Retrieve the current value for the setting whose name is supplied.
|
110
55
|
def get(name, options = {})
|
111
|
-
options = {:
|
112
|
-
|
56
|
+
options = {scoping: nil}.update(options)
|
57
|
+
where(name: name, scoping: options[:scoping])
|
58
|
+
.select(:value).map(&:value).first
|
113
59
|
end
|
114
60
|
|
115
61
|
alias :[] :get
|
@@ -118,7 +64,7 @@ module Refinery
|
|
118
64
|
return (value.is_a?(Hash) ? value[:value] : value) unless (table_exists? rescue false)
|
119
65
|
|
120
66
|
scoping = (value[:scoping] if value.is_a?(Hash) and value.has_key?(:scoping))
|
121
|
-
setting =
|
67
|
+
setting = where(name: name.to_s, scoping: scoping).first_or_initialize
|
122
68
|
|
123
69
|
# you could also pass in {:value => 'something', :scoping => 'somewhere'}
|
124
70
|
unless value.is_a?(Hash) and value.has_key?(:value)
|
@@ -139,12 +85,8 @@ module Refinery
|
|
139
85
|
end
|
140
86
|
end
|
141
87
|
|
142
|
-
# prettier version of the name.
|
143
|
-
# site_name becomes Site Name
|
144
88
|
def title
|
145
|
-
|
146
|
-
result << " (#{scoping.titleize})" if scoping.is_a?(String)
|
147
|
-
result
|
89
|
+
self[:title].presence || auto_title
|
148
90
|
end
|
149
91
|
|
150
92
|
# form_value is so that on the web interface we can display a sane value.
|
@@ -162,14 +104,12 @@ module Refinery
|
|
162
104
|
|
163
105
|
def value=(new_value)
|
164
106
|
# must convert "1" to true and "0" to false when supplied using 'check_box', unfortunately.
|
165
|
-
if [
|
166
|
-
new_value = new_value == "1"
|
107
|
+
if %w[1 0].include?(new_value) && form_value_type == 'check_box'
|
108
|
+
new_value = new_value == "1"
|
167
109
|
end
|
168
110
|
|
169
111
|
# must convert to string if true or false supplied otherwise it becomes 0 or 1, unfortunately.
|
170
|
-
if [true, false].include?(new_value)
|
171
|
-
new_value = new_value.to_s
|
172
|
-
end
|
112
|
+
new_value = new_value.to_s if [true, false].include?(new_value)
|
173
113
|
|
174
114
|
super
|
175
115
|
end
|
@@ -201,5 +141,13 @@ module Refinery
|
|
201
141
|
current_value
|
202
142
|
end
|
203
143
|
|
144
|
+
# prettier version of the name.
|
145
|
+
# site_name becomes Site Name
|
146
|
+
def auto_title
|
147
|
+
result = name.to_s.titleize
|
148
|
+
result << " (#{scoping.titleize})" if scoping.is_a?(String)
|
149
|
+
result
|
150
|
+
end
|
151
|
+
|
204
152
|
end
|
205
153
|
end
|
@@ -2,15 +2,14 @@
|
|
2
2
|
|
3
3
|
<%= render '/refinery/admin/error_messages', :object => @setting, :include_object_name => true %>
|
4
4
|
|
5
|
-
<div class='field'>
|
6
|
-
<%= f.label :name %>
|
5
|
+
<div class='field'>
|
7
6
|
<% if action_name =~ /(new)|(create)/ %>
|
7
|
+
<%= f.label :name %>
|
8
8
|
<%= f.text_field :name, :class => "larger widest" %>
|
9
9
|
<% else %>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
<span class="preview">- (<%= @setting.name %>)</span>
|
10
|
+
<%= f.label :title %>
|
11
|
+
<%= f.text_field :title, :value => @setting.title, :class => "larger widest" %>
|
12
|
+
<span class="preview">(<%= @setting.name %>)</span>
|
14
13
|
<% end %>
|
15
14
|
<% if current_refinery_user.has_role?(:superuser) && @setting.new_record? %>
|
16
15
|
<div class='field'>
|
data/config/locales/de.yml
CHANGED
@@ -12,7 +12,7 @@ de:
|
|
12
12
|
new: Neue Einstellung erstellen
|
13
13
|
records:
|
14
14
|
empty_set: Es gibt noch keine Einstellungen.
|
15
|
-
create_first: Klicken Sie auf '%{link}', um Ihre erste Einstellung anzulegen.
|
15
|
+
create_first: "Klicken Sie auf '%{link}', um Ihre erste Einstellung anzulegen."
|
16
16
|
form:
|
17
17
|
enabled: "Ja, die Einstellung aktivieren."
|
18
18
|
restart_may_be_in_order_html: "<strong>Bitte beachten Sie</strong>, dass Sie Ihre Website eventuell neu starten müssen, damit die Einstellungen angewendet werden."
|
@@ -23,8 +23,7 @@ de:
|
|
23
23
|
models:
|
24
24
|
refinery/setting: Einstellungen
|
25
25
|
attributes:
|
26
|
-
refinery:
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
restricted: Eingeschränkt
|
26
|
+
refinery/setting:
|
27
|
+
name: Name
|
28
|
+
value: Wert
|
29
|
+
restricted: Eingeschränkt
|
data/config/locales/en.yml
CHANGED
data/config/locales/ja.yml
CHANGED
@@ -3,12 +3,11 @@
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.name = %q{refinerycms-settings}
|
6
|
-
s.version = %q{
|
6
|
+
s.version = %q{3.0.0}
|
7
7
|
s.summary = %q{Settings engine for Refinery CMS}
|
8
8
|
s.description = %q{Adds programmer creatable, user editable settings.}
|
9
9
|
s.email = %q{info@refinerycms.com}
|
10
10
|
s.homepage = %q{http://refinerycms.com}
|
11
|
-
s.rubyforge_project = %q{refinerycms}
|
12
11
|
s.authors = ['Philip Arndt', 'Uģis Ozols']
|
13
12
|
s.license = %q{MIT}
|
14
13
|
s.require_paths = %w(lib)
|
@@ -16,5 +15,6 @@ Gem::Specification.new do |s|
|
|
16
15
|
s.files = `git ls-files`.split("\n")
|
17
16
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
18
17
|
|
19
|
-
s.add_dependency
|
18
|
+
s.add_dependency 'refinerycms-core', ['~> 3.0', '>= 3.0.0']
|
19
|
+
s.add_dependency 'friendly_id', ['~> 5.0', '>= 5.0.1']
|
20
20
|
end
|
@@ -2,19 +2,19 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
module Refinery
|
4
4
|
module Admin
|
5
|
-
describe "Settings" do
|
5
|
+
describe "Settings", :type => :feature do
|
6
6
|
refinery_login_with :refinery_user
|
7
7
|
|
8
8
|
context "when interface config is enabled" do
|
9
9
|
before do
|
10
|
-
Refinery::Settings.
|
10
|
+
allow(Refinery::Settings).to receive(:enable_interface).and_return(true)
|
11
11
|
end
|
12
12
|
|
13
13
|
it "shows up in menu" do
|
14
14
|
visit refinery.admin_root_path
|
15
15
|
|
16
16
|
within('nav') do
|
17
|
-
page.
|
17
|
+
expect(page).to have_content "Settings"
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -23,14 +23,14 @@ module Refinery
|
|
23
23
|
|
24
24
|
it "invites to create one" do
|
25
25
|
visit refinery.admin_settings_path
|
26
|
-
page.
|
26
|
+
expect(page).to have_content("There are no settings yet. Click 'Add new setting' to add your first setting.")
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
30
|
it "shows add new setting link" do
|
31
31
|
visit refinery.admin_settings_path
|
32
|
-
page.
|
33
|
-
page.
|
32
|
+
expect(page).to have_content("Add new setting")
|
33
|
+
expect(page).to have_selector("a[href*='/refinery/settings/new']")
|
34
34
|
end
|
35
35
|
|
36
36
|
context "new/create" do
|
@@ -38,7 +38,7 @@ module Refinery
|
|
38
38
|
visit refinery.admin_settings_path
|
39
39
|
click_link "Add new setting"
|
40
40
|
|
41
|
-
page.
|
41
|
+
expect(page).to have_selector('iframe#dialog_iframe')
|
42
42
|
|
43
43
|
page.within_frame('dialog_iframe') do
|
44
44
|
fill_in "setting_name", :with => "test setting"
|
@@ -46,16 +46,16 @@ module Refinery
|
|
46
46
|
|
47
47
|
click_button "submit_button"
|
48
48
|
end
|
49
|
-
|
50
|
-
page.
|
51
|
-
page.
|
49
|
+
expect(page).not_to have_css("#dialog_iframe")
|
50
|
+
expect(page).to have_content("'Test Setting' was successfully added.")
|
51
|
+
expect(page).to have_content("Test Setting - true")
|
52
52
|
end
|
53
53
|
|
54
54
|
it "adds setting with slug unfriendly name", :js => true do
|
55
55
|
visit refinery.admin_settings_path
|
56
56
|
click_link "Add new setting"
|
57
57
|
|
58
|
-
page.
|
58
|
+
expect(page).to have_selector('iframe#dialog_iframe')
|
59
59
|
|
60
60
|
page.within_frame('dialog_iframe') do
|
61
61
|
fill_in "setting_name", :with => "Test/Setting"
|
@@ -64,11 +64,34 @@ module Refinery
|
|
64
64
|
click_button "submit_button"
|
65
65
|
end
|
66
66
|
|
67
|
-
page.
|
68
|
-
page.
|
67
|
+
expect(page).to have_content("'Test/Setting' was successfully added.")
|
68
|
+
expect(page).to have_content("Test/Setting - true")
|
69
69
|
|
70
70
|
visit refinery.edit_admin_setting_path(Refinery::Setting.last)
|
71
|
-
page.
|
71
|
+
expect(page).not_to have_content('NoMethodError in Refinery::Admin::BaseController#error_404')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context "edit/update" do
|
76
|
+
before(:each) {::Refinery::Setting.set(:rspec_testing_edit_and_update, 1)}
|
77
|
+
|
78
|
+
it "modifies setting", :js => true do
|
79
|
+
visit refinery.admin_settings_path
|
80
|
+
find("a[href*='/refinery/settings/rspec_testing_edit_and_update/edit']").click
|
81
|
+
|
82
|
+
expect(page).to have_selector('iframe#dialog_iframe')
|
83
|
+
page.within_frame('dialog_iframe') do
|
84
|
+
|
85
|
+
expect(find_field('Title').value).to eql("Rspec Testing Edit And Update")
|
86
|
+
|
87
|
+
fill_in "Title", :with => "Edit and Update Title"
|
88
|
+
fill_in "Value", :with => "2"
|
89
|
+
|
90
|
+
click_button "Save"
|
91
|
+
end
|
92
|
+
|
93
|
+
expect(page).to have_content("'Edit and Update Title' was successfully updated.")
|
94
|
+
expect(page).to have_content("Edit and Update Title - 2")
|
72
95
|
end
|
73
96
|
end
|
74
97
|
|
@@ -82,14 +105,14 @@ module Refinery
|
|
82
105
|
specify "page links" do
|
83
106
|
visit refinery.admin_settings_path
|
84
107
|
|
85
|
-
page.
|
108
|
+
expect(page).to have_selector("a[href*='settings?page=2']")
|
86
109
|
end
|
87
110
|
end
|
88
111
|
end
|
89
112
|
|
90
113
|
context "when interface config is disabled" do
|
91
114
|
before do
|
92
|
-
Refinery::Settings.
|
115
|
+
allow(Refinery::Settings).to receive(:enable_interface).and_return(false)
|
93
116
|
Refinery::Plugins.registered.find_by_name("refinery_settings").hide_from_menu = true
|
94
117
|
end
|
95
118
|
|
@@ -97,7 +120,7 @@ module Refinery
|
|
97
120
|
visit refinery.admin_root_path
|
98
121
|
|
99
122
|
within('nav') do
|
100
|
-
page.
|
123
|
+
expect(page).not_to have_content "Settings"
|
101
124
|
end
|
102
125
|
end
|
103
126
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
module Refinery
|
4
|
-
describe Setting do
|
4
|
+
describe Setting, :type => :model do
|
5
5
|
|
6
6
|
before do
|
7
7
|
::Refinery::Setting.set(:creating_from_scratch, nil)
|
@@ -11,7 +11,7 @@ module Refinery
|
|
11
11
|
context "slug" do
|
12
12
|
it "should create correct slug" do
|
13
13
|
::Refinery::Setting.set('test/something', {:value => "Look, a value"})
|
14
|
-
::Refinery::Setting.last.to_param.
|
14
|
+
expect(::Refinery::Setting.last.to_param).to eq('test-something')
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
@@ -19,81 +19,81 @@ module Refinery
|
|
19
19
|
it "should save and get @keram" do
|
20
20
|
::Refinery::Setting.find_or_set(:twitter, '@keram')
|
21
21
|
setting = ::Refinery::Setting.last
|
22
|
-
setting.value.
|
22
|
+
expect(setting.value).to eq('@keram')
|
23
23
|
end
|
24
24
|
|
25
25
|
it "should not strip whitespaces" do
|
26
26
|
::Refinery::Setting.find_or_set(:author, ' benbruscella ')
|
27
27
|
setting = ::Refinery::Setting.last
|
28
|
-
setting.value.
|
28
|
+
expect(setting.value).to eq(' benbruscella ')
|
29
29
|
end
|
30
30
|
|
31
31
|
it "should create a setting that didn't exist" do
|
32
|
-
::Refinery::Setting.get(:creating_from_scratch, :scoping => 'rspec_testing').
|
33
|
-
::Refinery::Setting.set(:creating_from_scratch, {:value => "Look, a value", :scoping => 'rspec_testing'}).
|
32
|
+
expect(::Refinery::Setting.get(:creating_from_scratch, :scoping => 'rspec_testing')).to eq(nil)
|
33
|
+
expect(::Refinery::Setting.set(:creating_from_scratch, {:value => "Look, a value", :scoping => 'rspec_testing'})).to eq("Look, a value")
|
34
34
|
end
|
35
35
|
|
36
36
|
it "should override an existing setting" do
|
37
37
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "a value", :scoping => 'rspec_testing'})
|
38
|
-
set.
|
38
|
+
expect(set).to eq("a value")
|
39
39
|
|
40
40
|
new_set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "newer replaced value", :scoping => 'rspec_testing'})
|
41
|
-
new_set.
|
41
|
+
expect(new_set).to eq("newer replaced value")
|
42
42
|
end
|
43
43
|
|
44
44
|
it "should default to form_value_type text_area" do
|
45
45
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "a value", :scoping => 'rspec_testing'})
|
46
|
-
::Refinery::Setting.
|
46
|
+
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing').form_value_type).to eq("text_area")
|
47
47
|
end
|
48
48
|
|
49
49
|
it "should fix true as a value to 'true' (string)" do
|
50
50
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => true, :scoping => 'rspec_testing'})
|
51
|
-
::Refinery::Setting.
|
52
|
-
set.
|
51
|
+
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('true')
|
52
|
+
expect(set).to eq(true)
|
53
53
|
end
|
54
54
|
|
55
55
|
it "should fix false as a value to 'false' (string)" do
|
56
56
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => false, :scoping => 'rspec_testing'})
|
57
|
-
::Refinery::Setting.
|
58
|
-
set.
|
57
|
+
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('false')
|
58
|
+
expect(set).to eq(false)
|
59
59
|
end
|
60
60
|
|
61
61
|
it "should fix '1' as a value with a check_box form_value_type to true" do
|
62
62
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "1", :scoping => 'rspec_testing', :form_value_type => 'check_box'})
|
63
|
-
::Refinery::Setting.
|
64
|
-
set.
|
63
|
+
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('true')
|
64
|
+
expect(set).to eq(true)
|
65
65
|
end
|
66
66
|
|
67
67
|
it "should fix '0' as a value with a check_box form_value_type to false" do
|
68
68
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "0", :scoping => 'rspec_testing', :form_value_type => 'check_box'})
|
69
|
-
::Refinery::Setting.
|
70
|
-
set.
|
69
|
+
expect(::Refinery::Setting.find_by(:name => 'creating_from_scratch', :scoping => 'rspec_testing')[:value]).to eq('false')
|
70
|
+
expect(set).to eq(false)
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
74
|
context "get" do
|
75
75
|
it "should retrieve a seting that was created" do
|
76
76
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "some value", :scoping => 'rspec_testing'})
|
77
|
-
set.
|
77
|
+
expect(set).to eq('some value')
|
78
78
|
|
79
79
|
get = ::Refinery::Setting.get(:creating_from_scratch, :scoping => 'rspec_testing')
|
80
|
-
get.
|
80
|
+
expect(get).to eq('some value')
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should also work with setting scoping using string and getting via symbol" do
|
84
84
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "some value", :scoping => 'rspec_testing'})
|
85
|
-
set.
|
85
|
+
expect(set).to eq('some value')
|
86
86
|
|
87
87
|
get = ::Refinery::Setting.get(:creating_from_scratch, :scoping => :rspec_testing)
|
88
|
-
get.
|
88
|
+
expect(get).to eq('some value')
|
89
89
|
end
|
90
90
|
|
91
91
|
it "should also work with setting scoping using symbol and getting via string" do
|
92
92
|
set = ::Refinery::Setting.set(:creating_from_scratch, {:value => "some value", :scoping => :rspec_testing})
|
93
|
-
set.
|
93
|
+
expect(set).to eq('some value')
|
94
94
|
|
95
95
|
get = ::Refinery::Setting.get(:creating_from_scratch, :scoping => 'rspec_testing')
|
96
|
-
get.
|
96
|
+
expect(get).to eq('some value')
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
@@ -101,22 +101,34 @@ module Refinery
|
|
101
101
|
it "should create a non existant setting" do
|
102
102
|
created = ::Refinery::Setting.find_or_set(:creating_from_scratch, 'I am a setting being created', :scoping => 'rspec_testing')
|
103
103
|
|
104
|
-
created.
|
104
|
+
expect(created).to eq("I am a setting being created")
|
105
105
|
end
|
106
106
|
|
107
107
|
it "should not override an existing setting" do
|
108
108
|
created = ::Refinery::Setting.set(:creating_from_scratch, {:value => 'I am a setting being created', :scoping => 'rspec_testing'})
|
109
|
-
created.
|
109
|
+
expect(created).to eq("I am a setting being created")
|
110
110
|
|
111
111
|
find_or_set_created = ::Refinery::Setting.find_or_set(:creating_from_scratch, 'Trying to change an existing value', :scoping => 'rspec_testing')
|
112
112
|
|
113
|
-
created.
|
113
|
+
expect(created).to eq("I am a setting being created")
|
114
114
|
end
|
115
115
|
|
116
116
|
it "should work without scoping" do
|
117
|
-
::Refinery::Setting.find_or_set(:rspec_testing_creating_from_scratch, 'Yes it worked').
|
117
|
+
expect(::Refinery::Setting.find_or_set(:rspec_testing_creating_from_scratch, 'Yes it worked')).to eq('Yes it worked')
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
121
|
+
describe "#should_generate_new_friendly_id?" do
|
122
|
+
context "when name changes" do
|
123
|
+
it "regenerates slug upon save" do
|
124
|
+
setting = FactoryGirl.create(:setting, :name => "Test Name")
|
125
|
+
|
126
|
+
setting.name = "Test Name 2"
|
127
|
+
setting.save!
|
128
|
+
|
129
|
+
expect(setting.slug).to eq("test-name-2")
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
121
133
|
end
|
122
134
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
|
4
|
-
describe "routes for refinery settings" do
|
4
|
+
describe "routes for refinery settings", :type => :routing do
|
5
5
|
|
6
6
|
context "when interface config is disabled" do
|
7
7
|
before do
|
8
|
-
Refinery::Settings.
|
8
|
+
allow(Refinery::Settings).to receive(:enable_interface).and_return(false)
|
9
9
|
Refinery::Plugins.registered.find_by_name("refinery_settings").hide_from_menu = true
|
10
10
|
end
|
11
11
|
|
data/spec/spec_helper.rb
CHANGED
@@ -13,13 +13,13 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
13
13
|
|
14
14
|
RSpec.configure do |config|
|
15
15
|
config.mock_with :rspec
|
16
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
17
16
|
config.filter_run :focus => true
|
18
17
|
config.run_all_when_everything_filtered = true
|
19
18
|
end
|
20
19
|
|
21
20
|
# set javascript driver for capybara
|
22
|
-
|
21
|
+
require 'capybara/poltergeist'
|
22
|
+
Capybara.javascript_driver = :poltergeist
|
23
23
|
|
24
24
|
# Requires supporting files with custom matchers and macros, etc,
|
25
25
|
# in ./support/ and its subdirectories including factories.
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: refinerycms-settings
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philip Arndt
|
@@ -9,31 +9,57 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-12-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: refinerycms-core
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
20
|
+
version: '3.0'
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 3.0.0
|
21
24
|
type: :runtime
|
22
25
|
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- - ~>
|
28
|
+
- - "~>"
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '3.0'
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.0.0
|
34
|
+
- !ruby/object:Gem::Dependency
|
35
|
+
name: friendly_id
|
36
|
+
requirement: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '5.0'
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: 5.0.1
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '5.0'
|
51
|
+
- - ">="
|
26
52
|
- !ruby/object:Gem::Version
|
27
|
-
version:
|
53
|
+
version: 5.0.1
|
28
54
|
description: Adds programmer creatable, user editable settings.
|
29
55
|
email: info@refinerycms.com
|
30
56
|
executables: []
|
31
57
|
extensions: []
|
32
58
|
extra_rdoc_files: []
|
33
59
|
files:
|
34
|
-
- .gitignore
|
35
|
-
- .rspec
|
36
|
-
- .travis.yml
|
60
|
+
- ".gitignore"
|
61
|
+
- ".rspec"
|
62
|
+
- ".travis.yml"
|
37
63
|
- Gemfile
|
38
64
|
- Rakefile
|
39
65
|
- app/controllers/refinery/admin/settings_controller.rb
|
@@ -77,6 +103,7 @@ files:
|
|
77
103
|
- config/routes.rb
|
78
104
|
- db/migrate/20100913234710_create_refinerycms_settings_schema.rb
|
79
105
|
- db/migrate/20130414130143_add_slug_to_refinery_settings.rb
|
106
|
+
- db/migrate/20130422105953_add_title_to_refinery_settings.rb
|
80
107
|
- lib/generators/refinery/settings_generator.rb
|
81
108
|
- lib/generators/refinery/templates/config/initializers/refinery/settings.rb.erb
|
82
109
|
- lib/refinery/settings.rb
|
@@ -103,17 +130,17 @@ require_paths:
|
|
103
130
|
- lib
|
104
131
|
required_ruby_version: !ruby/object:Gem::Requirement
|
105
132
|
requirements:
|
106
|
-
- -
|
133
|
+
- - ">="
|
107
134
|
- !ruby/object:Gem::Version
|
108
135
|
version: '0'
|
109
136
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
137
|
requirements:
|
111
|
-
- -
|
138
|
+
- - ">="
|
112
139
|
- !ruby/object:Gem::Version
|
113
140
|
version: '0'
|
114
141
|
requirements: []
|
115
|
-
rubyforge_project:
|
116
|
-
rubygems_version: 2.
|
142
|
+
rubyforge_project:
|
143
|
+
rubygems_version: 2.2.2
|
117
144
|
signing_key:
|
118
145
|
specification_version: 4
|
119
146
|
summary: Settings engine for Refinery CMS
|