1
1
import { RenderResult , render , waitFor } from "@testing-library/react" ;
2
2
import { EnvironmentContext } from "~/pages/apps/[id]/environments/Environment.context" ;
3
+ import { MemoryRouter } from "react-router" ;
3
4
import mockApp from "~/testing/data/mock_app" ;
4
5
import mockEnvironments from "~/testing/data/mock_environments" ;
5
6
import { mockFetchDomains } from "~/testing/nocks/nock_domains" ;
@@ -18,6 +19,7 @@ jest.mock("recharts", () => ({
18
19
19
20
interface WrapperProps {
20
21
hasDomain ?: boolean ;
22
+ selectedDomainName ?: string ;
21
23
}
22
24
23
25
describe ( "~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx" , ( ) => {
@@ -26,7 +28,10 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
26
28
let currentEnv : Environment ;
27
29
let currentEnvs : Environment [ ] ;
28
30
29
- const createWrapper = async ( { hasDomain = true } : WrapperProps ) => {
31
+ const createWrapper = async ( {
32
+ hasDomain = true ,
33
+ selectedDomainName = "" ,
34
+ } : WrapperProps ) => {
30
35
currentApp = mockApp ( ) ;
31
36
currentEnvs = mockEnvironments ( { app : currentApp } ) ;
32
37
currentEnv = currentEnvs [ 0 ] ;
@@ -38,14 +43,24 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
38
43
verified : true ,
39
44
response : {
40
45
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
+ ]
42
50
: [ ] ,
43
51
} ,
44
52
} ) ;
45
53
46
54
wrapper = render (
47
55
< 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 >
49
64
</ EnvironmentContext . Provider >
50
65
) ;
51
66
@@ -83,6 +98,27 @@ describe("~/pages/apps/[id]/environments/[env-id]/analytics/Analytics.tsx", () =
83
98
test ( "should contain countries section" , ( ) => {
84
99
expect ( wrapper . getByText ( "Countries" ) ) . toBeTruthy ( ) ;
85
100
} ) ;
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
+ } ) ;
86
122
} ) ;
87
123
88
124
describe ( "when environment domain name is not configured" , ( ) => {
0 commit comments