trypost/tests/Unit
Paulo Castellano 15f87aebe4
Add social connect step to welcome before Stripe (#293)
* feat: add social connect step to welcome before Stripe checkout

Ask new owners to connect a network after referral source so we can track welcome.connect in PostHog and still let them continue to checkout without a connection.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Nest welcome connect copy under a connect array.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Require a connected social account before welcome checkout.

Skip is no longer allowed, and the welcome layout takes a Tailwind size so the connect grid can sit two rows of six.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Harden the welcome connect step after review.

Track connect only after Stripe creates a session, restore a missing workspace before showing networks, and cover the remaining checkout and analytics cases.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Refactor social account status handling across components

Updated the SocialAccountsGrid, NetworkConnectGrid, onboarding, and welcome connect components to utilize the new SocialAccountStatus enum for improved clarity and maintainability. This change replaces string literals for account statuses with the enum values, enhancing type safety and consistency throughout the application.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Refactor workspace resolution in WelcomeController and StoreWelcomeConnectRequest

Updated the WelcomeController and StoreWelcomeConnectRequest to directly access the user's current workspace, simplifying the code by removing the resolveCurrentWorkspace method. This change enhances readability and maintains functionality by ensuring the current workspace is correctly utilized in the connection process. Additionally, removed outdated test cases related to workspace restoration.

* Inline welcome connect PostHog platforms from the current workspace.

Drop the extra helper — the grid already loads accounts the same way as onboarding and accounts.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Inline Stripe checkout into the welcome connect store.

startCheckout was a one-caller wrapper; storeConnect now matches the other welcome steps.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Move welcome connect validation into the controller.

The FormRequest had no input to validate and duplicated step-gating. Require a connected account in storeConnect, and drop the dead owner abort plus the always-true PostHog connected flag.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Show welcome toasts and cover remaining connect cases.

Mount the app Toast host on WelcomeLayout so OAuth, Telegram, and disconnect feedback is visible. Add tests for stale goals, an empty workspace grid, accounts on another workspace, and skipped identify when Stripe fails.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Assume a welcome workspace, validate connect in the FormRequest, and add browser tests.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Rename WelcomeEvent::dashboardFunnel() to funnel().

Co-authored-by: Cursor <cursoragent@cursor.com>

* Identify connected platforms from the social account observer.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Queue connected-platform identify on the posthog queue.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Harden welcome connect: 404 without a workspace, and keep step redirects ahead of connect validation.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Identify connected platforms on workspace and account groups, and keep the account union on the owner.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Share hasCurrentGoals on User and keep Stripe checkout when PostHog capture fails.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Skip welcome connect validation when the controller would redirect the user away.

Co-authored-by: Cursor <cursoragent@cursor.com>

* Move current-goal membership onto the Goal enum.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-17 19:37:43 -03:00
..
Actions Make Stripe Checkout configurable via billing env knobs (#252) 2026-08-07 21:25:32 -03:00
Ai/Agents Add Ukrainian as a supported platform language (#219) 2026-08-05 19:45:30 -03:00
Automation test(automations): extract inline feed XML into shared fixtures 2026-06-16 11:06:46 -03:00
Broadcasting feat: workspace-scoped broadcast channel and post lifecycle events 2026-05-07 16:02:22 -03:00
DataTransferObjects test(tiktok): cover MediaItem dimensions and platform max-width helpers 2026-06-26 12:31:46 -03:00
Enums Add social connect step to welcome before Stripe (#293) 2026-08-17 19:37:43 -03:00
Events Activation checklist + MCP OAuth authorize UX (#239) (#250) 2026-08-07 20:34:43 -03:00
Exceptions/Social Resume in-flight Instagram and TikTok publishes without duplicates (#281) 2026-08-16 15:34:53 -03:00
Mail feat: proactive connection check for at-risk posts + SocialAccount name centralization (#256) 2026-08-09 11:10:39 -03:00
Models feat: fire signup/checkout PostHog events from the backend (#277) 2026-08-12 11:47:47 -03:00
Observers Activation checklist + MCP OAuth authorize UX (#239) (#250) 2026-08-07 20:34:43 -03:00
Pinterest fix: Pinterest video processing timeout — longer poll + retry (#246) 2026-08-06 20:49:37 -03:00
Policies Allow account owners to delete workspaces (#208) 2026-08-01 13:00:38 -04:00
PostTemplates refactor: reorganize settings UI, migrate post templates to a file-based registry, and remove legacy video generation features 2026-05-03 13:44:13 -03:00
Rules fix: guard ContentTypeMatchesPlatform against non-uuid social_account_id (#260) 2026-08-09 11:46:59 -03:00
Services Fix OpenRouter via laravel/ai default provider (revises #216) (#220) 2026-08-10 21:38:50 -03:00
Settings Add Ukrainian as a supported platform language (#219) 2026-08-05 19:45:30 -03:00
Social/Meta Fix Facebook Page connect pagination (#212) (#253) 2026-08-08 12:01:46 -03:00
Socialite refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
Support Resume in-flight Instagram and TikTok publishes without duplicates (#281) 2026-08-16 15:34:53 -03:00
TikTok Resume in-flight Instagram and TikTok publishes without duplicates (#281) 2026-08-16 15:34:53 -03:00
Traits fix: sanitize invalid UTF-8 bytes in uploaded filenames (#265) 2026-08-09 14:29:29 -03:00
AuthorizesMcpToolTest.php MCP: workspace settings, viewer read access, and token access (#241) 2026-08-06 09:54:51 -03:00
ExampleTest.php refactor: settings redesign, Spanish translations, language system, strict_types 2026-03-30 00:20:43 -03:00
HelpersTest.php fix(security): make SSRF private-network block configurable and guard the last user-URL fetches 2026-07-17 15:40:15 -03:00
MediaItemAltTextTest.php Extract alt-text truncation onto MediaItem and close test gaps 2026-07-11 10:34:57 -03:00
MediaPolymorphTest.php fix: persist morph map alias on AI-generated Media rows 2026-05-04 14:14:14 -03:00
MorphMapTest.php Register all models in the morph map + lock it with a test 2026-06-14 16:12:49 -03:00
PlatformAltTextTest.php Harden per-image alt text across publishers, validation, and attach paths 2026-07-16 13:55:33 -03:00
PostHogServiceTest.php feat: fire signup/checkout PostHog events from the backend (#277) 2026-08-12 11:47:47 -03:00
PostPlatformMetaRulesTest.php Add optional Pinterest pin title and destination link (#232) 2026-08-05 18:15:50 -03:00
PostPlatformTest.php feat: proactive connection check for at-risk posts + SocialAccount name centralization (#256) 2026-08-09 11:10:39 -03:00
PostsErrorsTranslationTest.php fix: Pinterest video processing timeout — longer poll + retry (#246) 2026-08-06 20:49:37 -03:00
RevokeAccessTokensTest.php Scope MCP OAuth tokens to user + workspace (#222) (#245) 2026-08-06 21:59:34 -03:00
TryPostServerTest.php MCP: workspace settings, viewer read access, and token access (#241) 2026-08-06 09:54:51 -03:00