1
1
import ctrlOrCmd from 'ghost-admin/utils/ctrl-or-cmd' ;
2
2
import { authenticateSession } from 'ember-simple-auth/test-support' ;
3
+ import { cleanupMockAnalyticsApps , mockAnalyticsApps } from '../helpers/mock-analytics-apps' ;
3
4
import { click , currentURL , find , findAll , triggerKeyEvent , visit } from '@ember/test-helpers' ;
4
5
import { describe , it } from 'mocha' ;
5
6
import { expect } from 'chai' ;
@@ -15,21 +16,25 @@ const suites = [{
15
16
name : 'Acceptance: Search (flex)' ,
16
17
beforeEach ( ) {
17
18
// noop - default locale is 'en'
19
+ mockAnalyticsApps ( ) ;
18
20
} ,
19
21
confirmProvider ( ) {
20
22
const searchService = this . owner . lookup ( 'service:search' ) ;
21
23
expect ( searchService . provider . constructor . name , 'provider name' ) . to . equal ( 'SearchProviderFlexService' ) ;
24
+ cleanupMockAnalyticsApps ( ) ;
22
25
}
23
26
} , {
24
27
name : 'Acceptance: Search (basic)' ,
25
28
beforeEach ( ) {
26
29
this . server . db . settings . update ( { key : 'locale' } , { value : 'de' } ) ;
30
+ mockAnalyticsApps ( ) ;
27
31
} ,
28
32
confirmProvider ( ) {
29
33
const settingsService = this . owner . lookup ( 'service:settings' ) ;
30
34
expect ( settingsService . locale , 'settings.locale' ) . to . equal ( 'de' ) ;
31
35
const searchService = this . owner . lookup ( 'service:search' ) ;
32
36
expect ( searchService . provider . constructor . name , 'provider name' ) . to . equal ( 'SearchProviderBasicService' ) ;
37
+ cleanupMockAnalyticsApps ( ) ;
33
38
}
34
39
} ] ;
35
40
@@ -61,20 +66,20 @@ suites.forEach((suite) => {
61
66
} ) ;
62
67
63
68
it ( 'is using correct provider' , async function ( ) {
64
- await visit ( '/dashboard ' ) ;
69
+ await visit ( '/analytics ' ) ;
65
70
suite . confirmProvider . bind ( this ) ( ) ;
66
71
} ) ;
67
72
68
73
it ( 'opens search modal when clicking icon' , async function ( ) {
69
- await visit ( '/dashboard ' ) ;
70
- expect ( currentURL ( ) , 'currentURL' ) . to . equal ( '/dashboard ' ) ;
74
+ await visit ( '/analytics ' ) ;
75
+ expect ( currentURL ( ) , 'currentURL' ) . to . equal ( '/analytics ' ) ;
71
76
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . not . exist ;
72
77
await click ( '[data-test-button="search"]' ) ;
73
78
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . exist ;
74
79
} ) ;
75
80
76
81
it ( 'opens search icon when pressing Ctrl/Cmd+K' , async function ( ) {
77
- await visit ( '/dashboard ' ) ;
82
+ await visit ( '/analytics ' ) ;
78
83
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . not . exist ;
79
84
await triggerKeyEvent ( document , 'keydown' , 'K' , {
80
85
metaKey : ctrlOrCmd === 'command' ,
@@ -84,23 +89,23 @@ suites.forEach((suite) => {
84
89
} ) ;
85
90
86
91
it ( 'closes search modal on escape key' , async function ( ) {
87
- await visit ( '/dashboard ' ) ;
92
+ await visit ( '/analytics ' ) ;
88
93
await click ( '[data-test-button="search"]' ) ;
89
94
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . exist ;
90
95
await triggerKeyEvent ( document , 'keydown' , 'Escape' ) ;
91
96
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . not . exist ;
92
97
} ) ;
93
98
94
99
it ( 'closes search modal on click outside' , async function ( ) {
95
- await visit ( '/dashboard ' ) ;
100
+ await visit ( '/analytics ' ) ;
96
101
await click ( '[data-test-button="search"]' ) ;
97
102
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . exist ;
98
103
await click ( '.epm-backdrop' ) ;
99
104
expect ( find ( '[data-test-modal="search"]' ) , 'search modal' ) . to . not . exist ;
100
105
} ) ;
101
106
102
107
it ( 'finds posts, pages, staff, and tags when typing' , async function ( ) {
103
- await visit ( '/dashboard ' ) ;
108
+ await visit ( '/analytics ' ) ;
104
109
await click ( '[data-test-button="search"]' ) ;
105
110
await typeInSearch ( 'first' ) ; // search is not case sensitive
106
111
@@ -119,7 +124,7 @@ suites.forEach((suite) => {
119
124
} ) ;
120
125
121
126
it ( 'up/down arrows move selected item' , async function ( ) {
122
- await visit ( '/dashboard ' ) ;
127
+ await visit ( '/analytics ' ) ;
123
128
await click ( '[data-test-button="search"]' ) ;
124
129
await typeInSearch ( 'first post' ) ;
125
130
expect ( findAll ( '.ember-power-select-option' ) [ 0 ] , 'first option (initial)' ) . to . have . attribute ( 'aria-current' , 'true' ) ;
@@ -130,23 +135,23 @@ suites.forEach((suite) => {
130
135
} ) ;
131
136
132
137
it ( 'navigates to editor when post selected (Enter)' , async function ( ) {
133
- await visit ( '/dashboard ' ) ;
138
+ await visit ( '/analytics ' ) ;
134
139
await click ( '[data-test-button="search"]' ) ;
135
140
await typeInSearch ( 'first post' ) ;
136
141
await triggerKeyEvent ( trigger , 'keydown' , 'Enter' ) ;
137
142
expect ( currentURL ( ) , 'url after selecting post' ) . to . equal ( `/editor/post/${ firstPost . id } ` ) ;
138
143
} ) ;
139
144
140
145
it ( 'navigates to editor when post selected (Clicked)' , async function ( ) {
141
- await visit ( '/dashboard ' ) ;
146
+ await visit ( '/analytics ' ) ;
142
147
await click ( '[data-test-button="search"]' ) ;
143
148
await typeInSearch ( 'first post' ) ;
144
149
await click ( '.ember-power-select-option[aria-current="true"]' ) ;
145
150
expect ( currentURL ( ) , 'url after selecting post' ) . to . equal ( `/editor/post/${ firstPost . id } ` ) ;
146
151
} ) ;
147
152
148
153
it ( 'navigates to editor when highlighted text is clicked' , async function ( ) {
149
- await visit ( '/dashboard ' ) ;
154
+ await visit ( '/analytics ' ) ;
150
155
await click ( '[data-test-button="search"]' ) ;
151
156
await typeInSearch ( 'first post' ) ;
152
157
@@ -159,15 +164,15 @@ suites.forEach((suite) => {
159
164
} ) ;
160
165
161
166
it ( 'navigates to editor when page selected' , async function ( ) {
162
- await visit ( '/dashboard ' ) ;
167
+ await visit ( '/analytics ' ) ;
163
168
await click ( '[data-test-button="search"]' ) ;
164
169
await typeInSearch ( 'page' ) ;
165
170
await triggerKeyEvent ( trigger , 'keydown' , 'Enter' ) ;
166
171
expect ( currentURL ( ) , 'url after selecting page' ) . to . equal ( `/editor/page/${ firstPage . id } ` ) ;
167
172
} ) ;
168
173
169
174
it ( 'navigates to tag edit screen when tag selected' , async function ( ) {
170
- await visit ( '/dashboard ' ) ;
175
+ await visit ( '/analytics ' ) ;
171
176
await click ( '[data-test-button="search"]' ) ;
172
177
await typeInSearch ( 'tag' ) ;
173
178
await triggerKeyEvent ( trigger , 'keydown' , 'Enter' ) ;
@@ -176,15 +181,15 @@ suites.forEach((suite) => {
176
181
177
182
// TODO: Staff settings are now part of AdminX so this isn't working, can we test AdminX from Ember tests?
178
183
it . skip ( 'navigates to user edit screen when user selected' , async function ( ) {
179
- await visit ( '/dashboard ' ) ;
184
+ await visit ( '/analytics ' ) ;
180
185
await click ( '[data-test-button="search"]' ) ;
181
186
await typeInSearch ( 'user' ) ;
182
187
await triggerKeyEvent ( trigger , 'keydown' , 'Enter' ) ;
183
188
expect ( currentURL ( ) , 'url after selecting user' ) . to . equal ( `/settings/staff/${ firstUser . slug } ` ) ;
184
189
} ) ;
185
190
186
191
it ( 'shows no results message when no results' , async function ( ) {
187
- await visit ( '/dashboard ' ) ;
192
+ await visit ( '/analytics ' ) ;
188
193
await click ( '[data-test-button="search"]' ) ;
189
194
await typeInSearch ( 'x' ) ;
190
195
expect ( find ( '.ember-power-select-option--no-matches-message' ) , 'no results message' ) . to . contain . text ( 'No results found' ) ;
@@ -194,7 +199,7 @@ suites.forEach((suite) => {
194
199
it ( 'handles refresh on first search being slow' , async function ( ) {
195
200
this . server . get ( '/posts/' , getPosts , { timing : 200 } ) ;
196
201
197
- await visit ( '/dashboard ' ) ;
202
+ await visit ( '/analytics ' ) ;
198
203
await click ( '[data-test-button="search"]' ) ;
199
204
await typeInSearch ( 'first' ) ; // search is not case sensitive
200
205
0 commit comments