2
2
* Test case for dataManager
3
3
*/
4
4
import { DataManager , ReturnOption , RequestOptions } from '../src/manager' ;
5
- import { JsonAdaptor , RemoteSaveAdaptor , WebMethodAdaptor , UrlAdaptor , CustomDataAdaptor } from '../src/adaptors' ;
5
+ import { JsonAdaptor , RemoteSaveAdaptor , WebMethodAdaptor , UrlAdaptor , CustomDataAdaptor , GraphQLAdaptor } from '../src/adaptors' ;
6
6
import { ODataAdaptor , ODataV4Adaptor , WebApiAdaptor , CacheAdaptor } from '../src/adaptors' ;
7
7
import { Query , Predicate } from '../src/query' ;
8
8
import { DataUtil } from '../src/util' ;
@@ -3954,4 +3954,70 @@ describe('EJ2-37998 - Provide support for delete action while using complex data
3954
3954
} ) ;
3955
3955
} ) ;
3956
3956
3957
+ describe ( 'GraphQLAdaptor Adaptor' , ( ) => {
3958
+ let dataManager : DataManager ;
3959
+ let result : any ;
3960
+ let data : Object = {
3961
+ data : {
3962
+ getOrders : {
3963
+ result : [
3964
+ { OrderID : 10248 , CustomerID : 'VINET' , EmployeeID : 7 , Freight : 32.38 , Guid : 'f89dee73-af9f-4cd4-b330-db93c25ff3c7' } ,
3965
+ { OrderID : 10249 , CustomerID : 'AANAR' , EmployeeID : 2 , Freight : 11.61 , Guid : 'db2d2186-1c29-4d1e-88ef-a127f521b9c6' } ,
3966
+ { OrderID : 10250 , CustomerID : 'VICTE' , EmployeeID : 7 , Freight : 65.83 , Guid : '6F9619FF-8B86-D011-B42D-00C04FC964FF' } ,
3967
+ { OrderID : 10251 , CustomerID : 'VINET' , EmployeeID : 7 , Freight : 70.63 , Guid : 'f89dee73-af9f-4cd4-b330-db93c25ff3c7' } ,
3968
+ { OrderID : 10252 , CustomerID : 'SUPRD' , EmployeeID : 6 , Freight : 45.45 , Guid : 'f89dee73-af9f-4cd4-b330-db93c25ff3c9' }
3969
+ ] ,
3970
+ count : 5
3971
+ }
3972
+ }
3973
+ } ;
3974
+ describe ( 'Get Data' , ( ) => {
3975
+ let adaptor = new GraphQLAdaptor ( {
3976
+ response : {
3977
+ result : 'getOrders.result'
3978
+ } ,
3979
+ query : `query DataFetch($datamanager: String) {
3980
+ getOrders(datamanager: $datamanager) {
3981
+ count,
3982
+ result{OrderID, CustomerID, EmployeeID, ShipCity, ShipCountry}
3983
+ }
3984
+ }` ,
3985
+ } ) ;
3986
+ beforeAll ( ( done : Function ) => {
3987
+ jasmine . Ajax . install ( ) ;
3988
+ dataManager = new DataManager ( {
3989
+ url : 'Home/Employee' ,
3990
+ adaptor : adaptor
3991
+ } ) ;
3992
+ let promise : Promise < Object > = dataManager . executeQuery ( new Query ( ) . page ( 2 , 3 ) . take ( 5 ) ) ;
3993
+ let request : JasmineAjaxRequest = jasmine . Ajax . requests . mostRecent ( ) ;
3994
+ request . respondWith ( {
3995
+ 'status' : 200 ,
3996
+ 'contentType' : 'application/json' ,
3997
+ 'responseText' : JSON . stringify ( data )
3998
+ } ) ;
3999
+ promise . then ( ( e : { result : { result : Object [ ] , count : number } } ) => {
4000
+ result = e . result ;
4001
+ done ( ) ;
4002
+ } ) ;
4003
+ } ) ;
4004
+ afterAll ( ( ) => {
4005
+ jasmine . Ajax . uninstall ( ) ;
4006
+ } ) ;
4007
+ it ( 'check length of the data' , ( ) => {
4008
+ expect ( result . length ) . toBe ( 5 ) ;
4009
+ } ) ;
4010
+ it ( 'check the ProcessData method' , ( ) => {
4011
+ let query : Query = new Query ( ) . skip ( 2 ) . take ( 2 ) . select ( [ 'OrderID' , 'CustomerID' , 'EmployeeID' ] ) . where ( 'EmployeeID' , 'equal' , 7 ) ;
4012
+ let datamanager : Object = new UrlAdaptor ( ) . processQuery ( new DataManager ( { url : '' } ) , query ) ;
4013
+ let dm : Object = JSON . parse ( datamanager [ 'data' ] ) ;
4014
+ dm [ 'where' ] = JSON . stringify ( dm [ 'where' ] ) ;
4015
+ let data : Object [ ] = DataUtil . processData ( dm , result ) as any ;
4016
+ expect ( data . length ) . toBe ( 1 ) ;
4017
+ } ) ;
4018
+ } ) ;
4019
+ afterAll ( ( ) => {
4020
+ jasmine . Ajax . uninstall ( ) ;
4021
+ } ) ;
4022
+ } ) ;
3957
4023
} ) ;
0 commit comments