alx 0.0.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.
@@ -0,0 +1,48 @@
1
+ require_relative 'test_helper'
2
+ require 'test/unit'
3
+ require 'alx/list_handler'
4
+
5
+ class ListHandlerTest < Test::Unit::TestCase
6
+
7
+ def setup_dir( dir )
8
+ dir.entries << "first_file"
9
+ dir.entries << "almost_first_file"
10
+ dir.entries << "second_file"
11
+ end
12
+
13
+ def setup
14
+ @directory = 'something'
15
+ @dir_stub = DirStub.new
16
+ setup_dir( @dir_stub )
17
+ Dir.stubs( :open ).yields( @dir_stub )
18
+ @conf = Hash.new
19
+ @list_handler = Alx::ListHandler.new( @conf )
20
+ end
21
+
22
+ def teardown
23
+ Dir.unstub( :open )
24
+ end
25
+
26
+ def test_pattern_list
27
+ output = capture_stdout do
28
+ @conf[ :rest ] = 'first'
29
+ @list_handler.handle
30
+ end
31
+ output.string.should =~ /#{@dir_stub.entries[ 0 ].gsub( /_/, ' ' )}/
32
+ output.string.should =~ /#{@dir_stub.entries[ 1 ].gsub( /_/, ' ' )}/
33
+ output.string.should_not =~ /#{@dir_stub.entries[ 2 ].gsub( /_/, ' ' )}/
34
+ end
35
+
36
+ def test_list_all_if_pattern_is_empty
37
+ output = capture_stdout do
38
+ @conf[ :rest ] = ''
39
+ @list_handler.handle
40
+ end
41
+
42
+ @dir_stub.entries.each do | file |
43
+ output.string.should =~ /#{file.gsub( /_/, ' ' )}/
44
+ end
45
+ end
46
+
47
+ end
48
+
@@ -0,0 +1,41 @@
1
+ require_relative 'test_helper'
2
+ require 'test/unit'
3
+ require 'alx/renderer'
4
+ require 'stringio'
5
+
6
+ class RendererTest < Test::Unit::TestCase
7
+
8
+ BOOK_CONTENT = 'apple'
9
+ RENDERED_HTML = "<p>#{BOOK_CONTENT}</p>\n"
10
+
11
+ def setup
12
+ @conf = Hash.new
13
+ @renderer = Alx::Renderer.new( @conf )
14
+ @book = BookStub.new( BOOK_CONTENT )
15
+ end
16
+
17
+ def teardown
18
+ end
19
+
20
+ def test_html_renderer_is_called
21
+ @conf[ :html ] = true
22
+ @renderer.render( @book ).should == RENDERED_HTML
23
+ end
24
+
25
+ def test_html_renderer_is_not_called
26
+ @conf[ :html ] = false
27
+ @renderer.render( @book ).should == BOOK_CONTENT
28
+ end
29
+
30
+ def test_html_file_is_created
31
+ @conf[ :html ] = true
32
+ @renderer.render_to_file( @book ).should =~ /.*.html/
33
+ end
34
+
35
+ def test_markdown_file_is_created
36
+ @conf[ :html ] = false
37
+ @renderer.render_to_file( @book ).should =~ /.*.md/
38
+ end
39
+
40
+ end
41
+
@@ -0,0 +1,58 @@
1
+ require_relative 'test_helper'
2
+ require 'test/unit'
3
+ require 'alx/viewer'
4
+
5
+ class ViewerTest < Test::Unit::TestCase
6
+
7
+ def setup
8
+ @conf = Hash.new
9
+ @viewer = Alx::Viewer.new( @conf )
10
+ @text_in_file = "this is the file content"
11
+ @file_input = StringIO.new( @text_in_file )
12
+ File.stubs( :open ).yields( @file_input )
13
+ end
14
+
15
+ def teardown
16
+ File.unstub( :open )
17
+ end
18
+
19
+ def view
20
+ @viewer.view( '/tmp/some_file' )
21
+ end
22
+
23
+ def test_viewer_error
24
+ @conf[ :html ] = true
25
+ @conf[ :html_viewer ] = DUMMY_EXEC
26
+ lambda { view }.should raise_error
27
+ @conf[ :html ] = false
28
+ @conf[ :terminal_viewer ] = DUMMY_EXEC
29
+ lambda { view }.should raise_error
30
+ end
31
+
32
+ def test_viewer_returns_false
33
+ @conf[ :html ] = true
34
+ @conf[ :html_viewer ] = FALSE_EXEC
35
+ lambda { view }.should raise_error
36
+ @conf[ :html ] = false
37
+ @conf[ :terminal_viewer ] = FALSE_EXEC
38
+ lambda { view }.should raise_error
39
+ end
40
+
41
+ def test_viewer_success
42
+ @conf[ :html ] = true
43
+ @conf[ :html_viewer ] = TRUE_EXEC
44
+ lambda { view }.should_not raise_error
45
+ @conf[ :html ] = false
46
+ @conf[ :terminal_viewer ] = TRUE_EXEC
47
+ lambda { view }.should_not raise_error
48
+ end
49
+
50
+ def test_viewer_is_stdout
51
+ @conf[ :stdout ] = true
52
+ stub_in_and_out() do
53
+ lambda { view }.should_not raise_error
54
+ end.should== @text_in_file
55
+ end
56
+
57
+ end
58
+
@@ -0,0 +1,69 @@
1
+ require 'simplecov'
2
+ require 'mocha'
3
+ require 'stringio'
4
+
5
+ DUMMY_EXEC = '111somthingsomethingdarkside'
6
+ FALSE_EXEC = '/bin/false'
7
+ TRUE_EXEC = '/bin/true'
8
+
9
+ class HandlerStub
10
+ attr_reader :handle_called
11
+
12
+ def initialize( configuration )
13
+ @handle_called = false
14
+ end
15
+
16
+ def handle
17
+ @handle_called = true
18
+ end
19
+ end
20
+
21
+
22
+ class BookStub
23
+ attr_accessor :content
24
+
25
+ def initialize( content )
26
+ @content = content
27
+ end
28
+
29
+ end
30
+
31
+
32
+ class DirStub
33
+ attr_accessor :entries
34
+
35
+ def initialize
36
+ @entries = []
37
+ end
38
+
39
+ end
40
+
41
+
42
+ def stub_in_and_out( input_text = "" )
43
+ standard_input = StringIO.new( input_text )
44
+ standard_output = StringIO.new
45
+ $stdin = standard_input
46
+ $stdout = standard_output
47
+
48
+ yield
49
+
50
+ $stdin = STDIN
51
+ $stdout = STDOUT
52
+
53
+ standard_output.string.chomp
54
+ end
55
+
56
+
57
+ module Kernel
58
+
59
+ def capture_stdout
60
+ out = StringIO.new
61
+ $stdout = out
62
+ yield
63
+ return out
64
+ ensure
65
+ $stdout = STDOUT
66
+ end
67
+
68
+ end
69
+
metadata ADDED
@@ -0,0 +1,168 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alx
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Peter Hajdu
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: redcarpet
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: cucumber
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: simplecov
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: Command line tool to manage your markdown documents. ( beta )
79
+ email:
80
+ - peter.ferenc.hajdu@gmail.com
81
+ executables:
82
+ - alx
83
+ extensions: []
84
+ extra_rdoc_files: []
85
+ files:
86
+ - .gitignore
87
+ - .simplecov
88
+ - COPYING
89
+ - Gemfile
90
+ - LICENSE
91
+ - README.md
92
+ - Rakefile
93
+ - alx.gemspec
94
+ - bin/alx
95
+ - features/add_books.feature
96
+ - features/create_default_configuration.feature
97
+ - features/give_meaningful_help.feature
98
+ - features/remove_book.feature
99
+ - features/step_definitions/alx_base_steps.rb
100
+ - features/step_definitions/alx_configuration_steps.rb
101
+ - features/step_definitions/alx_help_steps.rb
102
+ - features/support/alx_extensions.rb
103
+ - features/support/env.rb
104
+ - lib/alx/add_handler.rb
105
+ - lib/alx/book.rb
106
+ - lib/alx/configuration.rb
107
+ - lib/alx/controller.rb
108
+ - lib/alx/editor.rb
109
+ - lib/alx/executer.rb
110
+ - lib/alx/handler.rb
111
+ - lib/alx/help_handler.rb
112
+ - lib/alx/library.rb
113
+ - lib/alx/list_handler.rb
114
+ - lib/alx/remove_handler.rb
115
+ - lib/alx/renderer.rb
116
+ - lib/alx/show_handler.rb
117
+ - lib/alx/version.rb
118
+ - lib/alx/viewer.rb
119
+ - test/tc_book.rb
120
+ - test/tc_controller.rb
121
+ - test/tc_editor.rb
122
+ - test/tc_library.rb
123
+ - test/tc_list_handler.rb
124
+ - test/tc_renderer.rb
125
+ - test/tc_viewer.rb
126
+ - test/test_helper.rb
127
+ homepage: http://github.com/PeterHajdu/alx
128
+ licenses: []
129
+ post_install_message:
130
+ rdoc_options: []
131
+ require_paths:
132
+ - lib
133
+ required_ruby_version: !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ! '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ required_rubygems_version: !ruby/object:Gem::Requirement
140
+ none: false
141
+ requirements:
142
+ - - ! '>='
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ requirements: []
146
+ rubyforge_project:
147
+ rubygems_version: 1.8.23
148
+ signing_key:
149
+ specification_version: 3
150
+ summary: An easy to use command line text document manager. ( beta )
151
+ test_files:
152
+ - features/add_books.feature
153
+ - features/create_default_configuration.feature
154
+ - features/give_meaningful_help.feature
155
+ - features/remove_book.feature
156
+ - features/step_definitions/alx_base_steps.rb
157
+ - features/step_definitions/alx_configuration_steps.rb
158
+ - features/step_definitions/alx_help_steps.rb
159
+ - features/support/alx_extensions.rb
160
+ - features/support/env.rb
161
+ - test/tc_book.rb
162
+ - test/tc_controller.rb
163
+ - test/tc_editor.rb
164
+ - test/tc_library.rb
165
+ - test/tc_list_handler.rb
166
+ - test/tc_renderer.rb
167
+ - test/tc_viewer.rb
168
+ - test/test_helper.rb