Prohlížeč zdrojového kódu
spec/services/example_registry_spec.rb
require "rails_helper"
RSpec.describe ExampleRegistry do
# Tests use the real app/examples directory which has sorting_algorithms
describe ".all" do
it "returns an array of ExampleEntry objects" do
entries = ExampleRegistry.all
expect(entries).to all(be_a(ExampleEntry))
end
it "includes the sorting_algorithms example" do
slugs = ExampleRegistry.all.map(&:slug)
expect(slugs).to include("sorting_algorithms")
end
it "returns entries sorted by position" do
entries = ExampleRegistry.all
positions = entries.map(&:position)
expect(positions).to eq(positions.sort)
end
end
describe ".find_by_slug" do
it "finds an example by slug" do
entry = ExampleRegistry.find_by_slug("sorting_algorithms")
expect(entry).to be_a(ExampleEntry)
expect(entry.title).to eq("Řadící algoritmy")
end
it "returns nil for unknown slug" do
expect(ExampleRegistry.find_by_slug("nonexistent")).to be_nil
end
end
describe ".filter_by_tag" do
it "filters examples by tag" do
entries = ExampleRegistry.filter_by_tag("algoritmy")
expect(entries.map(&:slug)).to include("sorting_algorithms")
end
it "returns empty array for unknown tag" do
expect(ExampleRegistry.filter_by_tag("nonexistent")).to be_empty
end
end
describe ".tags" do
it "returns unique sorted tags" do
tags = ExampleRegistry.tags
expect(tags).to eq(tags.sort)
expect(tags).to eq(tags.uniq)
end
end
describe ".reload!" do
it "rebuilds the instance" do
old_instance = ExampleRegistry.instance
ExampleRegistry.reload!
expect(ExampleRegistry.instance).not_to equal(old_instance)
end
end
end