diff --git a/lib/generator.rb b/lib/generator.rb index 9e18866..ec955ea 100644 --- a/lib/generator.rb +++ b/lib/generator.rb @@ -1,31 +1,19 @@ module Newsletter class Generator - def initialize(format) - @format = format - end - def render - <<~HTML + <<~HTMLORMARKDOWN #{header} #{body} - HTML + HTMLORMARKDOWN end def header - if @format == :html - '
body
' - elsif @format == :markdown - 'body' - end + raise NotImplementedError end end end diff --git a/lib/generators/html.rb b/lib/generators/html.rb new file mode 100644 index 0000000..e0b0e11 --- /dev/null +++ b/lib/generators/html.rb @@ -0,0 +1,13 @@ +module Newsletter + module Generators + class Html < Newsletter::Generator + def header + 'body
' + end + end + end +end diff --git a/lib/generators/markdown.rb b/lib/generators/markdown.rb new file mode 100644 index 0000000..73606b6 --- /dev/null +++ b/lib/generators/markdown.rb @@ -0,0 +1,13 @@ +module Newsletter + module Generators + class Markdown < Newsletter::Generator + def header + '# Header' + end + + def body + 'body' + end + end + end +end diff --git a/spec/anything_spec.rb b/spec/anything_spec.rb index cb7fe98..eaf3202 100644 --- a/spec/anything_spec.rb +++ b/spec/anything_spec.rb @@ -1,28 +1,40 @@ require 'spec_hepler' require_relative '../lib/generator' +require_relative '../lib/generators/html' +require_relative '../lib/generators/markdown' -describe Newsletter::Generator do - context 'when HTML' do - let(:newsletter) do - File.read( - File.expand_path('fixtures/newsletter.html', File.dirname(__FILE__)) - ) - end +module Newsletter + describe Generator do + context 'when HTML' do + let(:newsletter) do + File.read( + File.expand_path('fixtures/newsletter.html', File.dirname(__FILE__)) + ) + end - it 'generates HTML' do - expect(described_class.new(:html).render).to include(newsletter) + it 'generates HTML' do + expect(Generators::Html.new.render).to include(newsletter) + end end - end - context 'when markdown' do - let(:newsletter) do - File.read( - File.expand_path('fixtures/newsletter.markdown', File.dirname(__FILE__)) - ) + context 'when markdown' do + let(:newsletter) do + File.read( + File.expand_path('fixtures/newsletter.markdown', File.dirname(__FILE__)) + ) + end + + it 'generates markdown' do + expect(Newsletter::Generators::Markdown.new.render).to include(newsletter) + end end - it 'generates markdown' do - expect(described_class.new(:markdown).render).to include(newsletter) + context 'when we calling the base class' do + it 'Template method requires base class to ba abstract!!!' do + expect{ Generator.new.render }.to raise_error(NotImplementedError) + expect{ Generator.new.header }.to raise_error(NotImplementedError) + expect{ Generator.new.body }.to raise_error(NotImplementedError) + end end end end