add setup onboarding page, dashboard launch checklist, provider registry
- new /setup page with three-section onboarding (account, provider, payments) - dashboard launch checklist with progress bar, go-live, dismiss - provider registry on Provider module (single source of truth for metadata) - payments registry for Stripe - setup context made provider-agnostic (provider_connected, theme_customised, etc.) - admin provider pages now fully registry-driven (no hardcoded provider names) - auth flow: fresh installs redirect to /setup, signed_in_path respects setup state - removed old /admin/setup wizard - 840 tests, 0 failures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -10,12 +10,17 @@ defmodule Berrypod.SetupTest do
|
||||
status = Setup.setup_status()
|
||||
|
||||
refute status.admin_created
|
||||
refute status.printify_connected
|
||||
refute status.provider_connected
|
||||
assert is_nil(status.provider_type)
|
||||
refute status.products_synced
|
||||
assert status.product_count == 0
|
||||
refute status.stripe_connected
|
||||
refute status.setup_complete
|
||||
refute status.site_live
|
||||
refute status.can_go_live
|
||||
refute status.theme_customised
|
||||
refute status.has_orders
|
||||
refute status.checklist_dismissed
|
||||
end
|
||||
|
||||
test "detects admin created" do
|
||||
@@ -39,7 +44,7 @@ defmodule Berrypod.SetupTest do
|
||||
assert status.site_live
|
||||
end
|
||||
|
||||
test "detects printify connected with products" do
|
||||
test "detects provider connected with products" do
|
||||
{:ok, conn} =
|
||||
Products.create_provider_connection(%{
|
||||
name: "Test",
|
||||
@@ -48,7 +53,8 @@ defmodule Berrypod.SetupTest do
|
||||
})
|
||||
|
||||
status = Setup.setup_status()
|
||||
assert status.printify_connected
|
||||
assert status.provider_connected
|
||||
assert status.provider_type == "printify"
|
||||
refute status.products_synced
|
||||
assert status.product_count == 0
|
||||
|
||||
@@ -66,7 +72,24 @@ defmodule Berrypod.SetupTest do
|
||||
assert status.product_count == 1
|
||||
end
|
||||
|
||||
test "can_go_live requires printify, products, and stripe" do
|
||||
test "setup_complete requires admin, provider, and stripe" do
|
||||
user_fixture()
|
||||
|
||||
{:ok, _conn} =
|
||||
Products.create_provider_connection(%{
|
||||
name: "Test",
|
||||
provider_type: "printful",
|
||||
api_key: "test_api_key"
|
||||
})
|
||||
|
||||
refute Setup.setup_status().setup_complete
|
||||
|
||||
{:ok, _} = Settings.put_secret("stripe_api_key", "sk_test_abc123")
|
||||
|
||||
assert Setup.setup_status().setup_complete
|
||||
end
|
||||
|
||||
test "can_go_live requires provider, products, and stripe" do
|
||||
{:ok, conn} =
|
||||
Products.create_provider_connection(%{
|
||||
name: "Test",
|
||||
@@ -90,5 +113,13 @@ defmodule Berrypod.SetupTest do
|
||||
|
||||
assert Setup.setup_status().can_go_live
|
||||
end
|
||||
|
||||
test "detects theme customised" do
|
||||
refute Setup.setup_status().theme_customised
|
||||
|
||||
{:ok, _} = Settings.update_theme_settings(%{mood: "warm"})
|
||||
|
||||
assert Setup.setup_status().theme_customised
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user