magic_reveal 2.6.1.2 → 2.6.1.4
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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Guardfile +19 -4
- data/README.md +3 -1
- data/bin/magic-reveal +1 -1
- data/lib/magic_reveal.rb +1 -1
- data/lib/magic_reveal/app.rb +1 -1
- data/lib/magic_reveal/cli.rb +25 -22
- data/lib/magic_reveal/cli/options.rb +4 -3
- data/lib/magic_reveal/conductor.rb +7 -7
- data/lib/magic_reveal/creator.rb +2 -1
- data/lib/magic_reveal/identifier.rb +2 -1
- data/lib/magic_reveal/index_libber.rb +30 -21
- data/lib/magic_reveal/project_config.rb +15 -14
- data/lib/magic_reveal/reveal_js_fetcher.rb +3 -2
- data/lib/magic_reveal/slide_renderer.rb +24 -28
- data/lib/magic_reveal/version.rb +2 -1
- data/magic-reveal.gemspec +25 -29
- data/spec/integration/renderer_spec.rb +29 -0
- data/spec/magic_reveal/cli/options_spec.rb +2 -2
- data/spec/magic_reveal/cli_spec.rb +22 -24
- data/spec/magic_reveal/conductor_spec.rb +8 -8
- data/spec/magic_reveal/creator_spec.rb +22 -17
- data/spec/magic_reveal/identifier_spec.rb +18 -18
- data/spec/magic_reveal/index_libber_spec.rb +21 -21
- data/spec/magic_reveal/project_config_spec.rb +12 -12
- data/spec/magic_reveal/reveal_js_fetcher_spec.rb +10 -10
- data/spec/magic_reveal/slide_renderer_spec.rb +57 -51
- data/spec/spec_helper.rb +14 -12
- metadata +23 -49
@@ -4,6 +4,7 @@ require 'cgi'
|
|
4
4
|
require 'magic_reveal/version'
|
5
5
|
|
6
6
|
module MagicReveal
|
7
|
+
# Custom renderer so the HTML is the right format for Reveal.js.
|
7
8
|
class SlideRenderer < Redcarpet::Render::HTML
|
8
9
|
include Redcarpet::Render::SmartyPants
|
9
10
|
attr_accessor :has_shown_slides
|
@@ -14,11 +15,11 @@ module MagicReveal
|
|
14
15
|
|
15
16
|
def self.markdown_renderer
|
16
17
|
Redcarpet::Markdown.new(
|
17
|
-
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
21
|
-
:
|
18
|
+
new,
|
19
|
+
space_after_headers: true,
|
20
|
+
filter_html: true,
|
21
|
+
fenced_code_blocks: true,
|
22
|
+
no_intra_emphasis: true
|
22
23
|
)
|
23
24
|
end
|
24
25
|
|
@@ -31,39 +32,34 @@ module MagicReveal
|
|
31
32
|
has_shown_slides ? '</section>' : ''
|
32
33
|
end
|
33
34
|
|
34
|
-
def header(text, header_level)
|
35
|
-
|
36
|
-
|
37
|
-
output << "</section>"
|
38
|
-
else
|
35
|
+
def header(text, header_level, anchor = nil)
|
36
|
+
[].tap do |output|
|
37
|
+
output << '</section>' if has_shown_slides
|
39
38
|
@has_shown_slides = true
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
39
|
+
anchor_html = anchor ? " id=\"#{anchor}\"" : ''
|
40
|
+
|
41
|
+
output << '<section>'
|
42
|
+
output << "<h#{header_level}#{anchor_html}>#{text}</h#{header_level}>"
|
43
|
+
end.join("\n")
|
44
44
|
end
|
45
45
|
|
46
46
|
def prepare_code(code)
|
47
|
-
if code =~
|
48
|
-
File.read
|
47
|
+
if code =~ /\A\s*@@source\s*=\s*(?<filename>.*)\s*\Z/
|
48
|
+
File.read Regexp.last_match[:filename]
|
49
49
|
else
|
50
|
-
code.sub(
|
50
|
+
code.sub(/\A\s*/, '').sub(/\s*\Z/, '')
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
54
54
|
def block_code(code, language)
|
55
|
-
|
56
|
-
|
57
|
-
output <<
|
58
|
-
else
|
59
|
-
output << "<pre>"
|
60
|
-
end
|
61
|
-
output << "<code>"
|
55
|
+
[].tap do |output|
|
56
|
+
output << (language ? "<pre class=\"#{language}\">" : '<pre>')
|
57
|
+
output << '<code>'
|
62
58
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
59
|
+
output << CGI.escapeHTML(prepare_code code)
|
60
|
+
output << '</code>'
|
61
|
+
output << '</pre>'
|
62
|
+
end.join('')
|
67
63
|
end
|
68
64
|
end
|
69
65
|
end
|
data/lib/magic_reveal/version.rb
CHANGED
data/magic-reveal.gemspec
CHANGED
@@ -4,45 +4,41 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
require 'magic_reveal/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
7
|
+
spec.name = 'magic_reveal'
|
8
8
|
spec.version = MagicReveal::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
9
|
+
spec.authors = ['Christian Höltje']
|
10
|
+
spec.email = ['docwhat@gerf.org']
|
11
11
|
spec.description = %q{Create presentations with markdown and ease!}
|
12
12
|
spec.summary = %q{Create presentations using markdown and reveal.js}
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
13
|
+
spec.homepage = 'https://github.com/docwhat/magic_reveal'
|
14
|
+
spec.license = 'MIT'
|
15
15
|
|
16
|
-
spec.files = `git ls-files`.split(
|
16
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
17
17
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.required_ruby_version = '>= 1.9.
|
21
|
+
spec.required_ruby_version = '>= 1.9.3'
|
22
22
|
|
23
|
-
spec.add_dependency
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency
|
26
|
-
spec.add_dependency
|
27
|
-
spec.add_dependency
|
28
|
-
spec.add_dependency
|
23
|
+
spec.add_dependency 'sinatra', '~> 1.4'
|
24
|
+
spec.add_dependency 'redcarpet', '~> 3.0'
|
25
|
+
spec.add_dependency 'archive-zip', '~> 0.6'
|
26
|
+
spec.add_dependency 'sys-admin', '~> 1.6'
|
27
|
+
spec.add_dependency 'nokogiri', '~> 1.5'
|
28
|
+
spec.add_dependency 'highline', '~> 1.6'
|
29
29
|
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
32
|
-
spec.add_development_dependency
|
33
|
-
spec.add_development_dependency
|
34
|
-
spec.add_development_dependency
|
35
|
-
spec.add_development_dependency
|
36
|
-
spec.add_development_dependency
|
37
|
-
spec.add_development_dependency
|
38
|
-
spec.add_development_dependency
|
30
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
31
|
+
spec.add_development_dependency 'rake'
|
32
|
+
spec.add_development_dependency 'guard', '~> 2.4'
|
33
|
+
spec.add_development_dependency 'guard-rspec', '~> 4.2'
|
34
|
+
spec.add_development_dependency 'guard-rubocop', '~> 1.0'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 2.14'
|
36
|
+
spec.add_development_dependency 'faker'
|
37
|
+
spec.add_development_dependency 'coveralls', '~> 0.7'
|
38
|
+
spec.add_development_dependency 'better_errors'
|
39
|
+
spec.add_development_dependency 'binding_of_caller'
|
39
40
|
|
40
|
-
#For
|
41
|
-
spec.add_development_dependency 'rb-inotify'
|
42
|
-
spec.add_development_dependency 'rb-fsevent'
|
43
|
-
spec.add_development_dependency 'rb-fchange'
|
44
|
-
|
45
|
-
#For displaying notices
|
41
|
+
# For displaying notices
|
46
42
|
spec.add_development_dependency 'terminal-notifier-guard'
|
47
43
|
spec.add_development_dependency 'libnotify'
|
48
44
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'magic_reveal/slide_renderer'
|
3
|
+
|
4
|
+
describe 'integration of SlideRenderer with Redcarpet' do
|
5
|
+
let(:markdown) do
|
6
|
+
return <<-EOF
|
7
|
+
# Title
|
8
|
+
|
9
|
+
Some text `here`.
|
10
|
+
|
11
|
+
## Second level header
|
12
|
+
|
13
|
+
```
|
14
|
+
Fenced code goes here.
|
15
|
+
```
|
16
|
+
|
17
|
+
### Third level header
|
18
|
+
|
19
|
+
Indented code goes here.
|
20
|
+
|
21
|
+
EOF
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'does not have errors' do
|
25
|
+
renderer = MagicReveal::SlideRenderer.markdown_renderer
|
26
|
+
expect(renderer.render markdown)
|
27
|
+
.to be_kind_of(String)
|
28
|
+
end
|
29
|
+
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'magic_reveal/cli/options'
|
3
3
|
|
4
4
|
describe MagicReveal::Cli::Options do
|
5
|
-
describe
|
5
|
+
describe '.parse' do
|
6
6
|
before { subject.parse args }
|
7
7
|
|
8
8
|
context "given 'new <project>'" do
|
@@ -43,7 +43,7 @@ describe MagicReveal::Cli::Options do
|
|
43
43
|
its(:command) { should be(:help) }
|
44
44
|
end
|
45
45
|
|
46
|
-
context
|
46
|
+
context 'given no arguments' do
|
47
47
|
let(:args) { [] }
|
48
48
|
|
49
49
|
its(:command) { should be(:help) }
|
@@ -1,35 +1,34 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'magic_reveal/cli'
|
3
3
|
|
4
|
-
|
5
4
|
describe MagicReveal::Cli do
|
6
|
-
describe
|
7
|
-
context
|
5
|
+
describe '.run' do
|
6
|
+
context 'with a null options' do
|
8
7
|
let(:options) { double(MagicReveal::Cli::Options).as_null_object }
|
9
|
-
let(:args) { double(
|
8
|
+
let(:args) { double('ARGV') }
|
10
9
|
before do
|
11
10
|
subject.stub(:show_help)
|
12
11
|
subject.stub(:avenge_programmer)
|
13
12
|
subject.stub(:options).and_return(options)
|
14
13
|
end
|
15
14
|
|
16
|
-
context
|
15
|
+
context 'command=nil' do
|
17
16
|
before { subject.run args }
|
18
17
|
|
19
|
-
it
|
18
|
+
it 'parses the args' do
|
20
19
|
expect(options).to have_received(:parse).with(args)
|
21
20
|
end
|
22
21
|
|
23
|
-
it
|
22
|
+
it 'fetches the command' do
|
24
23
|
expect(options).to have_received(:command)
|
25
24
|
end
|
26
25
|
|
27
|
-
it
|
26
|
+
it 'avenges the programmer' do
|
28
27
|
expect(subject).to have_received(:avenge_programmer)
|
29
28
|
end
|
30
29
|
end
|
31
30
|
|
32
|
-
context
|
31
|
+
context 'command=new' do
|
33
32
|
let(:creator) { double(MagicReveal::Creator).as_null_object }
|
34
33
|
before do
|
35
34
|
subject.creator = creator
|
@@ -37,19 +36,19 @@ describe MagicReveal::Cli do
|
|
37
36
|
subject.run args
|
38
37
|
end
|
39
38
|
|
40
|
-
it
|
39
|
+
it 'fetches the project' do
|
41
40
|
expect(options).to have_received(:project)
|
42
41
|
end
|
43
42
|
|
44
|
-
it
|
45
|
-
expect(creator)
|
46
|
-
to have_received(:create_project)
|
47
|
-
with(options.project)
|
43
|
+
it 'creates the project' do
|
44
|
+
expect(creator)
|
45
|
+
.to have_received(:create_project)
|
46
|
+
.with(options.project)
|
48
47
|
end
|
49
48
|
end
|
50
49
|
|
51
|
-
context
|
52
|
-
it
|
50
|
+
context 'command=help' do
|
51
|
+
it 'shows help' do
|
53
52
|
subject.stub(:show_help)
|
54
53
|
subject.should_receive(:show_help).and_return(nil)
|
55
54
|
options.stub(:command).and_return(:help)
|
@@ -57,8 +56,8 @@ describe MagicReveal::Cli do
|
|
57
56
|
end
|
58
57
|
end
|
59
58
|
|
60
|
-
context
|
61
|
-
it
|
59
|
+
context 'command=start' do
|
60
|
+
it 'starts the server' do
|
62
61
|
subject.stub(:start_server)
|
63
62
|
subject.should_receive(:start_server).and_return(nil)
|
64
63
|
options.stub(:command).and_return(:start)
|
@@ -66,8 +65,8 @@ describe MagicReveal::Cli do
|
|
66
65
|
end
|
67
66
|
end
|
68
67
|
|
69
|
-
context
|
70
|
-
it
|
68
|
+
context 'command=static' do
|
69
|
+
it 'creates a static file' do
|
71
70
|
subject.stub(:create_static)
|
72
71
|
subject.should_receive(:create_static).and_return(nil)
|
73
72
|
options.stub(:command).and_return(:static)
|
@@ -77,17 +76,16 @@ describe MagicReveal::Cli do
|
|
77
76
|
end
|
78
77
|
end
|
79
78
|
|
80
|
-
describe
|
81
|
-
it
|
79
|
+
describe '.creator' do
|
80
|
+
it 'sends new to creator' do
|
82
81
|
MagicReveal::Creator.should_receive(:new).with(Dir.getwd)
|
83
82
|
subject.creator
|
84
83
|
end
|
85
84
|
end
|
86
85
|
|
87
|
-
describe
|
86
|
+
describe '.options' do
|
88
87
|
it "responds to 'parse'" do
|
89
88
|
subject.options.should respond_to(:parse)
|
90
89
|
end
|
91
90
|
end
|
92
|
-
|
93
91
|
end
|
@@ -13,29 +13,29 @@ describe MagicReveal::Conductor do
|
|
13
13
|
|
14
14
|
its(:url) { should be_kind_of(URI) }
|
15
15
|
|
16
|
-
describe
|
17
|
-
it
|
18
|
-
subject.url =
|
16
|
+
describe '.fetch' do
|
17
|
+
it 'should save a file' do
|
18
|
+
subject.url = 'http://google.com/'
|
19
19
|
save_file = @tmpdir + 'index.html'
|
20
20
|
subject.fetch save_file
|
21
21
|
save_file.should exist
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
describe
|
25
|
+
describe '.unpack' do
|
26
26
|
let(:unpack_dir) { @tmpdir + "unpack-#{rand 200}" }
|
27
|
-
context
|
27
|
+
context 'given a zipfile' do
|
28
28
|
let(:zipfile) { EXAMPLE_DATA + 'wrapped.zip' }
|
29
29
|
|
30
|
-
it
|
30
|
+
it 'unpacks and unwraps the zipfile' do
|
31
31
|
subject.unpack zipfile, unpack_dir
|
32
32
|
(unpack_dir + 'testfile.md').should exist
|
33
33
|
end
|
34
34
|
|
35
|
-
context
|
35
|
+
context 'and the unpack directory exists already' do
|
36
36
|
before { unpack_dir.mkdir }
|
37
37
|
|
38
|
-
it
|
38
|
+
it 'should raise an error' do
|
39
39
|
expect { subject.unpack zipfile, unpack_dir }.to raise_error(MagicReveal::Error)
|
40
40
|
end
|
41
41
|
end
|
@@ -9,39 +9,44 @@ describe MagicReveal::Creator do
|
|
9
9
|
subject.reveal_js_fetcher = fetcher
|
10
10
|
end
|
11
11
|
|
12
|
-
context
|
12
|
+
context 'with a temporary directory' do
|
13
13
|
subject { described_class.new @tmpdir }
|
14
|
-
around
|
14
|
+
around do |example|
|
15
|
+
Dir.mktmpdir do |dir|
|
16
|
+
@tmpdir = Pathname.new dir
|
17
|
+
example.run
|
18
|
+
end
|
19
|
+
end
|
15
20
|
|
16
21
|
its(:directory) { should eq(@tmpdir) }
|
17
22
|
|
18
|
-
describe
|
23
|
+
describe 'create_project' do
|
19
24
|
let(:project) { "project#{rand 99}" }
|
20
25
|
before do
|
21
26
|
FileUtils.stub(:copy_file)
|
22
27
|
Pathname.any_instance.stub(:children).and_return([])
|
23
28
|
end
|
24
29
|
|
25
|
-
it
|
30
|
+
it 'makes the project directory' do
|
26
31
|
subject.create_project(project)
|
27
32
|
expect(@tmpdir + project).to be_directory
|
28
33
|
end
|
29
34
|
|
30
|
-
it
|
35
|
+
it 'fetches and saves reveal.js' do
|
31
36
|
subject.create_project(project)
|
32
|
-
expect(fetcher)
|
33
|
-
to have_received(:save_important_parts_to)
|
34
|
-
with(@tmpdir + project)
|
37
|
+
expect(fetcher)
|
38
|
+
.to have_received(:save_important_parts_to)
|
39
|
+
.with(@tmpdir + project)
|
35
40
|
end
|
36
41
|
|
37
|
-
it
|
42
|
+
it 'copies the template_slides' do
|
38
43
|
src = subject.template_slides
|
39
44
|
dst = @tmpdir + project + 'slides.md'
|
40
45
|
FileUtils.should_receive(:copy_file).with(src.to_s, dst.to_s)
|
41
46
|
subject.create_project(project)
|
42
47
|
end
|
43
48
|
|
44
|
-
it
|
49
|
+
it 'copies the template_config_ru' do
|
45
50
|
src = subject.template_config_ru
|
46
51
|
dst = @tmpdir + project + 'config.ru'
|
47
52
|
FileUtils.should_receive(:copy_file).with(src.to_s, dst.to_s)
|
@@ -49,23 +54,23 @@ describe MagicReveal::Creator do
|
|
49
54
|
end
|
50
55
|
end
|
51
56
|
|
52
|
-
describe
|
57
|
+
describe 'update_project' do
|
53
58
|
let(:project) { @tmpdir + "project#{rand 99}" }
|
54
59
|
|
55
|
-
it
|
60
|
+
it 'fetches and saves reveal.js' do
|
56
61
|
subject.update_project(project)
|
57
|
-
expect(fetcher)
|
58
|
-
to have_received(:save_important_parts_to)
|
59
|
-
with(project)
|
62
|
+
expect(fetcher)
|
63
|
+
.to have_received(:save_important_parts_to)
|
64
|
+
.with(project)
|
60
65
|
end
|
61
66
|
end
|
62
67
|
|
63
|
-
describe
|
68
|
+
describe '.template_slides' do
|
64
69
|
its(:template_slides) { should be_kind_of(Pathname) }
|
65
70
|
its(:template_slides) { should be_file }
|
66
71
|
end
|
67
72
|
|
68
|
-
describe
|
73
|
+
describe '.template_config_ru' do
|
69
74
|
its(:template_config_ru) { should be_kind_of(Pathname) }
|
70
75
|
its(:template_config_ru) { should be_file }
|
71
76
|
end
|
@@ -5,55 +5,55 @@ describe MagicReveal::Identifier do
|
|
5
5
|
subject { described_class.new sys_admin }
|
6
6
|
let(:sys_admin) { double(Sys::Admin).as_null_object }
|
7
7
|
|
8
|
-
describe
|
8
|
+
describe '.name' do
|
9
9
|
before do
|
10
10
|
sys_admin.stub(:respond_to?)
|
11
11
|
end
|
12
12
|
|
13
|
-
it
|
13
|
+
it 'gets the login' do
|
14
14
|
subject.name
|
15
15
|
expect(sys_admin).to have_received(:get_login)
|
16
16
|
end
|
17
17
|
|
18
|
-
it
|
18
|
+
it 'passes the login to get_user' do
|
19
19
|
subject.name
|
20
20
|
expect(sys_admin).to have_received(:get_user).with(sys_admin.get_login)
|
21
21
|
end
|
22
22
|
|
23
|
-
context
|
23
|
+
context 'the user has a full_name' do
|
24
24
|
let(:user) { double(Sys::Admin::User) }
|
25
25
|
before do
|
26
26
|
sys_admin.stub(:get_user).with(sys_admin.get_login).and_return(user)
|
27
27
|
sys_admin.stub(:respond_to?).with(:full_name).and_return(true)
|
28
28
|
end
|
29
29
|
|
30
|
-
it
|
31
|
-
name = double(
|
30
|
+
it 'returns the full_name' do
|
31
|
+
name = double('full_name')
|
32
32
|
user.should receive(:full_name).and_return(name)
|
33
33
|
expect(subject.name).to eq(name)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
context
|
37
|
+
context 'the user has a simple gecos' do
|
38
38
|
let(:user) { double(Sys::Admin::User) }
|
39
39
|
before do
|
40
40
|
sys_admin.stub(:get_user).with(sys_admin.get_login).and_return(user)
|
41
41
|
end
|
42
42
|
|
43
|
-
it
|
43
|
+
it 'returns the gecos' do
|
44
44
|
gecos = "Joe Cool #{rand 99}"
|
45
45
|
user.should receive(:gecos).and_return(gecos)
|
46
46
|
expect(subject.name).to eq(gecos)
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
context
|
50
|
+
context 'the user has a comma-delimited gecos' do
|
51
51
|
let(:user) { double(Sys::Admin::User) }
|
52
52
|
before do
|
53
53
|
sys_admin.stub(:get_user).with(sys_admin.get_login).and_return(user)
|
54
54
|
end
|
55
55
|
|
56
|
-
it
|
56
|
+
it 'returns the gecos' do
|
57
57
|
name = "Joe Cool #{rand 99}"
|
58
58
|
gecos = "#{name},White House,412 555-1212,"
|
59
59
|
user.should receive(:gecos).and_return(gecos)
|
@@ -61,35 +61,35 @@ describe MagicReveal::Identifier do
|
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
context
|
65
|
-
it
|
64
|
+
context 'the user has an empty comma-delimited gecos' do
|
65
|
+
it 'returns the gecos' do
|
66
66
|
login = "joecool#{rand 99}"
|
67
67
|
user = double(Sys::Admin::User)
|
68
68
|
|
69
69
|
sys_admin.stub(:get_login).and_return(login)
|
70
70
|
sys_admin.stub(:get_user).with(login).and_return(user)
|
71
71
|
|
72
|
-
user.should receive(:gecos).and_return(
|
72
|
+
user.should receive(:gecos).and_return(',,,')
|
73
73
|
expect(subject.name).to eq(login)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
context
|
78
|
-
it
|
77
|
+
context 'the user has an empty gecos' do
|
78
|
+
it 'returns the gecos' do
|
79
79
|
login = "joecool#{rand 99}"
|
80
80
|
user = double(Sys::Admin::User)
|
81
81
|
|
82
82
|
sys_admin.stub(:get_login).and_return(login)
|
83
83
|
sys_admin.stub(:get_user).with(login).and_return(user)
|
84
84
|
|
85
|
-
user.should receive(:gecos).and_return(
|
85
|
+
user.should receive(:gecos).and_return('')
|
86
86
|
expect(subject.name).to eq(login)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
90
90
|
|
91
|
-
describe
|
92
|
-
it
|
91
|
+
describe '#name (an alias)' do
|
92
|
+
it 'calls .name on an instance' do
|
93
93
|
instance = double(described_class).as_null_object
|
94
94
|
described_class.stub(:new).and_return(instance)
|
95
95
|
expect(described_class.name).to be(instance.name)
|