skozlov-netzke-core 0.1.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.
Files changed (38) hide show
  1. data/CHANGELOG +3 -0
  2. data/LICENSE +20 -0
  3. data/Rakefile +15 -0
  4. data/generators/netzke_core/USAGE +8 -0
  5. data/generators/netzke_core/netzke_core_generator.rb +13 -0
  6. data/generators/netzke_core/templates/create_netzke_layouts.rb +14 -0
  7. data/generators/netzke_core/templates/create_netzke_preferences.rb +18 -0
  8. data/generators/netzke_core/templates/netzke.html.erb +10 -0
  9. data/init.rb +1 -0
  10. data/install.rb +1 -0
  11. data/javascripts/core.js +126 -0
  12. data/lib/app/controllers/netzke_controller.rb +16 -0
  13. data/lib/app/models/netzke_layout.rb +75 -0
  14. data/lib/app/models/netzke_preference.rb +66 -0
  15. data/lib/netzke/base.rb +198 -0
  16. data/lib/netzke/controller_extensions.rb +87 -0
  17. data/lib/netzke/core_ext.rb +77 -0
  18. data/lib/netzke/js_class_builder.rb +125 -0
  19. data/lib/netzke-core.rb +22 -0
  20. data/lib/vendor/facets/hash/recursive_merge.rb +28 -0
  21. data/netzke-core.gemspec +32 -0
  22. data/tasks/netzke_core_tasks.rake +4 -0
  23. data/test/app_root/app/controllers/application.rb +2 -0
  24. data/test/app_root/config/boot.rb +114 -0
  25. data/test/app_root/config/database.yml +21 -0
  26. data/test/app_root/config/environment.rb +13 -0
  27. data/test/app_root/config/environments/in_memory.rb +0 -0
  28. data/test/app_root/config/environments/mysql.rb +0 -0
  29. data/test/app_root/config/environments/postgresql.rb +0 -0
  30. data/test/app_root/config/environments/sqlite.rb +0 -0
  31. data/test/app_root/config/environments/sqlite3.rb +0 -0
  32. data/test/app_root/config/routes.rb +4 -0
  33. data/test/app_root/script/console +6 -0
  34. data/test/core_ext_test.rb +35 -0
  35. data/test/netzke_core_test.rb +136 -0
  36. data/test/test_helper.rb +20 -0
  37. data/uninstall.rb +1 -0
  38. metadata +109 -0
