radiant-help-extension 1.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 (37) hide show
  1. data/HELP_developer.rdoc +92 -0
  2. data/README.md +35 -0
  3. data/Rakefile +109 -0
  4. data/TODO +6 -0
  5. data/app/controllers/admin/help_controller.rb +59 -0
  6. data/app/helpers/admin/help_helper.rb +36 -0
  7. data/app/models/help_doc.rb +42 -0
  8. data/app/views/admin/help/_admin_index.html.haml +11 -0
  9. data/app/views/admin/help/_designer_index.html.haml +20 -0
  10. data/app/views/admin/help/_docs_introduction.html.haml +2 -0
  11. data/app/views/admin/help/_editing.html.haml +64 -0
  12. data/app/views/admin/help/_extension_docs_list.html.haml +9 -0
  13. data/app/views/admin/help/_organizing.html.haml +7 -0
  14. data/app/views/admin/help/_other_index.html.haml +2 -0
  15. data/app/views/admin/help/_regions.html.haml +34 -0
  16. data/app/views/admin/help/_scripts.js.erb +14 -0
  17. data/app/views/admin/help/_styles.html.haml +128 -0
  18. data/app/views/admin/help/_tag_reference.html.haml +6 -0
  19. data/app/views/admin/help/developing.html.haml +19 -0
  20. data/app/views/admin/help/extension_doc.html.haml +16 -0
  21. data/app/views/admin/help/index.html.haml +16 -0
  22. data/app/views/admin/help/role.html.haml +12 -0
  23. data/config/initializers/radiant_config.rb +3 -0
  24. data/config/locales/en.yml +3 -0
  25. data/config/routes.rb +8 -0
  26. data/cucumber.yml +1 -0
  27. data/features/support/env.rb +11 -0
  28. data/features/support/paths.rb +22 -0
  29. data/help_extension.rb +86 -0
  30. data/lib/radiant-help-extension.rb +8 -0
  31. data/lib/tasks/help_extension_tasks.rake +29 -0
  32. data/radiant-help-extension.gemspec +29 -0
  33. data/spec/controllers/admin/help_controller_spec.rb +110 -0
  34. data/spec/models/help_doc_spec.rb +111 -0
  35. data/spec/spec.opts +6 -0
  36. data/spec/spec_helper.rb +36 -0
  37. metadata +87 -0
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "radiant-help-extension"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "radiant-help-extension"
7
+ s.version = RadiantHelpExtension::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = RadiantHelpExtension::AUTHORS
10
+ s.email = RadiantHelpExtension::EMAIL
11
+ s.homepage = RadiantHelpExtension::URL
12
+ s.summary = RadiantHelpExtension::SUMMARY
13
+ s.description = RadiantHelpExtension::DESCRIPTION
14
+
15
+ # Define gem dependencies here.
16
+ # Don't include a dependency on radiant itself: it causes problems when radiant is in vendor/radiant.
17
+ # s.add_dependency "something", "~> 1.0.0"
18
+ # s.add_dependency "radiant-some-extension", "~> 1.0.0"
19
+
20
+ ignores = if File.exist?('.gitignore')
21
+ File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
22
+ else
23
+ []
24
+ end
25
+ s.files = Dir['**/*'] - ignores
26
+ s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
27
+ # s.executables = Dir['bin/*'] - ignores
28
+ s.require_paths = ["lib"]
29
+ end
@@ -0,0 +1,110 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe Admin::HelpController do
4
+ # use Radiant datasets
5
+ dataset :users
6
+
7
+ before(:each) do
8
+ login_as :existing
9
+ end
10
+
11
+ describe "calling index with GET" do
12
+ it "should render the index template" do
13
+ get :index
14
+ response.should render_template('admin/help/index')
15
+ end
16
+
17
+ it "should assign HelpDocs for all users" do
18
+ @doc = "/path/to/doc/HELP.rdoc"
19
+ HelpDoc.stub!(:find_for).with(:all).and_return([@doc])
20
+ get :index
21
+ assigns[:docs].should == [@doc]
22
+ end
23
+
24
+ it "should set the role to 'all' and assign it to the view" do
25
+ get :index
26
+ assigns[:role].should == 'all'
27
+ end
28
+
29
+ it "should get the cms_name from Radiant::Config and assign it to the view" do
30
+ Radiant::Config.stub!(:[],'admin.title').and_return('Test CMS')
31
+ get :index
32
+ assigns[:cms_name].should == 'Test CMS'
33
+ end
34
+
35
+ it "should find all TextFilters and assign them to the view" do
36
+ TextFilter.stub!(:descendants).and_return([MarkdownFilter, TextileFilter])
37
+ get :index
38
+ assigns[:filters].should == [MarkdownFilter, TextileFilter]
39
+ end
40
+
41
+ it "should find all Layouts and assign them to the view" do
42
+ @layout1 = mock_model(Layout)
43
+ Layout.stub!(:find).with(:all).and_return([@layout1])
44
+ get :index
45
+ assigns[:layouts].should == [@layout1]
46
+ end
47
+
48
+ it "should find the first FileNotFoundPage and assign it to the view" do
49
+ @page404 = mock_model(Page, :class_name => 'FileNotFoundPage')
50
+ Page.should_receive(:find).with(:first,{:conditions => {:class_name => 'FileNotFoundPage'}}).and_return(@page404)
51
+ get :index
52
+ assigns[:file_not_found_page].should == @page404
53
+ end
54
+ end
55
+
56
+ describe "calling extension_doc with GET" do
57
+ it "should load the role from the params and assign it to the view" do
58
+ get :extension_doc, :extension_name => 'help', :role => 'developer'
59
+ assigns[:role].should == 'developer'
60
+ end
61
+
62
+ it "should set the role to 'all' if none is present in the params and assign it to the view" do
63
+ @test_path = '/path'
64
+ HelpDoc.stub!(:find_for).and_return([@test_path])
65
+ File.stub!(:read).and_return('') # can't read a non-existant path
66
+ get :extension_doc, :extension_name => 'help'
67
+ assigns[:role].should == 'all'
68
+ end
69
+
70
+ it "should find all HelpDocs for the given role and assign them to the view" do
71
+ @doc1 = "/path/to/test1/HELP_admin.rdoc"
72
+ @doc2 = "/path/to/test2/HELP_admin.rdoc"
73
+ File.stub!(:read).and_return('') # can't read a non-existant path
74
+ HelpDoc.should_receive(:find_for).with("admin").and_return([@doc1,@doc2])
75
+ HelpDoc.stub!(:find_for).with("admin","test1").and_return([@doc1])
76
+ get :extension_doc, :extension_name => 'test1', :role => 'admin'
77
+ assigns[:docs].should == [@doc1,@doc2]
78
+ end
79
+
80
+ it "should get the doc_name from the URL extension_name and assign it to the view" do
81
+ get :extension_doc, :extension_name => 'help', :role => 'developer'
82
+ assigns[:doc_name].should == 'Help'
83
+ end
84
+
85
+ it "should find the HelpDoc for the given role and extension_name" do
86
+ @doc1 = "/path/to/test1/HELP_developer.rdoc"
87
+ @doc2 = "/path/to/test2/HELP_developer.rdoc"
88
+ File.stub!(:read).and_return('') # can't read a non-existant path
89
+ HelpDoc.stub!(:find_for).with("developer").and_return([@doc1,@doc2])
90
+ HelpDoc.should_receive(:find_for).with("developer","test1").and_return([@doc1])
91
+ get :extension_doc, :extension_name => 'test1', :role => 'developer'
92
+ assigns[:doc_path].should == @doc1
93
+ end
94
+ end
95
+
96
+ describe "calling role with GET" do
97
+ it "should find the HelpDocs for the given role and assign them to the view" do
98
+ @doc1 = "/path/to/test1/HELP_admin.rdoc"
99
+ @doc2 = "/path/to/test2/HELP_admin.rdoc"
100
+ HelpDoc.should_receive(:find_for).with("admin").and_return([@doc1,@doc2])
101
+ get :role, :role => 'admin'
102
+ assigns[:docs].should == [@doc1,@doc2]
103
+ end
104
+
105
+ it "should redirect to the help index if given no role" do
106
+ get :role
107
+ response.should redirect_to(:action => 'index')
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,111 @@
1
+ require File.dirname(__FILE__) + '/../spec_helper'
2
+
3
+ describe HelpDoc, "given existing extension docs" do
4
+
5
+ before(:all) do
6
+ @test_ext_name = "help_rspec_test#{rand(1000)}"
7
+ @test_dir = "#{RAILS_ROOT}/vendor/extensions/#{@test_ext_name}"
8
+ FileUtils.mkdir(@test_dir)
9
+ File.open("#{@test_dir}/HELP", 'wb') {|f| f.write('help for all') }
10
+ File.open("#{@test_dir}/HELP_developer.rdoc", 'wb') {|f| f.write('== Testing
11
+ help for developers in rdoc
12
+ ') }
13
+ File.open("#{@test_dir}/HELP_admin.markdown", 'wb') {|f| f.write('Test
14
+ ----
15
+ help for admins in **markdown**
16
+ ') }
17
+ File.open("#{@test_dir}/HELP_imaginary.md", 'wb') {|f| f.write('## Test
18
+ help for non-existent role in **markdown**
19
+ ') }
20
+ File.open("#{@test_dir}/HELP_other.textile", 'wb') {|f| f.write('help for _another_ non-existent role in *textile*
21
+ ') }
22
+ end
23
+
24
+ after(:all) do
25
+ FileUtils.remove_dir(@test_dir)
26
+ end
27
+
28
+ describe "calling find_for" do
29
+
30
+ it "should fail to find extension docs with no given role type" do
31
+ lambda { HelpDoc.find_for() }.should raise_error(ArgumentError)
32
+ end
33
+
34
+ it "should find for all users extension docs named 'HELP' with an optional file extension" do
35
+ lambda do
36
+ HelpDoc.find_for(:all).each do |doc|
37
+ raise Exception unless /HELP(\.[\w]+)?$/.match(doc)
38
+ end
39
+ end.should_not raise_error(Exception)
40
+ HelpDoc.find_for(:all).size.should > 0
41
+ end
42
+
43
+ it "should find extension docs for developers named 'HELP_developer' and end with an optional file extension" do
44
+ lambda do
45
+ HelpDoc.find_for(:developer).each do |doc|
46
+ raise Exception unless /HELP_developer/.match(doc)
47
+ end
48
+ end.should_not raise_error(Exception)
49
+ HelpDoc.find_for(:developer).size.should > 0
50
+ end
51
+
52
+ it "should find extension docs for admins named 'HELP_admin' and end with an optional file extension" do
53
+ lambda do
54
+ HelpDoc.find_for(:admin).each do |doc|
55
+ raise Exception unless /HELP_admin(\.[\w]+)?$/.match(doc)
56
+ end
57
+ end.should_not raise_error(Exception)
58
+ HelpDoc.find_for(:admin).size.should > 0
59
+ end
60
+
61
+ it "should find only the given extension's docs when given an extension name" do
62
+ HelpDoc.find_for(:all, @test_ext_name).size.should == 1
63
+ end
64
+
65
+ end
66
+
67
+ describe "calling formatted_contents_from" do
68
+
69
+ it "should return formatted contents of a given extension doc in RDoc formatting by default" do
70
+ test_doc = HelpDoc.find_for(:all, @test_ext_name).first
71
+ HelpDoc.formatted_contents_from(test_doc).should == "<p>\nhelp for all\n</p>\n"
72
+ end
73
+
74
+ it "should return RDoc formatted contents of a given extension doc ending in '.rdoc'" do
75
+ test_doc = HelpDoc.find_for(:developer, @test_ext_name).first
76
+ HelpDoc.formatted_contents_from(test_doc).should == "<h2>Testing</h2>\n<p>\nhelp for developers in rdoc\n</p>\n"
77
+ end
78
+
79
+ it "should return Markdown formatted contents of a given extension doc ending in '.markdown'" do
80
+ test_doc = HelpDoc.find_for(:admin, @test_ext_name).first
81
+ HelpDoc.formatted_contents_from(test_doc).should == "<h2>Test</h2>\n<p>help for admins in <strong>markdown</strong></p>\n"
82
+ end
83
+
84
+ it "should return Markdown formatted contents of a given extension doc ending in '.md'" do
85
+ test_doc = HelpDoc.find_for(:imaginary, @test_ext_name).first
86
+ HelpDoc.formatted_contents_from(test_doc).should == "<h2>Test</h2>\n<p>help for non-existent role in <strong>markdown</strong></p>\n"
87
+ end
88
+
89
+ it "should return Textile formatted contents of a given extension doc ending in '.textile'" do
90
+ test_doc = HelpDoc.find_for(:other, @test_ext_name).first
91
+ HelpDoc.formatted_contents_from(test_doc).should == "<p>help for <em>another</em> non-existent role in <strong>textile</strong></p>"
92
+ end
93
+
94
+ end
95
+
96
+ it "should call parsed_rdoc and return HTML from RDoc formatted text" do
97
+ test_doc = HelpDoc.find_for(:developer, @test_ext_name).first
98
+ HelpDoc.parsed_rdoc(test_doc).should == "<h2>Testing</h2>\n<p>\nhelp for developers in rdoc\n</p>\n"
99
+ end
100
+
101
+ it "should call parsed_markdown and return HTML from Markdown formatted text" do
102
+ test_doc = HelpDoc.find_for(:admin, @test_ext_name).first
103
+ HelpDoc.parsed_markdown(test_doc).should == "<h2>Test</h2>\n<p>help for admins in <strong>markdown</strong></p>\n"
104
+ end
105
+
106
+ it "should call parsed_textile and return HTML from Textile formatted text" do
107
+ test_doc = HelpDoc.find_for(:other, @test_ext_name).first
108
+ HelpDoc.parsed_textile(test_doc).should == "<p>help for <em>another</em> non-existent role in <strong>textile</strong></p>"
109
+ end
110
+
111
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ progress
4
+ --loadby
5
+ mtime
6
+ --reverse
@@ -0,0 +1,36 @@
1
+ unless defined? RADIANT_ROOT
2
+ ENV["RAILS_ENV"] = "test"
3
+ case
4
+ when ENV["RADIANT_ENV_FILE"]
5
+ require ENV["RADIANT_ENV_FILE"]
6
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
7
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
8
+ else
9
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
10
+ end
11
+ end
12
+ require "#{RADIANT_ROOT}/spec/spec_helper"
13
+
14
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
15
+
16
+ if File.directory?(File.dirname(__FILE__) + "/matchers")
17
+ Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
18
+ end
19
+
20
+ Spec::Runner.configure do |config|
21
+ # config.use_transactional_fixtures = true
22
+ # config.use_instantiated_fixtures = false
23
+ # config.fixture_path = RAILS_ROOT + '/spec/fixtures'
24
+
25
+ # You can declare fixtures for each behaviour like this:
26
+ # describe "...." do
27
+ # fixtures :table_a, :table_b
28
+ #
29
+ # Alternatively, if you prefer to declare them only once, you can
30
+ # do so here, like so ...
31
+ #
32
+ # config.global_fixtures = :table_a, :table_b
33
+ #
34
+ # If you declare global fixtures, be aware that they will be declared
35
+ # for all of your examples, even those that don't use them.
36
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: radiant-help-extension
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Jim Gay
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-03-02 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Help Documentation for Radiant CMS!
15
+ email:
16
+ - jim@saturnflyer.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - app/controllers/admin/help_controller.rb
22
+ - app/helpers/admin/help_helper.rb
23
+ - app/models/help_doc.rb
24
+ - app/views/admin/help/_admin_index.html.haml
25
+ - app/views/admin/help/_designer_index.html.haml
26
+ - app/views/admin/help/_docs_introduction.html.haml
27
+ - app/views/admin/help/_editing.html.haml
28
+ - app/views/admin/help/_extension_docs_list.html.haml
29
+ - app/views/admin/help/_organizing.html.haml
30
+ - app/views/admin/help/_other_index.html.haml
31
+ - app/views/admin/help/_regions.html.haml
32
+ - app/views/admin/help/_scripts.js.erb
33
+ - app/views/admin/help/_styles.html.haml
34
+ - app/views/admin/help/_tag_reference.html.haml
35
+ - app/views/admin/help/developing.html.haml
36
+ - app/views/admin/help/extension_doc.html.haml
37
+ - app/views/admin/help/index.html.haml
38
+ - app/views/admin/help/role.html.haml
39
+ - config/initializers/radiant_config.rb
40
+ - config/locales/en.yml
41
+ - config/routes.rb
42
+ - cucumber.yml
43
+ - features/support/env.rb
44
+ - features/support/paths.rb
45
+ - HELP_developer.rdoc
46
+ - help_extension.rb
47
+ - lib/radiant-help-extension.rb
48
+ - lib/tasks/help_extension_tasks.rake
49
+ - radiant-help-extension.gemspec
50
+ - Rakefile
51
+ - README.md
52
+ - spec/controllers/admin/help_controller_spec.rb
53
+ - spec/models/help_doc_spec.rb
54
+ - spec/spec.opts
55
+ - spec/spec_helper.rb
56
+ - TODO
57
+ homepage: https://github.com/saturnflyer/radiant-help-extension
58
+ licenses: []
59
+ post_install_message:
60
+ rdoc_options: []
61
+ require_paths:
62
+ - lib
63
+ required_ruby_version: !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 1.8.11
78
+ signing_key:
79
+ specification_version: 3
80
+ summary: Help for Radiant CMS
81
+ test_files:
82
+ - spec/controllers/admin/help_controller_spec.rb
83
+ - spec/models/help_doc_spec.rb
84
+ - spec/spec.opts
85
+ - spec/spec_helper.rb
86
+ - features/support/env.rb
87
+ - features/support/paths.rb