Sha256: 4000053b52614ce4cd10e6eb5a2441a138b7e29e900324b7832ac17ccca0413e

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

require 'test_helper'

class ActiveRecordStoreTest < ActiveSupport::TestCase
  setup do
    Gretel.reset!
    Gretel::Trail.store = :db
    
    @links = [
      [:root, "Home", "/"],
      [:store, "Store <b>Test</b>".html_safe, "/store"],
      [:search, "Search", "/store/search?q=test"]
    ]
  end

  test "defaults" do
    assert_equal 1.day, Gretel::Trail::ActiveRecordStore.expires_in
  end

  test "encoding" do
    assert_equal "684c211441e72225cee89477a2d1f59e657c9e26",
                 Gretel::Trail.encode(@links.map { |key, text, url| Gretel::Link.new(key, text, url) })
  end

  test "decoding" do
    Gretel::Trail.encode(@links.map { |key, text, url| Gretel::Link.new(key, text, url) })
    decoded = Gretel::Trail.decode("684c211441e72225cee89477a2d1f59e657c9e26")
    assert_equal @links, decoded.map { |link| [link.key, link.text, link.url] }
    assert_equal [false, true, false], decoded.map { |link| link.text.html_safe? }
  end

  test "invalid trail" do
    assert_equal [], Gretel::Trail.decode("asdgasdg")
  end

  test "delete expired" do
    10.times { Gretel::Trail.encode([Gretel::Link.new(:test, SecureRandom.hex(20), "/test")]) }
    assert_equal 10, Gretel::Trail.count
    
    Gretel::Trail.delete_expired
    assert_equal 10, Gretel::Trail.count

    Timecop.travel(14.hours.from_now) do
      5.times { Gretel::Trail.encode([Gretel::Link.new(:test, SecureRandom.hex(20), "/test")]) }
      assert_equal 15, Gretel::Trail.count
    end

    Timecop.travel(25.hours.from_now) do
      Gretel::Trail.delete_expired
      assert_equal 5, Gretel::Trail.count
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gretel-3.0.0.beta4 test/trails/active_record_store_test.rb
gretel-3.0.0.beta3 test/trails/active_record_store_test.rb