88 */
99
1010import React from 'react' ;
11+ import { dataPluginMock } from '@kbn/data-plugin/public/mocks' ;
1112
1213interface MockQuery {
1314 query : string ;
@@ -101,6 +102,22 @@ export const MockDataViewPicker = ({ onChangeDataView }: MockDataViewPickerProps
101102 </ div >
102103) ;
103104
105+ const createMockDataQueryServices = ( ) => {
106+ const { query } = dataPluginMock . createStartContract ( ) ;
107+ return { query } ;
108+ } ;
109+
110+ const createMockSearchHitsResponse = (
111+ hits : Array < { _id : string ; _index : string ; _source : Record < string , unknown > } >
112+ ) => ( {
113+ rawResponse : {
114+ hits : {
115+ total : { value : hits . length , relation : 'eq' as const } ,
116+ hits,
117+ } ,
118+ } ,
119+ } ) ;
120+
104121/**
105122 * Creates mock Kibana services for event form tests
106123 */
@@ -109,41 +126,57 @@ export const createEventFormKibanaMocks = () => {
109126 getActiveSpace : jest . fn ( ) . mockResolvedValue ( { id : 'default' } ) ,
110127 } ;
111128
129+ const mockFormatter = {
130+ convert : jest . fn ( ( value : unknown ) => ( { text : String ( value ?? '' ) } ) ) ,
131+ } ;
132+
112133 const mockDataView = {
113134 id : 'test-data-view' ,
114135 title : '.alerts-*-default' ,
115136 timeFieldName : '@timestamp' ,
116137 refreshFields : jest . fn ( ) . mockResolvedValue ( undefined ) ,
117- getFieldByName : jest . fn ( ) . mockReturnValue ( null ) ,
138+ getFormatterForField : jest . fn ( ) . mockReturnValue ( mockFormatter ) ,
139+ getFieldByName : jest . fn ( ( name : string ) => ( {
140+ name,
141+ type : name === '@timestamp' ? 'date' : 'string' ,
142+ esTypes : name === '@timestamp' ? [ 'date' ] : [ 'keyword' ] ,
143+ } ) ) ,
144+ fields : {
145+ replaceAll : jest . fn ( ) ,
146+ getByName : jest . fn ( ) . mockReturnValue ( null ) ,
147+ getAll : jest . fn ( ) . mockReturnValue ( [ ] ) ,
148+ create : jest . fn ( ) ,
149+ add : jest . fn ( ) ,
150+ remove : jest . fn ( ) ,
151+ update : jest . fn ( ) ,
152+ filter : jest . fn ( ) . mockReturnValue ( [ ] ) ,
153+ } ,
118154 } ;
119155
156+ const mockAlertHits = [
157+ {
158+ _id : '1' ,
159+ _index : '.alerts-default' ,
160+ _source : {
161+ '@timestamp' : '2024-01-01T00:00:00Z' ,
162+ 'kibana.alert.rule.name' : 'Test Rule' ,
163+ 'kibana.alert.reason' : 'test event created' ,
164+ message : 'Test message' ,
165+ } ,
166+ } ,
167+ ] ;
168+
120169 const mockSearchSource = {
121170 setField : jest . fn ( ) ,
122171 fetch$ : jest . fn ( ) . mockReturnValue ( {
123172 pipe : jest . fn ( ) . mockReturnValue ( {
124- toPromise : jest . fn ( ) . mockResolvedValue ( {
125- rawResponse : {
126- hits : {
127- hits : [
128- {
129- _id : '1' ,
130- _index : '.alerts-default' ,
131- _source : {
132- '@timestamp' : '2024-01-01T00:00:00Z' ,
133- 'kibana.alert.rule.name' : 'Test Rule' ,
134- 'kibana.alert.reason' : 'test event created' ,
135- message : 'Test message' ,
136- } ,
137- } ,
138- ] ,
139- } ,
140- } ,
141- } ) ,
173+ toPromise : jest . fn ( ) . mockResolvedValue ( createMockSearchHitsResponse ( mockAlertHits ) ) ,
142174 } ) ,
143175 } ) ,
144176 } ;
145177
146178 const mockData = {
179+ ...createMockDataQueryServices ( ) ,
147180 dataViews : {
148181 find : jest . fn ( ) . mockResolvedValue ( [ ] ) ,
149182 create : jest . fn ( ) . mockResolvedValue ( mockDataView ) ,
@@ -155,24 +188,7 @@ export const createEventFormKibanaMocks = () => {
155188 } ,
156189 search : jest . fn ( ) . mockReturnValue ( {
157190 pipe : jest . fn ( ) . mockReturnValue ( {
158- toPromise : jest . fn ( ) . mockResolvedValue ( {
159- rawResponse : {
160- hits : {
161- hits : [
162- {
163- _id : '1' ,
164- _index : '.alerts-default' ,
165- _source : {
166- '@timestamp' : '2024-01-01T00:00:00Z' ,
167- 'kibana.alert.rule.name' : 'Test Rule' ,
168- 'kibana.alert.reason' : 'test event created' ,
169- message : 'Test message' ,
170- } ,
171- } ,
172- ] ,
173- } ,
174- } ,
175- } ) ,
191+ toPromise : jest . fn ( ) . mockResolvedValue ( createMockSearchHitsResponse ( mockAlertHits ) ) ,
176192 } ) ,
177193 } ) ,
178194 } ,
@@ -195,16 +211,31 @@ export const createEventFormKibanaMocks = () => {
195211 * Creates mock Kibana services for index form tests
196212 */
197213export const createIndexFormKibanaMocks = ( ) => {
214+ const mockFormatter = {
215+ convert : jest . fn ( ( value : unknown ) => ( { text : String ( value ?? '' ) } ) ) ,
216+ } ;
217+
198218 const createMockDataView = ( ) => ( {
199219 id : 'test-data-view-id' ,
200220 title : 'logs-*' ,
201221 name : 'logs-*' ,
222+ timeFieldName : '@timestamp' ,
202223 getIndexPattern : jest . fn ( ) . mockReturnValue ( 'logs-*' ) ,
203224 refreshFields : jest . fn ( ) . mockResolvedValue ( undefined ) ,
204- getFieldByName : jest . fn ( ) . mockReturnValue ( null ) ,
225+ getFormatterForField : jest . fn ( ) . mockReturnValue ( mockFormatter ) ,
226+ getFieldByName : jest . fn ( ( name : string ) => ( {
227+ name,
228+ type : name === '@timestamp' ? 'date' : 'string' ,
229+ esTypes : name === '@timestamp' ? [ 'date' ] : [ 'keyword' ] ,
230+ } ) ) ,
205231 fields : {
232+ replaceAll : jest . fn ( ) ,
206233 getByName : jest . fn ( ) . mockReturnValue ( null ) ,
207234 getAll : jest . fn ( ) . mockReturnValue ( [ ] ) ,
235+ create : jest . fn ( ( spec : { name : string } ) => ( { name : spec . name , type : 'string' } ) ) ,
236+ add : jest . fn ( ) ,
237+ remove : jest . fn ( ) ,
238+ update : jest . fn ( ) ,
208239 length : 0 ,
209240 filter : jest . fn ( ) . mockReturnValue ( [ ] ) ,
210241 } ,
@@ -217,27 +248,24 @@ export const createIndexFormKibanaMocks = () => {
217248 clearInstanceCache : jest . fn ( ) ,
218249 } ;
219250
251+ const mockDocumentHits = [
252+ {
253+ _id : '1' ,
254+ _index : 'logs-*' ,
255+ _source : {
256+ '@timestamp' : '2024-01-01T00:00:00Z' ,
257+ message : 'Test log message' ,
258+ } ,
259+ } ,
260+ ] ;
261+
220262 const mockData = {
263+ ...createMockDataQueryServices ( ) ,
221264 search : {
222265 search : jest . fn ( ) . mockReturnValue ( {
223266 pipe : jest . fn ( ) . mockReturnValue ( {
224267 subscribe : jest . fn ( ( { next, complete } ) => {
225- next ( {
226- rawResponse : {
227- hits : {
228- hits : [
229- {
230- _id : '1' ,
231- _index : 'logs-*' ,
232- _source : {
233- '@timestamp' : '2024-01-01T00:00:00Z' ,
234- message : 'Test log message' ,
235- } ,
236- } ,
237- ] ,
238- } ,
239- } ,
240- } ) ;
268+ next ( createMockSearchHitsResponse ( mockDocumentHits ) ) ;
241269 complete ( ) ;
242270 return { unsubscribe : jest . fn ( ) } ;
243271 } ) ,
0 commit comments