skozlov-netzke-core 0.1.0.2 → 0.4.1
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.
- data/CHANGELOG +108 -0
- data/LICENSE +2 -19
- data/Manifest +50 -0
- data/README.rdoc +12 -0
- data/Rakefile +2 -3
- data/TODO +2 -0
- data/autotest/discover.rb +3 -0
- data/generators/netzke_core/netzke_core_generator.rb +6 -6
- data/generators/netzke_core/templates/create_netzke_preferences.rb +2 -2
- data/javascripts/core.js +474 -111
- data/lib/app/controllers/netzke_controller.rb +76 -0
- data/lib/app/models/netzke_preference.rb +128 -39
- data/lib/netzke-core.rb +23 -9
- data/lib/netzke/action_view_ext.rb +26 -0
- data/lib/netzke/base.rb +440 -102
- data/lib/netzke/base_js.rb +258 -0
- data/lib/netzke/controller_extensions.rb +80 -29
- data/lib/netzke/core_ext.rb +72 -21
- data/lib/netzke/feedback_ghost.rb +43 -0
- data/lib/netzke/routing.rb +9 -0
- data/netzke-core.gemspec +10 -11
- data/stylesheets/core.css +12 -0
- data/test/app_root/app/controllers/{application.rb → application_controller.rb} +0 -0
- data/test/app_root/app/models/role.rb +3 -0
- data/test/app_root/app/models/user.rb +3 -0
- data/test/app_root/config/boot.rb +2 -1
- data/test/app_root/config/database.yml +10 -0
- data/test/app_root/config/environment.rb +1 -0
- data/test/app_root/db/migrate/20081222035855_create_netzke_preferences.rb +18 -0
- data/test/app_root/db/migrate/20090423214303_create_roles.rb +11 -0
- data/test/app_root/db/migrate/20090423222114_create_users.rb +12 -0
- data/test/app_root/lib/console_with_fixtures.rb +4 -0
- data/test/app_root/script/console +1 -0
- data/test/fixtures/roles.yml +7 -0
- data/test/fixtures/users.yml +9 -0
- data/test/test_helper.rb +3 -2
- data/test/unit/core_ext_test.rb +66 -0
- data/test/unit/netzke_core_test.rb +167 -0
- data/test/unit/netzke_preference_test.rb +103 -0
- metadata +45 -30
- data/README.mdown +0 -11
- data/generators/netzke_core/templates/create_netzke_layouts.rb +0 -14
- data/generators/netzke_core/templates/netzke.html.erb +0 -10
- data/lib/app/models/netzke_layout.rb +0 -75
- data/lib/netzke/js_class_builder.rb +0 -114
- data/lib/vendor/facets/hash/recursive_merge.rb +0 -28
- data/test/core_ext_test.rb +0 -35
- data/test/netzke_core_test.rb +0 -136
@@ -0,0 +1,43 @@
|
|
1
|
+
module Netzke
|
2
|
+
#
|
3
|
+
# An invisible component that provides feedback service for all Netzke widgets
|
4
|
+
#
|
5
|
+
class FeedbackGhost < Base
|
6
|
+
def self.js_base_class
|
7
|
+
"Ext.Component" # yes, invisible
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.js_extend_properties
|
11
|
+
{
|
12
|
+
:show_feedback => <<-END_OF_JAVASCRIPT.l,
|
13
|
+
function(msg){
|
14
|
+
var createBox = function(s, l){
|
15
|
+
return ['<div class="msg">',
|
16
|
+
'<div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div>',
|
17
|
+
'<div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc">', s, '</div></div></div>',
|
18
|
+
'<div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div>',
|
19
|
+
'</div>'].join('');
|
20
|
+
}
|
21
|
+
|
22
|
+
var showBox = function(msg, lvl){
|
23
|
+
if (!lvl) {lvl = 'notice'};
|
24
|
+
var msgCt = Ext.DomHelper.insertFirst(document.body, {'class':'netzke-feedback'}, true);
|
25
|
+
var m = Ext.DomHelper.append(msgCt, {html:createBox(msg,lvl)}, true);
|
26
|
+
m.slideIn('t').pause(2).ghost("b", {remove:true});
|
27
|
+
}
|
28
|
+
|
29
|
+
if (typeof msg != 'string') {
|
30
|
+
var compoundMsg = "";
|
31
|
+
Ext.each(msg, function(m){
|
32
|
+
compoundMsg += m.msg + '<br>';
|
33
|
+
});
|
34
|
+
if (compoundMsg != "") showBox(compoundMsg, null); // the second parameter will be level
|
35
|
+
} else {
|
36
|
+
showBox(msg);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
END_OF_JAVASCRIPT
|
40
|
+
}
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/netzke-core.gemspec
CHANGED
@@ -2,27 +2,26 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{netzke-core}
|
5
|
-
s.version = "0.1
|
5
|
+
s.version = "0.4.1"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Sergei Kozlov"]
|
9
|
-
s.date = %q{
|
9
|
+
s.date = %q{2009-09-06}
|
10
10
|
s.description = %q{Build ExtJS/Rails widgets with minimum effort}
|
11
|
-
s.email = %q{sergei@
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "lib/app/controllers/netzke_controller.rb", "lib/app/models/
|
13
|
-
s.files = ["CHANGELOG", "
|
14
|
-
s.
|
15
|
-
s.
|
16
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Netzke-core", "--main", "README.mdown"]
|
11
|
+
s.email = %q{sergei@playcode.nl}
|
12
|
+
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README.rdoc", "TODO", "lib/app/controllers/netzke_controller.rb", "lib/app/models/netzke_preference.rb", "lib/netzke-core.rb", "lib/netzke/action_view_ext.rb", "lib/netzke/base.rb", "lib/netzke/base_js.rb", "lib/netzke/controller_extensions.rb", "lib/netzke/core_ext.rb", "lib/netzke/feedback_ghost.rb", "lib/netzke/routing.rb", "tasks/netzke_core_tasks.rake"]
|
13
|
+
s.files = ["CHANGELOG", "LICENSE", "Manifest", "README.rdoc", "Rakefile", "TODO", "autotest/discover.rb", "generators/netzke_core/USAGE", "generators/netzke_core/netzke_core_generator.rb", "generators/netzke_core/templates/create_netzke_preferences.rb", "init.rb", "install.rb", "javascripts/core.js", "lib/app/controllers/netzke_controller.rb", "lib/app/models/netzke_preference.rb", "lib/netzke-core.rb", "lib/netzke/action_view_ext.rb", "lib/netzke/base.rb", "lib/netzke/base_js.rb", "lib/netzke/controller_extensions.rb", "lib/netzke/core_ext.rb", "lib/netzke/feedback_ghost.rb", "lib/netzke/routing.rb", "netzke-core.gemspec", "stylesheets/core.css", "tasks/netzke_core_tasks.rake", "test/app_root/app/controllers/application_controller.rb", "test/app_root/app/models/role.rb", "test/app_root/app/models/user.rb", "test/app_root/config/boot.rb", "test/app_root/config/database.yml", "test/app_root/config/environment.rb", "test/app_root/config/environments/in_memory.rb", "test/app_root/config/environments/mysql.rb", "test/app_root/config/environments/postgresql.rb", "test/app_root/config/environments/sqlite.rb", "test/app_root/config/environments/sqlite3.rb", "test/app_root/config/routes.rb", "test/app_root/db/migrate/20081222035855_create_netzke_preferences.rb", "test/app_root/db/migrate/20090423214303_create_roles.rb", "test/app_root/db/migrate/20090423222114_create_users.rb", "test/app_root/lib/console_with_fixtures.rb", "test/app_root/script/console", "test/fixtures/roles.yml", "test/fixtures/users.yml", "test/test_helper.rb", "test/unit/core_ext_test.rb", "test/unit/netzke_core_test.rb", "test/unit/netzke_preference_test.rb", "uninstall.rb"]
|
14
|
+
s.homepage = %q{http://playcode.nl}
|
15
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Netzke-core", "--main", "README.rdoc"]
|
17
16
|
s.require_paths = ["lib"]
|
18
17
|
s.rubyforge_project = %q{netzke-core}
|
19
|
-
s.rubygems_version = %q{1.3.
|
18
|
+
s.rubygems_version = %q{1.3.4}
|
20
19
|
s.summary = %q{Build ExtJS/Rails widgets with minimum effort}
|
21
|
-
s.test_files = ["test/core_ext_test.rb", "test/netzke_core_test.rb"]
|
20
|
+
s.test_files = ["test/unit/core_ext_test.rb", "test/unit/netzke_core_test.rb", "test/unit/netzke_preference_test.rb"]
|
22
21
|
|
23
22
|
if s.respond_to? :specification_version then
|
24
23
|
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
25
|
-
s.specification_version =
|
24
|
+
s.specification_version = 3
|
26
25
|
|
27
26
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
28
27
|
else
|
File without changes
|
@@ -47,6 +47,7 @@ module Rails
|
|
47
47
|
def load_initializer
|
48
48
|
require "#{RAILS_FRAMEWORK_ROOT}/railties/lib/initializer"
|
49
49
|
Rails::Initializer.run(:install_gem_spec_stubs)
|
50
|
+
Rails::GemDependency.add_frozen_gem_path
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
@@ -85,7 +86,7 @@ module Rails
|
|
85
86
|
|
86
87
|
def load_rubygems
|
87
88
|
require 'rubygems'
|
88
|
-
min_version = '1.
|
89
|
+
min_version = '1.3.1'
|
89
90
|
unless rubygems_version >= min_version
|
90
91
|
$stderr.puts %Q(Rails requires RubyGems >= #{min_version} (you have #{rubygems_version}). Please `gem update --system` and try again.)
|
91
92
|
exit 1
|
@@ -2,20 +2,30 @@ in_memory:
|
|
2
2
|
adapter: sqlite3
|
3
3
|
database: ":memory:"
|
4
4
|
verbosity: quiet
|
5
|
+
pool: 5
|
6
|
+
timeout: 5000
|
5
7
|
sqlite:
|
6
8
|
adapter: sqlite
|
7
9
|
dbfile: plugin_test.sqlite.db
|
10
|
+
pool: 5
|
11
|
+
timeout: 5000
|
8
12
|
sqlite3:
|
9
13
|
adapter: sqlite3
|
10
14
|
dbfile: plugin_test.sqlite3.db
|
15
|
+
pool: 5
|
16
|
+
timeout: 5000
|
11
17
|
postgresql:
|
12
18
|
adapter: postgresql
|
13
19
|
username: postgres
|
14
20
|
password: postgres
|
15
21
|
database: plugin_test
|
22
|
+
pool: 5
|
23
|
+
timeout: 5000
|
16
24
|
mysql:
|
17
25
|
adapter: mysql
|
18
26
|
host: localhost
|
19
27
|
username: root
|
20
28
|
password:
|
21
29
|
database: plugin_test
|
30
|
+
pool: 5
|
31
|
+
timeout: 5000
|
@@ -3,6 +3,7 @@ require File.join(File.dirname(__FILE__), 'boot')
|
|
3
3
|
Rails::Initializer.run do |config|
|
4
4
|
config.cache_classes = false
|
5
5
|
config.whiny_nils = true
|
6
|
+
config.action_controller.session = {:key => 'rails_session', :secret => 'd229e4d22437432705ab3985d4d246'}
|
6
7
|
config.plugin_locators.unshift(
|
7
8
|
Class.new(Rails::Plugin::Locator) do
|
8
9
|
def plugins
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class CreateNetzkePreferences < ActiveRecord::Migration
|
2
|
+
def self.up
|
3
|
+
create_table :netzke_preferences do |t|
|
4
|
+
t.string :name
|
5
|
+
t.string :pref_type
|
6
|
+
t.string :value
|
7
|
+
t.integer :user_id
|
8
|
+
t.integer :role_id
|
9
|
+
t.string :widget_name
|
10
|
+
|
11
|
+
t.timestamps
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.down
|
16
|
+
drop_table :netzke_preferences
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,4 @@
|
|
1
|
+
# Loads fixtures into the database when running the test app via the console
|
2
|
+
(ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Rails.root, '../fixtures/*.{yml,csv}'))).each do |fixture_file|
|
3
|
+
Fixtures.create_fixtures(File.join(Rails.root, '../fixtures'), File.basename(fixture_file, '.*'))
|
4
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -4,7 +4,6 @@ ENV['RAILS_ENV'] ||= 'in_memory'
|
|
4
4
|
# Load the Rails environment and testing framework
|
5
5
|
require "#{File.dirname(__FILE__)}/app_root/config/environment"
|
6
6
|
require 'test_help'
|
7
|
-
require 'action_view/test_case' # Load additional test classes not done automatically by < Rails 2.2.2
|
8
7
|
|
9
8
|
# Undo changes to RAILS_ENV
|
10
9
|
silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
|
@@ -13,8 +12,10 @@ silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
|
|
13
12
|
ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
|
14
13
|
|
15
14
|
# Set default fixture loading properties
|
16
|
-
|
15
|
+
ActiveSupport::TestCase.class_eval do
|
17
16
|
self.use_transactional_fixtures = true
|
18
17
|
self.use_instantiated_fixtures = false
|
19
18
|
self.fixture_path = "#{File.dirname(__FILE__)}/fixtures"
|
19
|
+
|
20
|
+
fixtures :all
|
20
21
|
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'netzke/core_ext'
|
3
|
+
|
4
|
+
class CoreExtTest < ActiveSupport::TestCase
|
5
|
+
test "recursive delete if nil" do
|
6
|
+
assert_equal({:a => 1, :b => {:c => 4, :d => 5}}, {:a => 1, :aa => nil, :b => {:c => 4, :d => 5, :cc => nil}}.recursive_delete_if_nil)
|
7
|
+
|
8
|
+
assert_equal({:a => [{:e => 5}, {:f => 7}], :b => {:c => 4, :d => 5}}, {:a => [{:e => 5, :ee => nil},{:f => 7, :ff => nil}], :aa => nil, :b => {:c => 4, :d => 5, :cc => nil}}.recursive_delete_if_nil)
|
9
|
+
|
10
|
+
assert_equal([
|
11
|
+
{:a => [{:e => 5}]},
|
12
|
+
{},
|
13
|
+
{:b => {:c => 4, :d => 5}}
|
14
|
+
], [
|
15
|
+
{:a => [{:e => 5, :ee => nil}]},
|
16
|
+
{:aa => nil},
|
17
|
+
{:b => {:c => 4, :d => 5, :cc => nil}}
|
18
|
+
].recursive_delete_if_nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
test "convert keys" do
|
22
|
+
assert_equal([
|
23
|
+
{:aB => 1, :cDD => [{:lookMa => true},{:wowNow => true}]}
|
24
|
+
],[:a_b => 1, :c_d_d => [{:look_ma => true},{:wow_now => true}]].convert_keys{|k| k.camelize(:lower)})
|
25
|
+
end
|
26
|
+
|
27
|
+
test "javascript-like access to hash data" do
|
28
|
+
a = {}
|
29
|
+
a["key"] = 100
|
30
|
+
assert_equal(100, a.key)
|
31
|
+
|
32
|
+
a.key = 200
|
33
|
+
assert_equal(200, a["key"])
|
34
|
+
|
35
|
+
a.another_key = 300
|
36
|
+
assert_equal(300, a[:another_key])
|
37
|
+
end
|
38
|
+
|
39
|
+
test "jsonify" do
|
40
|
+
assert_equal({:aB => 1, "cD" => [[1, {:eF => "stay_same"}], {"literal_symbol" => :should_not_change, "literal_string".l => "also_should_not"}]}, {:a_b => 1, "c_d" => [[1, {:e_f => "stay_same"}], {:literal_symbol.l => :should_not_change, "literal_string".l => "also_should_not"}]}.jsonify)
|
41
|
+
end
|
42
|
+
|
43
|
+
# test "flatten" do
|
44
|
+
# assert_equal([{
|
45
|
+
# :name => :one, :value => 1
|
46
|
+
# },{
|
47
|
+
# :name => :two, :value => 2
|
48
|
+
# },{
|
49
|
+
# :name => :three__four, :value => 4
|
50
|
+
# },{
|
51
|
+
# :name => :three__five__six, :value => 6
|
52
|
+
# }],
|
53
|
+
# {
|
54
|
+
# :one => 1,
|
55
|
+
# :two => 2,
|
56
|
+
# :three => {
|
57
|
+
# :four => 4,
|
58
|
+
# :five => {
|
59
|
+
# :six => 6
|
60
|
+
# }
|
61
|
+
# }
|
62
|
+
# }.flatten
|
63
|
+
# )
|
64
|
+
# end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,167 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'netzke-core'
|
3
|
+
|
4
|
+
module Netzke
|
5
|
+
class Widget < Base
|
6
|
+
api :method_one, :method_two
|
7
|
+
|
8
|
+
def self.config
|
9
|
+
super.merge({
|
10
|
+
:pref_one => 1,
|
11
|
+
:pref_two => 2
|
12
|
+
})
|
13
|
+
end
|
14
|
+
|
15
|
+
def initial_aggregatees
|
16
|
+
{
|
17
|
+
:nested_one => {:widget_class_name => 'NestedWidgetOne'},
|
18
|
+
:nested_two => {:widget_class_name => 'NestedWidgetTwo'}
|
19
|
+
}
|
20
|
+
end
|
21
|
+
|
22
|
+
def available_permissions
|
23
|
+
%w(read update)
|
24
|
+
end
|
25
|
+
|
26
|
+
def default_config
|
27
|
+
{
|
28
|
+
:config_uno => true,
|
29
|
+
:config_dos => false
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class NestedWidgetOne < Base
|
35
|
+
end
|
36
|
+
|
37
|
+
class NestedWidgetTwo < Base
|
38
|
+
def initial_aggregatees
|
39
|
+
{
|
40
|
+
:nested => {:widget_class_name => 'DeepNestedWidget'}
|
41
|
+
}
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class DeepNestedWidget < Base
|
46
|
+
end
|
47
|
+
|
48
|
+
class JsInheritanceWidget < Widget
|
49
|
+
end
|
50
|
+
|
51
|
+
class InheritedWidget < Widget
|
52
|
+
def self.config
|
53
|
+
super.merge({
|
54
|
+
:pref_one => -1
|
55
|
+
})
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
class NetzkeCoreTest < ActiveSupport::TestCase
|
61
|
+
include Netzke
|
62
|
+
|
63
|
+
def setup
|
64
|
+
end
|
65
|
+
|
66
|
+
test "base class loaded" do
|
67
|
+
assert_kind_of Netzke::Base, Netzke::Base.new
|
68
|
+
end
|
69
|
+
|
70
|
+
test "short widget class name" do
|
71
|
+
assert_equal 'Widget', Widget.short_widget_class_name
|
72
|
+
end
|
73
|
+
|
74
|
+
test "api" do
|
75
|
+
widget_class = Widget
|
76
|
+
assert_equal [:load_aggregatee_with_cache, :method_one, :method_two], widget_class.api_points
|
77
|
+
end
|
78
|
+
|
79
|
+
test "aggregatees" do
|
80
|
+
widget = Widget.new(:name => 'my_widget')
|
81
|
+
|
82
|
+
# instantiate aggregatees
|
83
|
+
nested_widget_one = widget.aggregatee_instance(:nested_one)
|
84
|
+
nested_widget_two = widget.aggregatee_instance(:nested_two)
|
85
|
+
deep_nested_widget = widget.aggregatee_instance(:nested_two__nested)
|
86
|
+
|
87
|
+
# check the classes of aggregation instances
|
88
|
+
assert_kind_of NestedWidgetOne, nested_widget_one
|
89
|
+
assert_kind_of NestedWidgetTwo, nested_widget_two
|
90
|
+
assert_kind_of DeepNestedWidget, deep_nested_widget
|
91
|
+
|
92
|
+
# check the internal names of aggregation instances
|
93
|
+
assert_equal 'my_widget', widget.id_name
|
94
|
+
assert_equal 'my_widget__nested_one', nested_widget_one.id_name
|
95
|
+
assert_equal 'my_widget__nested_two', nested_widget_two.id_name
|
96
|
+
assert_equal 'my_widget__nested_two__nested', deep_nested_widget.id_name
|
97
|
+
end
|
98
|
+
|
99
|
+
# test "permissions" do
|
100
|
+
# widget = Widget.new
|
101
|
+
# assert_equal({:read => true, :update => true}, widget.permissions)
|
102
|
+
#
|
103
|
+
# widget = Widget.new(:prohibit => :all)
|
104
|
+
# assert_equal({:read => false, :update => false}, widget.permissions)
|
105
|
+
#
|
106
|
+
# widget = Widget.new(:prohibit => :read)
|
107
|
+
# assert_equal({:read => false, :update => true}, widget.permissions)
|
108
|
+
#
|
109
|
+
# widget = Widget.new(:prohibit => [:read, :update])
|
110
|
+
# assert_equal({:read => false, :update => false}, widget.permissions)
|
111
|
+
#
|
112
|
+
# widget = Widget.new(:prohibit => :all, :allow => :read)
|
113
|
+
# assert_equal({:read => true, :update => false}, widget.permissions)
|
114
|
+
#
|
115
|
+
# widget = Widget.new(:prohibit => :all, :allow => [:read, :update])
|
116
|
+
# assert_equal({:read => true, :update => true}, widget.permissions)
|
117
|
+
# end
|
118
|
+
|
119
|
+
test "default config" do
|
120
|
+
widget = Widget.new
|
121
|
+
assert_equal({:config_uno => true, :config_dos => false}, widget.config)
|
122
|
+
|
123
|
+
widget = Widget.new(:name => 'widget', :config_uno => false)
|
124
|
+
assert_equal({:name => 'widget', :config_uno => false, :config_dos => false}, widget.config)
|
125
|
+
end
|
126
|
+
|
127
|
+
test "dependencies calculated based on aggregations" do
|
128
|
+
widget = Widget.new
|
129
|
+
assert(widget.dependencies.include?('NestedWidgetOne'))
|
130
|
+
assert(widget.dependencies.include?('NestedWidgetTwo'))
|
131
|
+
assert(!widget.dependencies.include?('DeepNestedWidget'))
|
132
|
+
end
|
133
|
+
|
134
|
+
test "dependency classes" do
|
135
|
+
widget = Widget.new
|
136
|
+
# not testing the order
|
137
|
+
assert(%w{DeepNestedWidget NestedWidgetOne NestedWidgetTwo Widget}.inject(true){|r, k| r && widget.dependency_classes.include?(k)})
|
138
|
+
end
|
139
|
+
|
140
|
+
test "widget instance by config" do
|
141
|
+
widget = Netzke::Base.instance_by_config({:widget_class_name => 'Widget', :name => 'a_widget'})
|
142
|
+
assert(Widget, widget.class)
|
143
|
+
assert('a_widget', widget.name)
|
144
|
+
end
|
145
|
+
|
146
|
+
test "js inheritance" do
|
147
|
+
widget = JsInheritanceWidget.new
|
148
|
+
assert(widget.js_missing_code.index("Ext.netzke.cache.JsInheritanceWidget"))
|
149
|
+
assert(widget.js_missing_code.index("Ext.netzke.cache.Widget"))
|
150
|
+
end
|
151
|
+
|
152
|
+
test "class-level configuration" do
|
153
|
+
# predefined defaults
|
154
|
+
assert(1, Netzke::Widget.config[:pref_one])
|
155
|
+
assert(2, Netzke::Widget.config[:pref_two])
|
156
|
+
assert(-1, Netzke::InheritedWidget.config[:pref_one])
|
157
|
+
assert(2, Netzke::InheritedWidget.config[:pref_two])
|
158
|
+
|
159
|
+
Netzke::Widget.config[:pref_for_widget] = 1
|
160
|
+
Netzke::InheritedWidget.config[:pref_for_widget] = 2
|
161
|
+
|
162
|
+
assert(1, Netzke::Widget.config[:pref_for_widget])
|
163
|
+
assert(2, Netzke::InheritedWidget.config[:pref_for_widget])
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|