Hello world

First open source release of Campfire 🎉
This commit is contained in:
Kevin McConnell
2025-08-15 11:02:42 +01:00
commit df76a227dc
664 changed files with 36235 additions and 0 deletions
@@ -0,0 +1,26 @@
require "test_helper"
class Users::AvatarsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in :david
end
test "show initials" do
get user_avatar_url(users(:kevin).avatar_token)
assert_select "text", text: "K"
end
test "show image" do
users(:kevin).update! avatar: fixture_file_upload("moon.jpg", "image/jpeg")
get user_avatar_url(users(:kevin).avatar_token)
assert_response :success
assert_equal "image/webp", @response.content_type
end
test "show image with invalid token responds 404" do
get user_avatar_url("not-a-valid-token")
assert_response :not_found
end
end
@@ -0,0 +1,28 @@
require "test_helper"
class Users::ProfilesControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in :david
end
test "show" do
get user_profile_url
assert_response :success
end
test "update" do
put user_profile_url, params: { user: { name: "John Doe", bio: "Acrobat" } }
assert_redirected_to user_profile_url
assert_equal "John Doe", users(:david).reload.name
assert_equal "Acrobat", users(:david).bio
assert_equal "david@37signals.com", users(:david).email_address
end
test "updates are limited to the current user" do
put user_profile_url(users(:jason)), params: { user: { name: "John Doe" } }
assert_equal "Jason", users(:jason).reload.name
end
end
@@ -0,0 +1,38 @@
require "test_helper"
class Users::PushSubscriptionsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in :david
end
test "create new push subscription" do
subscription_params = { "endpoint" => "https://apple", "p256dh_key" => "123", "auth_key" => "456" }
post user_push_subscriptions_url,
params: { push_subscription: subscription_params }, headers: { "HTTP_USER_AGENT" => "Mozilla/5.0" }
assert_response :ok
assert_equal subscription_params, users(:david).push_subscriptions.last.attributes.slice("endpoint", "p256dh_key", "auth_key")
assert_equal "Mozilla/5.0", users(:david).push_subscriptions.last.user_agent
end
test "touch existing subscription" do
assert_no_difference -> { users(:david).push_subscriptions.count } do
assert_changes -> { push_subscriptions(:david_chrome).reload.updated_at } do
post user_push_subscriptions_url(params: {
push_subscription: push_subscriptions(:david_chrome).attributes.slice("endpoint", "p256dh_key", "auth_key")
})
end
end
assert_response :ok
end
test "destroy a push subscription via dev mode" do
assert_difference -> { Push::Subscription.count }, -1 do
delete user_push_subscription_url(push_subscriptions(:david_chrome))
assert_redirected_to user_push_subscriptions_url
end
end
end
@@ -0,0 +1,30 @@
require "test_helper"
class Users::SidebarsControllerTest < ActionDispatch::IntegrationTest
setup do
sign_in :david
end
test "show" do
get user_sidebar_url
users(:david).rooms.opens.each do |room|
assert_match /#{room.name}/, @response.body
end
end
test "unread directs" do
rooms(:david_and_jason).messages.create! client_message_id: 999, body: "Hello", creator: users(:jason)
get user_sidebar_url
assert_select ".unread", count: users(:david).memberships.select { |m| m.room.direct? && m.unread? }.count
end
test "unread other" do
rooms(:watercooler).messages.create! client_message_id: 999, body: "Hello", creator: users(:jason)
get user_sidebar_url
assert_select ".unread", count: users(:david).memberships.reject { |m| m.room.direct? || !m.unread? }.count
end
end