11import { RenderResult , render , waitFor } from "@testing-library/react" ;
22import { EnvironmentContext } from "~/pages/apps/[id]/environments/Environment.context" ;
3+ import { MemoryRouter } from "react-router" ;
34import mockApp from "~/testing/data/mock_app" ;
45import mockEnvironments from "~/testing/data/mock_environments" ;
56import { mockFetchDomains } from "~/testing/nocks/nock_domains" ;
@@ -18,6 +19,7 @@ jest.mock("recharts", () => ({
1819
1920interface WrapperProps {
2021 hasDomain ?: boolean ;
22+ selectedDomainName ?: string ;
2123}
2224
2325describe ( "~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx" , ( ) => {
@@ -26,7 +28,10 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
2628 let currentEnv : Environment ;
2729 let currentEnvs : Environment [ ] ;
2830
29- const createWrapper = async ( { hasDomain = true } : WrapperProps ) => {
31+ const createWrapper = async ( {
32+ hasDomain = true ,
33+ selectedDomainName = "" ,
34+ } : WrapperProps ) => {
3035 currentApp = mockApp ( ) ;
3136 currentEnvs = mockEnvironments ( { app : currentApp } ) ;
3237 currentEnv = currentEnvs [ 0 ] ;
@@ -38,14 +43,24 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
3843 verified : true ,
3944 response : {
4045 domains : hasDomain
41- ? [ { domainName : "www.stormkit.io" , verified : true , id : "15" } ]
46+ ? [
47+ { domainName : "www.stormkit.io" , verified : true , id : "15" } ,
48+ { domainName : "app.stormkit.io" , verified : true , id : "50" } ,
49+ ]
4250 : [ ] ,
4351 } ,
4452 } ) ;
4553
4654 wrapper = render (
4755 < EnvironmentContext . Provider value = { { environment : currentEnv } } >
48- < Analytics />
56+ < MemoryRouter
57+ initialEntries = { [
58+ { pathname : "/" , search : `domain=${ selectedDomainName } ` } ,
59+ ] }
60+ initialIndex = { 0 }
61+ >
62+ < Analytics />
63+ </ MemoryRouter >
4964 </ EnvironmentContext . Provider >
5065 ) ;
5166
@@ -83,6 +98,27 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
8398 test ( "should contain countries section" , ( ) => {
8499 expect ( wrapper . getByText ( "Countries" ) ) . toBeTruthy ( ) ;
85100 } ) ;
101+
102+ test ( "should have the initial domain selected" , async ( ) => {
103+ await waitFor ( ( ) => {
104+ expect ( wrapper . getByText ( "www.stormkit.io" ) ) . toBeTruthy ( ) ;
105+ } ) ;
106+ } ) ;
107+ } ) ;
108+
109+ describe ( "with a pre-selected domain" , ( ) => {
110+ beforeEach ( async ( ) => {
111+ await createWrapper ( {
112+ hasDomain : true ,
113+ selectedDomainName : "app.stormkit.io" ,
114+ } ) ;
115+ } ) ;
116+
117+ test ( "should have that domain selected" , async ( ) => {
118+ await waitFor ( ( ) => {
119+ expect ( wrapper . getByText ( "app.stormkit.io" ) ) . toBeTruthy ( ) ;
120+ } ) ;
121+ } ) ;
86122 } ) ;
87123
88124 describe ( "when environment domain name is not configured" , ( ) => {
0 commit comments