diff --git a/formular.gemspec b/formular.gemspec index 054eb81..0053cf6 100644 --- a/formular.gemspec +++ b/formular.gemspec @@ -26,6 +26,8 @@ Gem::Specification.new do |spec| spec.add_development_dependency "trailblazer-cells" spec.add_development_dependency "cells-slim" spec.add_development_dependency "cells-erb" + spec.add_development_dependency "cells-haml" + spec.add_development_dependency "actionview" spec.add_development_dependency "minitest" spec.add_development_dependency "minitest-line" end diff --git a/lib/formular/helper.rb b/lib/formular/helper.rb index 5e552f0..bcddc99 100644 --- a/lib/formular/helper.rb +++ b/lib/formular/helper.rb @@ -1,5 +1,5 @@ module Formular - # TODO: indirectly tested in erb_test and slim_test. Should probably test directly + # TODO: indirectly tested in erb_test, haml_test and slim_test. Should probably test directly module Helper def form(model, url, **options, &block) form_options = options diff --git a/test/fixtures/comment/haml/show/view/show.haml b/test/fixtures/comment/haml/show/view/show.haml new file mode 100644 index 0000000..750f486 --- /dev/null +++ b/test/fixtures/comment/haml/show/view/show.haml @@ -0,0 +1,17 @@ +%div New += form(model, "/posts", path_prefix: :comment) do |f| + - capture_haml do + = f.input :id + = f.textarea :body + = f.checkbox :public, value: true + = f.collection :replies do |reply| + - capture_haml do + = reply.input :content + = f.nested :owner do |owner| + - capture_haml do + = owner.input :name + = owner.input :email + = f.input :uuid + = f.submit value: "Submit" + + diff --git a/test/haml_test.rb b/test/haml_test.rb new file mode 100644 index 0000000..c56bb30 --- /dev/null +++ b/test/haml_test.rb @@ -0,0 +1,49 @@ +require 'test_helper' +require 'formular/helper' +require 'trailblazer/cell' +require 'cell/haml' + +class Comment::Haml + class Show < Trailblazer::Cell + include Cell::Haml + include Formular::Helper + + self.view_paths = ['test/fixtures'] + + def show + render view: :show + end + + end +end + +class HamlTest < Minitest::Spec + describe 'valid, initial rendering' do + let(:model) { Comment.new(1, 'Nice!', [Reply.new(1, 'some exciting words'), Reply.new], Owner.new(1, 'Joe Blog', 'joe@somewhere.com'), '0x', true) } + + it do + Comment::Haml::Show.new(model).().must_equal %(