BVB Source Codes

hologram Show block_code_renderer_spec.rb Source code

Return Download hologram: download block_code_renderer_spec.rb Source code - Download hologram Source code - Type:.rb
  1. require 'spec_helper'
  2. require 'hologram/block_code_renderer'
  3. require 'haml'
  4. require 'securerandom'
  5.  
  6. Hologram::CodeExampleRenderer.load_renderers_and_templates
  7.  
  8. describe Hologram::BlockCodeRenderer do
  9.   describe '#render' do
  10.     subject { Hologram::BlockCodeRenderer.new(code, markdown_language).render.strip }
  11.  
  12.     context 'expected language' do
  13.       context 'react' do
  14.         let(:language) { 'react' }
  15.         let(:code) { '<ReactExample property="value">Example</ReactExample>' }
  16.  
  17.         context 'when the language is a react_example' do
  18.           let(:markdown_language) { 'react_example' }
  19.           let(:div_id) { 'randomId' }
  20.  
  21.           before :each do
  22.             SecureRandom.stub('hex').and_return(div_id);
  23.           end
  24.  
  25.           it { is_expected.to eq [
  26.             "<div class=\"codeExample\">",
  27.             "  <div class=\"exampleOutput\">",
  28.             "    <div id=\"#{div_id}\"></div>",
  29.             "<script type=\"text/jsx\">",
  30.             "  React.render(",
  31.             "    <ReactExample property=\"value\">Example</ReactExample>,",
  32.             "    document.getElementById('#{div_id}')",
  33.             "  );",
  34.             "</script>",
  35.             "  </div>",
  36.             "  <div class=\"codeBlock\">",
  37.             "    <div class=\"highlight\">",
  38.             "      <pre><span class=\"nt\">&lt;ReactExample</span> <span class=\"na\">property=</span><span class=\"s\">\"value\"</span><span class=\"nt\">&gt;</span>Example<span class=\"nt\">&lt;/ReactExample&gt;</span></pre>",
  39.             "    </div>",
  40.             "  </div>",
  41.             "</div>"
  42.           ].join("\n") }
  43.         end
  44.       end
  45.  
  46.       context 'slim' do
  47.         let(:language) { 'slim' }
  48.         let(:code) { 'h1 Markup Example' }
  49.  
  50.         context 'when the language is a slim_example' do
  51.           let(:markdown_language) { 'slim_example' }
  52.  
  53.           it { is_expected.to eq [
  54.             "<div class=\"codeExample\">",
  55.             "  <div class=\"exampleOutput\">",
  56.             "    <h1>Markup Example</h1>",
  57.             "  </div>",
  58.             "  <div class=\"codeBlock\">",
  59.             "    <div class=\"highlight\">",
  60.             "      <pre><span class=\"nt\">h1</span><span class=\"w\"> </span>Markup<span class=\"w\"> </span>Example</pre>",
  61.             "    </div>",
  62.             "  </div>",
  63.             "</div>",
  64.           ].join("\n") }
  65.         end
  66.       end
  67.  
  68.       context 'haml' do
  69.         let(:language) { 'haml' }
  70.         let(:code) { '%h1 Example' }
  71.  
  72.         context 'when the language is a haml_example' do
  73.           let(:markdown_language) { 'haml_example' }
  74.  
  75.           it { is_expected.to eq [
  76.             "<div class=\"codeExample\">",
  77.             "  <div class=\"exampleOutput\">",
  78.             "    <h1>Example</h1>\n",
  79.             "  </div>",
  80.             "  <div class=\"codeBlock\">",
  81.             "    <div class=\"highlight\">",
  82.             "      <pre><span class=\"nt\">%h1</span> Example</pre>",
  83.             "    </div>",
  84.             "  </div>",
  85.             "</div>",
  86.           ].join("\n") }
  87.         end
  88.  
  89.         context 'when the language is a haml_example_table' do
  90.           let(:markdown_language) { 'haml_example_table' }
  91.           let(:code) { [
  92.             ".spinner-lg",
  93.             "  %i.fa.fa-spin",
  94.             "",
  95.             "%h1 Example"
  96.           ].join("\n") }
  97.  
  98.           it { is_expected.to eq [
  99.             "<div class=\"codeTable\">",
  100.             "  <table>",
  101.             "    <tbody>",
  102.             "      ",
  103.             "        <tr>",
  104.             "          <th>",
  105.             "            <div class=\"exampleOutput\">",
  106.             "              <div class='spinner-lg'>",
  107.             "  <i class='fa fa-spin'></i>",
  108.             "</div>",
  109.             "",
  110.             "            </div>",
  111.             "          </th>",
  112.             "          <td>",
  113.             "            <div class=\"codeBlock\">",
  114.             "              <div class=\"highlight\">",
  115.             "                <pre><span class=\"nc\">.spinner-lg</span>",
  116.             "  <span class=\"nt\">%i</span><span class=\"nc\">.fa.fa-spin</span></pre>",
  117.             "              </div>",
  118.             "            </div>",
  119.             "          </td>",
  120.             "        </tr>",
  121.             "      ",
  122.             "        <tr>",
  123.             "          <th>",
  124.             "            <div class=\"exampleOutput\">",
  125.             "              <h1>Example</h1>",
  126.             "",
  127.             "            </div>",
  128.             "          </th>",
  129.             "          <td>",
  130.             "            <div class=\"codeBlock\">",
  131.             "              <div class=\"highlight\">",
  132.             "                <pre><span class=\"nt\">%h1</span> Example</pre>",
  133.             "              </div>",
  134.             "            </div>",
  135.             "          </td>",
  136.             "        </tr>",
  137.             "      ",
  138.             "    </tbody>",
  139.             "  </table>",
  140.             "</div>"
  141.           ].join("\n") }
  142.         end
  143.       end
  144.  
  145.       context 'html' do
  146.         let(:language) { 'html' }
  147.         let(:code) { '<h2></h2>' }
  148.         let(:formatted_code) { 'formatted h2' }
  149.         context 'when the language is html_example' do
  150.           let(:markdown_language) { 'html_example' }
  151.  
  152.           it { is_expected.to eq [
  153.             "<div class=\"codeExample\">",
  154.             "  <div class=\"exampleOutput\">",
  155.             "    <h2></h2>",
  156.             "  </div>",
  157.             "  <div class=\"codeBlock\">",
  158.             "    <div class=\"highlight\">",
  159.             "      <pre><span class=\"nt\">&lt;h2&gt;&lt;/h2&gt;</span></pre>",
  160.             "    </div>",
  161.             "  </div>",
  162.             "</div>",
  163.           ].join("\n") }
  164.         end
  165.  
  166.         context 'when the language is a html_example_table' do
  167.           let(:markdown_language) { 'html_example_table' }
  168.           let(:code) { [
  169.             "<div class='spinner-lg'></div>",
  170.             "",
  171.             "<h1>Example</h1>"
  172.           ].join("\n") }
  173.  
  174.           it { is_expected.to eq [
  175.             "<div class=\"codeTable\">",
  176.             "  <table>",
  177.             "    <tbody>",
  178.             "      ",
  179.             "        <tr>",
  180.             "          <th>",
  181.             "            <div class=\"exampleOutput\">",
  182.             "              <div class='spinner-lg'></div>",
  183.             "            </div>",
  184.             "          </th>",
  185.             "          <td>",
  186.             "            <div class=\"codeBlock\">",
  187.             "              <div class=\"highlight\">",
  188.             "                <pre><span class=\"nt\">&lt;div</span> <span class=\"na\">class=</span><span class=\"s\">'spinner-lg'</span><span class=\"nt\">&gt;&lt;/div&gt;</span></pre>",
  189.             "              </div>",
  190.             "            </div>",
  191.             "          </td>",
  192.             "        </tr>",
  193.             "      ",
  194.             "        <tr>",
  195.             "          <th>",
  196.             "            <div class=\"exampleOutput\">",
  197.             "              <h1>Example</h1>",
  198.             "            </div>",
  199.             "          </th>",
  200.             "          <td>",
  201.             "            <div class=\"codeBlock\">",
  202.             "              <div class=\"highlight\">",
  203.             "                <pre><span class=\"nt\">&lt;h1&gt;</span>Example<span class=\"nt\">&lt;/h1&gt;</span></pre>",
  204.             "              </div>",
  205.             "            </div>",
  206.             "          </td>",
  207.             "        </tr>",
  208.             "      ",
  209.             "    </tbody>",
  210.             "  </table>",
  211.             "</div>"
  212.           ].join("\n") }
  213.         end
  214.       end
  215.  
  216.       context 'js_example' do
  217.         let(:language) { 'js' }
  218.         let(:markdown_language) { 'js_example' }
  219.         let(:code) { '$(document).ready(function() {});' }
  220.  
  221.         it "inserts the code into the docs so that it will run and make the example work" do
  222.           expect(subject).to include "<script>$(document).ready(function() {});</script>"
  223.         end
  224.  
  225.         it { is_expected.to include [
  226.           "<div class=\"codeBlock jsExample\">",
  227.           "  <div class=\"highlight\">",
  228.           "    <pre><span class=\"nx\">$</span><span class=\"p\">(</span><span class=\"nb\">document</span><span class=\"p\">).</span><span class=\"nx\">ready</span><span class=\"p\">(</span><span class=\"kd\">function</span><span class=\"p\">()</span> <span class=\"p\">{});</span></pre>",
  229.           "  </div>",
  230.           "</div>",
  231.         ].join("\n") }
  232.       end
  233.  
  234.       context 'jsx_example' do
  235.         let(:language) { 'jsx' }
  236.         let(:markdown_language) { 'jsx_example' }
  237.         let(:code) { '$(document).ready(function () { React.render(<div className="foo"></div>) });' }
  238.  
  239.         it "inserts the code into the docs so that it will run and make the example work" do
  240.           expect(subject).to include "<script type='text/jsx'>$(document).ready(function () { React.render(<div className=\"foo\"></div>) });</script>"
  241.         end
  242.  
  243.         it { is_expected.to include [
  244.           "<div class=\"codeBlock jsExample\">",
  245.           "  <div class=\"highlight\">",
  246.           "    <pre>$(document).ready(function () { React.render(<span class=\"nt\">&lt;div</span> <span class=\"na\">className=</span><span class=\"s\">\"foo\"</span><span class=\"nt\">&gt;&lt;/div&gt;</span>) });</pre>",
  247.           "  </div>",
  248.           "</div>",
  249.         ].join("\n") }
  250.       end
  251.     end
  252.  
  253.     context 'unexpected language' do
  254.       let(:markdown_language) { 'fortran' }
  255.       let(:code) { 'goto 12' }
  256.  
  257.       it { is_expected.to eq [
  258.         "<div class=\"codeBlock\">",
  259.         "  <div class=\"highlight\">",
  260.         "    <pre>goto 12</pre>",
  261.         "  </div>",
  262.         "</div>",
  263.       ].join("\n") }
  264.     end
  265.  
  266.     context 'no language' do
  267.       let(:markdown_language) { nil }
  268.       let(:code) { 'unknown code' }
  269.  
  270.       it { is_expected.to eq [
  271.         "<div class=\"codeBlock\">",
  272.         "  <div class=\"highlight\">",
  273.         "    <pre>unknown code</pre>",
  274.         "  </div>",
  275.         "</div>",
  276.       ].join("\n") }
  277.     end
  278.   end
  279. end
  280.  
downloadblock_code_renderer_spec.rb Source code - Download hologram Source code
Related Source Codes/Software:
www.html5rocks.com - ....a top-notch resource for web developer 2017-05-12
MTStatusBarOverlay - A custom iOS status bar overlay seen in Apps like ... 2017-05-12
blueprint - Reverse engineer server configuration ... 2017-05-12
PullToRefresh - A simple iPhone TableViewController for adding the... 2017-05-12
mrjob - Run MapReduce jobs on Hadoop or Amazon Web Service... 2017-05-11
isso - a Disqus alternative https:... 2017-05-12
python3-cookbook - "The Python Cookbook" 3 rd Edition Translatio 2017-05-12
TSA-Travel-Sentry-master-keys - 3D reproduction of TSA Master key 2017-05-12
fatfree - A powerful yet easy-to-use PHP micro-framework des... 2017-05-13
rolify - Role management library with the resource scoping 2017-05-13
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top