Module: Clapton::TestHelper::Base

Included in:
Minitest, RSpec
Defined in:
lib/clapton/test_helper/base.rb

Instance Method Summary collapse

Instance Method Details

#pageObject



24
25
26
# File 'lib/clapton/test_helper/base.rb', line 24

def page
  @page
end

#render_component(component, params) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/clapton/test_helper/base.rb', line 6

def render_component(component, params)
  js = File.read(File.join(__dir__, "..", "javascripts", "dist", "components-for-test.js"))
  js += File.read(File.join(__dir__, "..", "javascripts", "dist", "c-for-test.js"))
  Dir.glob(Rails.root.join("app", "components", "**", "*.rb")).each do |file|
    code = File.read(file)
    js += Ruby2JS.convert(code, preset: true)
    js += "\n"
  end
  js = js.sub("const Clapton = {
    Div, Component, Text, Input, Button, BlockQuote, Code, Element, Emphasis, Form, Heading, Image, Link, List, ListItem, OrderedList, Paragraph, Quote, Select, Span, Embed, Bold, TextArea
};", "const Clapton = {
    Div, Text, Input, Button, BlockQuote, Code, Element, Emphasis, Form, Heading, Image, Link, List, ListItem, OrderedList, Paragraph, Quote, Select, Span, Embed, Bold, TextArea
};")
  context = ExecJS.compile(js)
  html = context.eval("new #{component.name.camelize}(#{params.to_json}).renderWrapper")
  @page = Capybara.string(html)
end