chore: init commit

in worker.../repo/GITFOLDER.zip is the .git folder.
This commit is contained in:
2026-08-11 14:44:09 -04:00
parent 0012380fd3
commit 392781f7aa
781 changed files with 65944 additions and 0 deletions

View File

@@ -0,0 +1,91 @@
# frozen_string_literal: true
require "test_helper"
class AdminHelperTest < ActionView::TestCase
test "format_attribute formats boolean true" do
user = build(:admin)
result = format_attribute(user, :admin)
assert_match(/Yes/, result)
assert_match(/bg-green-100/, result)
end
test "format_attribute formats boolean false" do
user = build(:student)
result = format_attribute(user, :admin)
assert_match(/No/, result)
assert_match(/bg-gray-100/, result)
end
test "format_attribute formats date" do
date = Date.new(2025, 12, 22)
user = build(:student, created_at: date)
result = format_attribute(user, :created_at)
assert_equal "December 22, 2025", result
end
test "format_attribute formats nil value" do
user = build(:student, name: nil)
result = format_attribute(user, :name)
assert_match(/—/, result)
assert_match(/text-gray-400/, result)
end
test "format_attribute formats string" do
user = build(:student, email: "test@example.com")
result = format_attribute(user, :email)
assert_equal "test@example.com", result
end
test "boolean_badge renders yes badge" do
result = boolean_badge(true)
assert_match(/Yes/, result)
assert_match(/bg-green-100/, result)
assert_match(/text-green-800/, result)
end
test "boolean_badge renders no badge" do
result = boolean_badge(false)
assert_match(/No/, result)
assert_match(/bg-gray-100/, result)
assert_match(/text-gray-800/, result)
end
test "sort_icon returns up arrow for asc sort" do
params[:sort] = "name"
params[:direction] = "asc"
assert_equal "↑", sort_icon(:name)
end
test "sort_icon returns down arrow for desc sort" do
params[:sort] = "name"
params[:direction] = "desc"
assert_equal "↓", sort_icon(:name)
end
test "sort_icon returns both arrows for unsorted column" do
params[:sort] = "email"
assert_equal "⇅", sort_icon(:name)
end
# TODO: Fix sort_link routing issues in Admin - create separate ticket
# Error: No route matches {direction: "desc", sort: :name}
test "sort_link generates correct direction toggle" do
skip "Broken due to routing issues"
# params[:sort] = "name"
# params[:direction] = "asc"
# result = sort_link(:name, "Name")
# assert_match(/direction=desc/, result)
# assert_match(/Name/, result)
end
# TODO: Fix sort_link routing issues in Admin - create separate ticket
# Error: No route matches {direction: "asc", sort: :name}
test "sort_link defaults to asc for new sort" do
skip "Broken due to routing issues"
# params[:sort] = nil
# params[:direction] = nil
# result = sort_link(:name, "Name")
# assert_match(/direction=asc/, result)
end
end

View File

@@ -0,0 +1,81 @@
# frozen_string_literal: true
require "test_helper"
class ApplicationHelperTest < ActionView::TestCase
test "safe_url returns valid http URL" do
url = "http://example.com"
result = safe_url(url)
assert_equal url, result
end
test "safe_url returns valid https URL" do
url = "https://example.com"
result = safe_url(url)
assert_equal url, result
end
test "safe_url returns valid https URL with path and query" do
url = "https://example.com/path?query=value"
result = safe_url(url)
assert_equal url, result
end
test "safe_url returns nil for javascript URL" do
url = "javascript:alert('XSS')"
result = safe_url(url)
assert_nil result
end
test "safe_url returns nil for data URL" do
url = "data:text/html,<script>alert('XSS')</script>"
result = safe_url(url)
assert_nil result
end
test "safe_url returns nil for invalid URL" do
url = "not a valid url"
result = safe_url(url)
assert_nil result
end
test "safe_url returns nil for blank string" do
result = safe_url("")
assert_nil result
end
test "safe_url returns nil for nil" do
result = safe_url(nil)
assert_nil result
end
test "safe_url returns nil for ftp URL" do
url = "ftp://example.com"
result = safe_url(url)
assert_nil result
end
test "safe_url returns nil for file URL" do
url = "file:///etc/passwd"
result = safe_url(url)
assert_nil result
end
end

View File

@@ -0,0 +1,17 @@
# frozen_string_literal: true
def assert_permit(user, record, action)
msg = "User #{user.inspect} should be permitted to #{action} #{record}, but isn't permitted"
assert permit(user, record, action), msg
end
def refute_permit(user, record, action)
msg = "User #{user.inspect} should NOT be permitted to #{action} #{record}, but is permitted"
assert_not permit(user, record, action), msg
end
def permit(user, record, action)
test_name = self.class.ancestors.select { |a| a.to_s.match(/PolicyTest/) }.first
klass = test_name.to_s.gsub("Test", "")
klass.constantize.new(user, record).public_send("#{action}?")
end