@@ -0,0 +1,136 @@
1
+ require 'test_helper'
2
+
3
+ require 'netzke-core'
4
+
5
+ # test widgets
6
+ module Netzke
7
+ class Widget < Base
8
+ interface :method_one, :method_two
9
+ def initial_aggregatees
10
+ {
11
+ :nested_one => {:widget_class_name => 'NestedWidgetOne'},
12
+ :nested_two => {:widget_class_name => 'NestedWidgetTwo'}
13
+ }
14
+ end
15
+
16
+ def available_permissions
17
+ %w(read update)
18
+ end
19
+
20
+ def initial_config
21
+ {
22
+ :config_uno => true,
23
+ :config_dos => false
24
+ }
25
+ end
26
+ end
27
+
28
+ class NestedWidgetOne < Base
29
+ end
30
+
31
+ class NestedWidgetTwo < Base
32
+ def initial_aggregatees
33
+ {
34
+ :nested => {:widget_class_name => 'DeepNestedWidget'}
35
+ }
36
+ end
37
+ end
38
+
39
+ class DeepNestedWidget < Base
40
+ end
41
+ end
42
+
43
+ # Fake ActiveRecord
44
+ # module ActiveRecord
45
+ # class Base
46
+ # def find
47
+ # end
48
+ # end
49
+ # end
50
+
51
+ # Fake ActionController
52
+ # module ActionController
53
+ # class Base
54
+ # end
55
+ # end
56
+
57
+
58
+ # Logger don't open files
59
+ # class Logger
60
+ # def initialize(*args)
61
+ # end
62
+ # end
63
+
64
+ class NetzkeCoreTest < ActiveSupport::TestCase
65
+ include Netzke
66
+
67
+ def setup
68
+ object = mock()
69
+ object.stubs(:normalized_value)
70
+ object.stubs(:normalized_value=)
71
+ # object.stubs(:save!)
72
+ NetzkePreference.stubs(:find).returns(object)
73
+ end
74
+
75
+ test "base class loaded" do
76
+ assert_kind_of Netzke::Base, Netzke::Base.new
77
+ end
78
+
79
+ test "short widget class name" do
80
+ assert_equal 'Widget', Widget.short_widget_class_name
81
+ end
82
+
83
+ test "interface" do
84
+ widget_class = Widget
85
+ assert_equal [:get_widget, :method_one, :method_two], widget_class.interface_points
86
+ end
87
+
88
+ test "aggregatees" do
89
+ widget = Widget.new(:name => 'my_widget')
90
+
91
+ # instantiate aggregatees
92
+ nested_widget_one = widget.aggregatee_instance(:nested_one)
93
+ nested_widget_two = widget.aggregatee_instance(:nested_two)
94
+ deep_nested_widget = widget.aggregatee_instance(:nested_two__nested)
95
+
96
+ # check the classes of aggregation instances
97
+ assert_kind_of NestedWidgetOne, nested_widget_one
98
+ assert_kind_of NestedWidgetTwo, nested_widget_two
99
+ assert_kind_of DeepNestedWidget, deep_nested_widget
100
+
101
+ # check the internal names of aggregation instances
102
+ assert_equal 'my_widget', widget.id_name
103
+ assert_equal 'my_widget__nested_one', nested_widget_one.id_name
104
+ assert_equal 'my_widget__nested_two', nested_widget_two.id_name
105
+ assert_equal 'my_widget__nested_two__nested', deep_nested_widget.id_name
106
+ end
107
+
108
+ test "permissions" do
109
+ widget = Widget.new
110
+ assert_equal({:read => true, :update => true}, widget.permissions)
111
+
112
+ widget = Widget.new(:prohibit => :all)
113
+ assert_equal({:read => false, :update => false}, widget.permissions)
114
+
115
+ widget = Widget.new(:prohibit => :read)
116
+ assert_equal({:read => false, :update => true}, widget.permissions)
117
+
118
+ widget = Widget.new(:prohibit => [:read, :update])
119
+ assert_equal({:read => false, :update => false}, widget.permissions)
120
+
121
+ widget = Widget.new(:prohibit => :all, :allow => :read)
122
+ assert_equal({:read => true, :update => false}, widget.permissions)
123
+
124
+ widget = Widget.new(:prohibit => :all, :allow => [:read, :update])
125
+ assert_equal({:read => true, :update => true}, widget.permissions)
126
+ end
127
+
128
+ test "default config" do
129
+ widget = Widget.new
130
+ assert_equal({:ext_config => {}, :config_uno => true, :config_dos => false}, widget.config)
131
+
132
+ widget = Widget.new(:name => 'widget', :config_uno => false)
133
+ assert_equal({:name => 'widget', :ext_config => {}, :config_uno => false, :config_dos => false}, widget.config)
134
+ end
135
+
136
+ end
@@ -0,0 +1,20 @@
1
+ # Set the default environment to sqlite3's in_memory database
2
+ ENV['RAILS_ENV'] ||= 'in_memory'
3
+
4
+ # Load the Rails environment and testing framework
5
+ require "#{File.dirname(__FILE__)}/app_root/config/environment"
6
+ require 'test_help'
7
+ require 'action_view/test_case' # Load additional test classes not done automatically by < Rails 2.2.2
8
+
9
+ # Undo changes to RAILS_ENV
10
+ silence_warnings {RAILS_ENV = ENV['RAILS_ENV']}
11
+
12
+ # Run the migrations
13
+ ActiveRecord::Migrator.migrate("#{Rails.root}/db/migrate")
14
+
15
+ # Set default fixture loading properties
16
+ Test::Unit::TestCase.class_eval do
17
+ self.use_transactional_fixtures = true
18
+ self.use_instantiated_fixtures = false
19
+ self.fixture_path = "#{File.dirname(__FILE__)}/fixtures"
20
+ end
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: skozlov-netzke-core
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sergei Kozlov
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-27 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Build ExtJS/Rails widgets with minimum effort
17
+ email: sergei@writelesscode.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - CHANGELOG
24
+ - lib/app/controllers/netzke_controller.rb
25
+ - lib/app/models/netzke_layout.rb
26
+ - lib/app/models/netzke_preference.rb
27
+ - lib/netzke/base.rb
28
+ - lib/netzke/controller_extensions.rb
29
+ - lib/netzke/core_ext.rb
30
+ - lib/netzke/js_class_builder.rb
31
+ - lib/netzke-core.rb
32
+ - lib/vendor/facets/hash/recursive_merge.rb
33
+ - LICENSE
34
+ - README.markdown
35
+ - tasks/netzke_core_tasks.rake
36
+ files:
37
+ - CHANGELOG
38
+ - generators/netzke_core/netzke_core_generator.rb
39
+ - generators/netzke_core/templates/create_netzke_layouts.rb
40
+ - generators/netzke_core/templates/create_netzke_preferences.rb
41
+ - generators/netzke_core/templates/netzke.html.erb
42
+ - generators/netzke_core/USAGE
43
+ - init.rb
44
+ - install.rb
45
+ - javascripts/core.js
46
+ - lib/app/controllers/netzke_controller.rb
47
+ - lib/app/models/netzke_layout.rb
48
+ - lib/app/models/netzke_preference.rb
49
+ - lib/netzke/base.rb
50
+ - lib/netzke/controller_extensions.rb
51
+ - lib/netzke/core_ext.rb
52
+ - lib/netzke/js_class_builder.rb
53
+ - lib/netzke-core.rb
54
+ - lib/vendor/facets/hash/recursive_merge.rb
55
+ - LICENSE
56
+ - Manifest
57
+ - Rakefile
58
+ - README.markdown
59
+ - tasks/netzke_core_tasks.rake
60
+ - test/app_root/app/controllers/application.rb
61
+ - test/app_root/config/boot.rb
62
+ - test/app_root/config/database.yml
63
+ - test/app_root/config/environment.rb
64
+ - test/app_root/config/environments/in_memory.rb
65
+ - test/app_root/config/environments/mysql.rb
66
+ - test/app_root/config/environments/postgresql.rb
67
+ - test/app_root/config/environments/sqlite.rb
68
+ - test/app_root/config/environments/sqlite3.rb
69
+ - test/app_root/config/routes.rb
70
+ - test/app_root/script/console
71
+ - test/core_ext_test.rb
72
+ - test/netzke_core_test.rb
73
+ - test/test_helper.rb
74
+ - uninstall.rb
75
+ - netzke-core.gemspec
76
+ has_rdoc: true
77
+ homepage: http://writelesscode.com
78
+ post_install_message:
79
+ rdoc_options:
80
+ - --line-numbers
81
+ - --inline-source
82
+ - --title
83
+ - Netzke-core
84
+ - --main
85
+ - README.markdown
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ version: "0"
93
+ version:
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: "1.2"
99
+ version:
100
+ requirements: []
101
+
102
+ rubyforge_project: netzke-core
103
+ rubygems_version: 1.2.0
104
+ signing_key:
105
+ specification_version: 2
106
+ summary: Build ExtJS/Rails widgets with minimum effort
107
+ test_files:
108
+ - test/core_ext_test.rb
109
+ - test/netzke_core_test.rb