skylinecms 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +1 -1
- data/CHANGELOG +50 -0
- data/README.md +11 -3
- data/app/controllers/skyline/application_controller.rb +6 -5
- data/app/controllers/skyline/articles_controller.rb +4 -4
- data/app/controllers/skyline/content_controller.rb +2 -4
- data/app/controllers/skyline/media/data_controller.rb +1 -0
- data/app/controllers/skyline/site/media_files_data_controller.rb +1 -0
- data/app/controllers/skyline/user_preferences_controller.rb +1 -1
- data/app/controllers/skyline/users_controller.rb +5 -1
- data/app/controllers/skyline/variant_current_editor_controller.rb +6 -1
- data/app/controllers/skyline/variants_controller.rb +2 -2
- data/app/helpers/skyline/content_helper.rb +1 -1
- data/app/helpers/skyline/editors/editor.rb +6 -6
- data/app/helpers/skyline/editors/joinable_list.rb +1 -1
- data/app/helpers/skyline/form_helper.rb +1 -0
- data/app/helpers/skyline/menu_helper.rb +0 -8
- data/app/helpers/skyline/presenters/presenter.rb +2 -2
- data/app/middleware/skyline/sprockets_middleware.rb +3 -8
- data/app/models/skyline/article.rb +29 -25
- data/app/models/skyline/article_version.rb +20 -20
- data/app/models/skyline/associated_tag.rb +1 -1
- data/app/models/skyline/grant.rb +1 -1
- data/app/models/skyline/link_section_link.rb +1 -1
- data/app/models/skyline/media_cache.rb +1 -1
- data/app/models/skyline/media_dir.rb +0 -2
- data/app/models/skyline/media_node.rb +1 -1
- data/app/models/skyline/object_ref.rb +3 -3
- data/app/models/skyline/page.rb +1 -3
- data/app/models/skyline/publication.rb +3 -1
- data/app/models/skyline/ref_object.rb +1 -1
- data/app/models/skyline/referable_uri.rb +1 -1
- data/app/models/skyline/right.rb +1 -1
- data/app/models/skyline/role.rb +1 -1
- data/app/models/skyline/section.rb +9 -9
- data/app/models/skyline/sections/content_collection_section.rb +3 -3
- data/app/models/skyline/sections/link_section.rb +3 -3
- data/app/models/skyline/sections/media_section.rb +2 -0
- data/app/models/skyline/sections/rss_section.rb +11 -12
- data/app/models/skyline/tag.rb +1 -1
- data/app/models/skyline/user.rb +213 -202
- data/app/models/skyline/user_preference.rb +2 -2
- data/app/models/skyline/variant.rb +18 -14
- data/app/observers/skyline/version_stamper.rb +1 -1
- data/app/templates/skyline/page/default/index.html.erb +1 -1
- data/app/views/skyline/articles/_security.html.erb +1 -1
- data/app/views/skyline/articles/edit.html.erb +1 -1
- data/app/views/skyline/content/{_add.rhtml → _add.html.erb} +0 -0
- data/app/views/skyline/content/{_filter.rhtml → _filter.html.erb} +0 -0
- data/app/views/skyline/content/{create.rhtml → create.html.erb} +0 -0
- data/app/views/skyline/content/{edit.rhtml → edit.html.erb} +0 -0
- data/app/views/skyline/content/{error.rhtml → error.html.erb} +0 -0
- data/app/views/skyline/content/{list.rhtml → list.html.erb} +3 -3
- data/app/views/skyline/content/{show.rhtml → show.html.erb} +0 -0
- data/app/views/skyline/content_sections/_tags.html.erb +1 -1
- data/app/views/skyline/shared/_header_area.html.erb +1 -1
- data/app/views/skyline/users/_new.html.erb +1 -1
- data/config/initializers/middlewares.rb +5 -1
- data/config/initializers/mime_types.rb +0 -6
- data/config/initializers/observers.rb +1 -1
- data/config/locales/en-US.yml +1 -1
- data/db/fixtures/roles_and_rights.rb +5 -5
- data/db/fixtures/roots.rb +1 -1
- data/doc/concepts.md +37 -0
- data/lib/skyline/belongs_to_referable.rb +5 -5
- data/lib/skyline/content/class_meta_data.rb +4 -3
- data/lib/skyline/content/content.rb +28 -18
- data/lib/skyline/content/exportable.rb +3 -3
- data/lib/skyline/content/field_meta_data.rb +12 -11
- data/lib/skyline/content/implementation.rb +7 -6
- data/lib/skyline/content/meta_data/field.rb +1 -1
- data/lib/skyline/content/stack.rb +1 -1
- data/lib/skyline/content/versioning/version.rb +1 -1
- data/lib/skyline/engine.rb +1 -1
- data/lib/skyline/has_many_referables_in.rb +4 -4
- data/lib/skyline/plugins/manager.rb +4 -3
- data/lib/skyline/plugins/plugin.rb +9 -1
- data/lib/skyline/rendering/renderer.rb +12 -2
- data/lib/skyline/sections/interface.rb +1 -1
- data/lib/skyline/taggable.rb +4 -4
- data/lib/skyline/version.rb +2 -2
- data/public/skyline/javascripts/src/application.js +1 -1
- data/public/skyline/javascripts/src/application_preinit.js +1 -0
- data/public/skyline/javascripts/src/library_uploader.js +1 -1
- data/public/skyline/javascripts/src/skyline.editor/src/skyline.editor.js +18 -18
- data/public/skyline/javascripts/src/skyline.editor/src/tinymce_preinit.js +4 -0
- data/public/skyline/javascripts/src/skyline.js +20 -18
- data/public/skyline/javascripts/src/skyline/src/skyline.js +2 -2
- data/public/skyline/javascripts/src/skyline/src/uploader.js +1 -1
- data/skylinecms.gemspec +7 -5
- data/test/factories.rb +2 -0
- data/test/integration/media_browser_super_access_test.rb +3 -3
- data/test/integration/media_browser_user_access_test.rb +2 -2
- data/test/integration/user_preferences_test.rb +5 -5
- data/test/test_helper.rb +1 -0
- data/test/unit/article_test.rb +1 -1
- data/test/unit/locales_test.rb +13 -3
- data/test/unit/test_content_object_test.rb +1 -1
- data/test/unit/test_section_test.rb +3 -2
- data/test/unit/user_preference_test.rb +2 -2
- data/vendor/digitpaint/nested_attributes_positioning.rb +5 -5
- metadata +66 -40
@@ -1,6 +1,5 @@
|
|
1
1
|
# @private
|
2
2
|
class Skyline::Content::Implementation
|
3
|
-
extend ActiveSupport::Memoizable
|
4
3
|
include Singleton
|
5
4
|
|
6
5
|
# All the content_classes. This works fine when using in Rails
|
@@ -30,12 +29,14 @@ class Skyline::Content::Implementation
|
|
30
29
|
|
31
30
|
# Does this implementations have a Settings class?
|
32
31
|
def has_settings?
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
return @has_settings unless @has_settings === nil
|
33
|
+
@has_settings = begin
|
34
|
+
"Settings".constantize
|
35
|
+
true
|
36
|
+
rescue NameError
|
37
|
+
false
|
38
|
+
end
|
37
39
|
end
|
38
|
-
memoize :has_settings?
|
39
40
|
|
40
41
|
# The settings class for this implementation
|
41
42
|
def settings
|
@@ -99,7 +99,7 @@ module Skyline::Content
|
|
99
99
|
|
100
100
|
# The method/column name this field writes to. This takes foreign_keys of belongs_to associations in account.
|
101
101
|
def attribute_name
|
102
|
-
self.association? && self.reflection.macro == :belongs_to && self.reflection.
|
102
|
+
self.association? && self.reflection.macro == :belongs_to && self.reflection.foreign_key || self.name
|
103
103
|
end
|
104
104
|
|
105
105
|
# The type of the associated column, or if it's serialized
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# @private
|
2
2
|
class Skyline::Content::Versioning::Version < ActiveRecord::Base
|
3
|
-
|
3
|
+
self.table_name = "skyline_versions"
|
4
4
|
belongs_to :versionable, :polymorphic => true
|
5
5
|
alias_attribute :current_version, :version
|
6
6
|
alias_attribute :current_author, :author
|
data/lib/skyline/engine.rb
CHANGED
@@ -27,7 +27,7 @@ module Skyline
|
|
27
27
|
end
|
28
28
|
|
29
29
|
initializer "skyline.setup_plugins_manager" do |app|
|
30
|
-
app.config.skyline_plugins_manager = Skyline::Plugins::Manager.new(app)
|
30
|
+
app.config.skyline_plugins_manager = Skyline::Plugins::Manager.new(self, app)
|
31
31
|
if app.config.cache_classes || !app.config.reload_plugins
|
32
32
|
app.config.skyline_plugins_manager.load_all!
|
33
33
|
end
|
@@ -34,7 +34,7 @@ module Skyline::HasManyReferablesIn
|
|
34
34
|
base.send(:has_many, :image_refs, :class_name => "Skyline::ImageRef", :conditions => {:refering_type => base.name}, :foreign_key => :refering_id, :source_type => base.name, :dependent => :destroy)
|
35
35
|
base.send(:has_many, :link_refs, :class_name => "Skyline::LinkRef", :conditions => {:refering_type => base.name}, :foreign_key => :refering_id, :source_type => base.name, :dependent => :destroy)
|
36
36
|
|
37
|
-
base.send :alias_method_chain, :
|
37
|
+
base.send :alias_method_chain, :dup, :referables
|
38
38
|
end
|
39
39
|
|
40
40
|
module ClassMethods
|
@@ -72,11 +72,11 @@ module Skyline::HasManyReferablesIn
|
|
72
72
|
|
73
73
|
# Implementation of the clone interface
|
74
74
|
# @private
|
75
|
-
def
|
76
|
-
|
75
|
+
def dup_with_referables
|
76
|
+
dup_without_referables.tap do |dup|
|
77
77
|
if !self.referable_fields.nil?
|
78
78
|
self.referable_fields.each do |field|
|
79
|
-
|
79
|
+
dup.send("#{field}=".to_sym, self.send(field,true,{:nullify => true}))
|
80
80
|
end
|
81
81
|
end
|
82
82
|
end
|
@@ -16,10 +16,11 @@
|
|
16
16
|
# @private
|
17
17
|
class Skyline::Plugins::Manager
|
18
18
|
|
19
|
-
attr_reader :app
|
19
|
+
attr_reader :app, :engine
|
20
20
|
|
21
|
-
def initialize(app)
|
21
|
+
def initialize(engine, app)
|
22
22
|
@app = app
|
23
|
+
@engine = engine
|
23
24
|
init_all!
|
24
25
|
end
|
25
26
|
|
@@ -47,7 +48,7 @@ class Skyline::Plugins::Manager
|
|
47
48
|
#
|
48
49
|
# @return [Pathname] Rails.public_path + "skyline_plugins"
|
49
50
|
def public_path
|
50
|
-
Pathname.new(self.app.paths
|
51
|
+
Pathname.new(self.app.paths['public'].to_a.first) + "skyline_plugins"
|
51
52
|
end
|
52
53
|
|
53
54
|
# All known plugins
|
@@ -58,10 +58,18 @@ class Skyline::Plugins::Plugin
|
|
58
58
|
def add_view_path!
|
59
59
|
vp = (self.path + "app/views")
|
60
60
|
return unless vp.exist?
|
61
|
+
engine_vp = self.manager.engine.root + "app/views"
|
61
62
|
|
62
63
|
ActiveSupport.on_load(:action_controller) do
|
63
|
-
|
64
|
+
current_view_paths = self.view_paths
|
65
|
+
append_view_path(vp)
|
66
|
+
plugin_path = self.view_paths.dup.pop
|
67
|
+
|
68
|
+
ep = self.view_paths.detect{|p| p.to_path == engine_vp.to_s}
|
69
|
+
i = self.view_paths.index(ep)
|
70
|
+
self.view_paths = current_view_paths.dup.insert(i, plugin_path)
|
64
71
|
end
|
72
|
+
|
65
73
|
ActiveSupport.on_load(:action_mailer) do
|
66
74
|
prepend_view_path(vp)
|
67
75
|
end
|
@@ -62,7 +62,17 @@ class Skyline::Rendering::Renderer
|
|
62
62
|
# Convert a renderable specified by string to a class
|
63
63
|
def renderables_to_class(type, renderables, additional_map = {})
|
64
64
|
map = {:sections => "Skyline::Sections"}.merge(additional_map)
|
65
|
-
renderables.map
|
65
|
+
renderables.map do |f|
|
66
|
+
if f.kind_of?(String)
|
67
|
+
if f =~ /\A::/
|
68
|
+
f.camelize.constantize
|
69
|
+
else
|
70
|
+
"#{[map[type], f.camelize].compact.join("::")}".constantize
|
71
|
+
end
|
72
|
+
else
|
73
|
+
f
|
74
|
+
end
|
75
|
+
end
|
66
76
|
end
|
67
77
|
|
68
78
|
end
|
@@ -163,7 +173,7 @@ class Skyline::Rendering::Renderer
|
|
163
173
|
#
|
164
174
|
# @return [String] The rendererd templates
|
165
175
|
def render_collection(objects, options = {}, &block)
|
166
|
-
self.
|
176
|
+
self.dup.send(:_render_collection, objects, options, &block)
|
167
177
|
end
|
168
178
|
|
169
179
|
# The current object that's being rendered
|
@@ -24,7 +24,7 @@ module Skyline::Sections::Interface
|
|
24
24
|
|
25
25
|
def self.included(base)
|
26
26
|
base.class_eval do
|
27
|
-
|
27
|
+
self.table_name = "skyline_sections_#{base.table_name}" if base.parents.include?(Skyline)
|
28
28
|
has_one :section, :as => :sectionable, :class_name => "Skyline::Section"
|
29
29
|
end
|
30
30
|
base.send(:cattr_accessor, :default_interface)
|
data/lib/skyline/taggable.rb
CHANGED
@@ -28,7 +28,7 @@ module Skyline::Taggable
|
|
28
28
|
base.send :has_many, :tags, :through => :associated_tags, :class_name => "Skyline::Tag"
|
29
29
|
base.send :cattr_accessor, :taggable_type
|
30
30
|
|
31
|
-
base.send :alias_method_chain, :
|
31
|
+
base.send :alias_method_chain, :dup, :associated_tags
|
32
32
|
|
33
33
|
base.class_eval do
|
34
34
|
scope :with_tags, lambda {|tags|
|
@@ -60,9 +60,9 @@ module Skyline::Taggable
|
|
60
60
|
self.class.available_tags
|
61
61
|
end
|
62
62
|
|
63
|
-
def
|
64
|
-
|
65
|
-
|
63
|
+
def dup_with_associated_tags
|
64
|
+
dup_without_associated_tags.tap{|dup|
|
65
|
+
dup.associated_tags = self.associated_tags.collect{|at| at.dup }
|
66
66
|
}
|
67
67
|
end
|
68
68
|
|
data/lib/skyline/version.rb
CHANGED
@@ -5,7 +5,7 @@ module Skyline
|
|
5
5
|
# @private
|
6
6
|
module VERSION
|
7
7
|
MAJOR = 3
|
8
|
-
MINOR =
|
8
|
+
MINOR = 3
|
9
9
|
TINY = 0
|
10
10
|
BUILD = 0
|
11
11
|
|
@@ -17,7 +17,7 @@ module Skyline
|
|
17
17
|
if `git --git-dir=#{git_dir} describe --tags HEAD` =~ /^v\d+\.\d+\.\d+(\.\d+)?$/
|
18
18
|
build = nil
|
19
19
|
else
|
20
|
-
build = `git --git-dir=#{git_dir} show HEAD --format=format:"%h"
|
20
|
+
build = `git --git-dir=#{git_dir} show HEAD --format=format:"%h" 2>&1 -s`
|
21
21
|
if build =~ /[0-9a-f]+/
|
22
22
|
build = build.to_s
|
23
23
|
else
|
@@ -0,0 +1 @@
|
|
1
|
+
var Application = {};
|
@@ -1,12 +1,26 @@
|
|
1
|
-
|
2
|
-
tinyMCEPreInit.suffix = "";
|
3
|
-
tinyMCEPreInit.base = "/javascripts/skyline.editor";
|
4
|
-
tinyMCEPreInit.query = "";
|
1
|
+
//= require "tinymce_preinit.js"
|
5
2
|
|
6
3
|
//= require "../vendor/tinymce/jscripts/tiny_mce/tiny_mce_src"
|
7
4
|
//= require "../vendor/tinymce/jscripts/tiny_mce/themes/advanced/editor_template"
|
8
5
|
//= require "../vendor/tinymce/jscripts/tiny_mce/plugins/paste/editor_plugin"
|
9
6
|
|
7
|
+
//= require_self
|
8
|
+
|
9
|
+
//= require "script_loader"
|
10
|
+
//= require "theme"
|
11
|
+
//= require "ui/separator"
|
12
|
+
//= require "ui/toolbar"
|
13
|
+
//= require "plugins/autoresize/editor_plugin"
|
14
|
+
//= require "plugins/skylinewindows/editor_plugin"
|
15
|
+
//= require "plugins/skylineimage/editor_plugin"
|
16
|
+
//= require "plugins/skylineimage/dialog"
|
17
|
+
//= require "plugins/skylinelink/editor_plugin"
|
18
|
+
//= require "plugins/skylinelink/dialog"
|
19
|
+
//= require "plugins/skylinecode/editor_plugin"
|
20
|
+
//= require "plugins/skylinecode/dialog"
|
21
|
+
//= require "plugins/skylinecontextmenu/editor_plugin"
|
22
|
+
//= require "plugins/skylinetable/editor_plugin"
|
23
|
+
|
10
24
|
var __FILE__ = Skyline.Utils.getJsLocation("skyline.editor.js");
|
11
25
|
|
12
26
|
Skyline.Editor = new Class({
|
@@ -130,17 +144,3 @@ Skyline.Editor = new Class({
|
|
130
144
|
}
|
131
145
|
});
|
132
146
|
|
133
|
-
//= require "script_loader"
|
134
|
-
//= require "theme"
|
135
|
-
//= require "ui/separator"
|
136
|
-
//= require "ui/toolbar"
|
137
|
-
//= require "plugins/autoresize/editor_plugin"
|
138
|
-
//= require "plugins/skylinewindows/editor_plugin"
|
139
|
-
//= require "plugins/skylineimage/editor_plugin"
|
140
|
-
//= require "plugins/skylineimage/dialog"
|
141
|
-
//= require "plugins/skylinelink/editor_plugin"
|
142
|
-
//= require "plugins/skylinelink/dialog"
|
143
|
-
//= require "plugins/skylinecode/editor_plugin"
|
144
|
-
//= require "plugins/skylinecode/dialog"
|
145
|
-
//= require "plugins/skylinecontextmenu/editor_plugin"
|
146
|
-
//= require "plugins/skylinetable/editor_plugin"
|
@@ -1,18 +1,20 @@
|
|
1
|
-
//= require
|
2
|
-
//
|
3
|
-
//= require
|
4
|
-
//= require
|
5
|
-
//= require
|
6
|
-
//= require
|
7
|
-
//= require
|
8
|
-
//= require
|
9
|
-
//= require
|
10
|
-
//= require
|
11
|
-
//= require
|
12
|
-
//= require
|
13
|
-
//= require
|
14
|
-
//= require
|
15
|
-
//= require
|
16
|
-
//= require
|
17
|
-
//= require
|
18
|
-
//= require
|
1
|
+
//= require "skyline/src/skyline"
|
2
|
+
//
|
3
|
+
//= require "skyline/src/utils"
|
4
|
+
//= require "events"
|
5
|
+
//= require "drag"
|
6
|
+
//= require "layout"
|
7
|
+
//= require "tree"
|
8
|
+
//= require "tag_selector"
|
9
|
+
//= require "uploader"
|
10
|
+
//= require "dialog"
|
11
|
+
//= require "tabs"
|
12
|
+
//= require "toggle"
|
13
|
+
//= require "menubutton"
|
14
|
+
//= require "sortable"
|
15
|
+
//= require "hover_select"
|
16
|
+
//= require "field_replicator"
|
17
|
+
//= require "menu"
|
18
|
+
//= require "table"
|
19
|
+
|
20
|
+
//= require_self
|
data/skylinecms.gemspec
CHANGED
@@ -29,17 +29,19 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
30
30
|
|
31
31
|
s.add_dependency "thor"
|
32
|
-
s.add_dependency "rails", "3.
|
32
|
+
s.add_dependency "rails", "~> 3.2.2"
|
33
33
|
s.add_dependency "polyglot", "0.3.2"
|
34
|
-
s.add_dependency "sprockets", "1.
|
34
|
+
s.add_dependency "sprockets", "2.1.2"
|
35
35
|
s.add_dependency "mime-types", "1.16"
|
36
36
|
s.add_dependency "rmagick", "2.13.1"
|
37
|
-
s.add_dependency "hpricot", "0.8.
|
37
|
+
s.add_dependency "hpricot", "0.8.6"
|
38
38
|
s.add_dependency "guid", "0.1.1"
|
39
39
|
s.add_dependency "will_paginate", "~> 3.0.0"
|
40
|
-
s.add_dependency "seed-fu", "
|
41
|
-
s.add_dependency "mail", "~>2.
|
40
|
+
s.add_dependency "seed-fu", "2.2.0"
|
41
|
+
s.add_dependency "mail", "~>2.4.1"
|
42
42
|
s.add_dependency "personify", "~> 1.1.0"
|
43
|
+
s.add_dependency 'factory_girl'
|
44
|
+
s.add_dependency 'shoulda'
|
43
45
|
|
44
46
|
end
|
45
47
|
|
data/test/factories.rb
CHANGED
@@ -37,15 +37,15 @@ class MediaBrowserSuperAccessTest < ActionController::IntegrationTest
|
|
37
37
|
end
|
38
38
|
|
39
39
|
should "be able to create a MediaFile" do
|
40
|
-
@u.allow(:post, skyline_media_dir_files_path(@media_dir),{:Filename => "/files/test.gif", :Filedata => fixture_file_upload("/../../
|
40
|
+
@u.allow(:post, skyline_media_dir_files_path(@media_dir),{:Filename => "/files/test.gif", :Filedata => fixture_file_upload(File.dirname(__FILE__) + "/../../db/fixtures/files/test.gif", "image/gif")})
|
41
41
|
end
|
42
42
|
|
43
43
|
should "be able to edit a MediaFile" do
|
44
|
-
@u.allow(:put, skyline_media_dir_file_path(@media_dir,@media_file), {:Filename => "/files/test.gif", :mediafile => fixture_file_upload("/../../
|
44
|
+
@u.allow(:put, skyline_media_dir_file_path(@media_dir,@media_file), {:Filename => "/files/test.gif", :mediafile => fixture_file_upload(File.dirname(__FILE__) + "/../../db/fixtures/files/test.gif", "image/gif"), :format => :js})
|
45
45
|
end
|
46
46
|
|
47
47
|
should "be able to delete a MediaFile" do
|
48
|
-
@u.allow(:delete, skyline_media_dir_file_path(@media_dir,@media_file))
|
48
|
+
@u.allow(:delete, skyline_media_dir_file_path(@media_dir,@media_file), :format => :js)
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
@@ -34,11 +34,11 @@ class MediaBrowserUserAccessTest < ActionController::IntegrationTest
|
|
34
34
|
end
|
35
35
|
|
36
36
|
should "not be able to create a MediaFile" do
|
37
|
-
@u.deny(:post, skyline_media_dir_files_path(@media_dir),{:Filename => "/files/test.gif", :mediafile => fixture_file_upload("/../../
|
37
|
+
@u.deny(:post, skyline_media_dir_files_path(@media_dir),{:Filename => "/files/test.gif", :mediafile => fixture_file_upload(File.dirname(__FILE__) + "/../../db/fixtures/files/test.gif", "image/gif")})
|
38
38
|
end
|
39
39
|
|
40
40
|
should "not be able to edit a MediaFile" do
|
41
|
-
@u.deny(:put, skyline_media_dir_file_path(@media_dir,@media_file), {:Filename => "/files/test.gif", :mediafile => fixture_file_upload("/../../
|
41
|
+
@u.deny(:put, skyline_media_dir_file_path(@media_dir,@media_file), {:Filename => "/files/test.gif", :mediafile => fixture_file_upload(File.dirname(__FILE__) + "/../../db/fixtures/files/test.gif", "image/gif")})
|
42
42
|
end
|
43
43
|
|
44
44
|
should "not be able to delete a MediaFile" do
|
@@ -14,27 +14,27 @@ class UserPreferencesTest < ActionController::IntegrationTest
|
|
14
14
|
end
|
15
15
|
|
16
16
|
should "be stored in a cookie with value and sent on request" do
|
17
|
-
@u.cookies["skyline_up"] =
|
17
|
+
@u.cookies["skyline_up"] = ActiveSupport::JSON.encode({"my_field" => "a.email@address.com"})
|
18
18
|
@u.get "/skyline"
|
19
19
|
@u.assert_equal('a.email@address.com', @user.user_preferences.get('my_field'))
|
20
20
|
end
|
21
21
|
|
22
22
|
should "be stored in a cookie with serialized hash and sent on request" do
|
23
23
|
up_my_hash = {'a' => 1, 'b' => 2}
|
24
|
-
@u.cookies["skyline_up"] =
|
24
|
+
@u.cookies["skyline_up"] = ActiveSupport::JSON.encode({"my_hash" => up_my_hash})
|
25
25
|
@u.get "/skyline"
|
26
26
|
@u.assert_equal(up_my_hash, @user.user_preferences.get('my_hash'))
|
27
27
|
end
|
28
28
|
|
29
29
|
should "be able to collect multiple values and send after request" do
|
30
|
-
@u.cookies["skyline_up"] =
|
30
|
+
@u.cookies["skyline_up"] = ActiveSupport::JSON.encode({"my_field" => "a.email@address.com", "my_hash" => {'a' => 1, 'b' => 2}})
|
31
31
|
@u.get "/skyline"
|
32
32
|
@u.assert_equal({'a' => 1, 'b' => 2}, @user.user_preferences.get('my_hash'))
|
33
33
|
@u.assert_equal('a.email@address.com', @user.user_preferences.get('my_field'))
|
34
34
|
end
|
35
35
|
|
36
36
|
should "have empty value in cookie after request" do
|
37
|
-
@u.cookies["skyline_up"] =
|
37
|
+
@u.cookies["skyline_up"] = ActiveSupport::JSON.encode({"my_field" => "a.email@address.com"})
|
38
38
|
@u.cookies["my_own_field"] = "Do not delete me"
|
39
39
|
|
40
40
|
@u.get "/skyline"
|
@@ -60,7 +60,7 @@ class UserPreferencesTest < ActionController::IntegrationTest
|
|
60
60
|
|
61
61
|
should "store delete value in cookie and handle correctly" do
|
62
62
|
@u.assert @user.user_preferences.has_key?("a")
|
63
|
-
@u.cookies["skyline_up"] =
|
63
|
+
@u.cookies["skyline_up"] = ActiveSupport::JSON.encode({"_delete" => ["a","b"]})
|
64
64
|
|
65
65
|
@u.get "/skyline"
|
66
66
|
|