Sha256: eaec90713d6d62f6fafb1559a0eac4e3078bafd55fbf337b9d36d2df45aae4df

Contents?: true

Size: 1.9 KB

Versions: 1

Compression:

Stored size: 1.9 KB

Contents

require "spec_helper"

class OneboxEngineExample
  include Onebox::Engine

  def data
    { foo: raw[:key], url: @url }
  end

  def raw
    { key: "value" }
  end

  def template
    %|<div class="onebox"><a href="{{url}}"></a></div>|
  end
end

describe Onebox::Engine do
  describe "#to_html" do
    it "returns the onebox wrapper" do
      html = OneboxEngineExample.new("foo").to_html
      expect(html).to include(%|class="onebox"|)
    end

    it "doesn't allow XSS injection" do
      html = OneboxEngineExample.new(%|http://foo.com" onscript="alert('foo')|).to_html
      expect(html).not_to include(%|onscript="alert('foo')|)
    end
  end

  describe "#record" do
    class OneboxEngineBar
      include Onebox::Engine

      def data
        "new content"
      end
    end

    it "returns cached value for given url if its url is already in cache" do
      cache = { "http://example.com" => "old content" }
      result = OneboxEngineBar.new("http://example.com", cache).send(:record)
      expect(result).to eq("old content")
    end

    it "stores cache value for given url if cache key doesn't exist" do
      cache = { "http://example.com1" => "old content" }
      result = OneboxEngineBar.new("http://example.com", cache).send(:record)
      expect(result).to eq("new content")
    end
  end

  describe ".===" do
    it "returns true if argument matches the matcher" do
      class OneboxEngineFoo
        include Onebox::Engine
        @@matcher = /example/
      end
      result = OneboxEngineFoo === "http://www.example.com/product/5?var=foo&bar=5"
      expect(result).to eq(true)
    end
  end

  describe ".matches" do
    it "sets @@matcher to a regular expression" do
      class OneboxEngineFar
        include Onebox::Engine

        matches do
          find "foo.com"
        end
      end
      regex = OneboxEngineFar.class_variable_get(:@@matcher)
      expect(regex).to eq(/(?:foo\.com)/i)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
onebox-1.0.0 spec/lib/onebox/engine_spec.rb