Someone that can help me to fix the following error:
(method) CallGraphQL.executeQuery(queryToExecute: DocumentNode): Promise<ApolloQueryResult<any>>
Type 'Promise<ApolloQueryResult<any>>' is missing the following properties from type 'ApolloQueryResult<any>': data, loading, networkStatus, stale
Pretty much that I am doing is trying to create a question using the screen play pattern with the serenity-js framework, coding with typescript, so when I am trying to create the question, I try to use on the abilities I create in the class file but I am getting a issue with the Promise from the ability class:
From this file is where I am getting the error:
import { Actor, Question, Log } from '@serenity-js/core';
import { CallGraphQL } from '../abilities/callGraphQL';
import { DocumentNode } from 'graphql';
import { ApolloClient, ApolloQueryResult } from 'apollo-client';
export const expectedResult = (query: DocumentNode): Question<ApolloQueryResult<any>> =>
Question.about(`the result of the query`, (actor: Actor): ApolloQueryResult<any> => {
const ability = CallGraphQL.as(actor);
Log.the(ability.executeQuery(query));
return Promise.resolve(ability.executeQuery(query)); // HERE IS THE ERROR
});
From this file I am calling the async method:
import { NormalizedCacheObject } from 'apollo-cache-inmemory';
import { ApolloClient, ApolloQueryResult } from 'apollo-client';
import { Container } from 'inversify';
import 'reflect-metadata';
import { Ability, Actor, UsesAbilities } from '@serenity-js/core';
import GraphQLConnection from '../../src/GraphQLConnection';
import { DocumentNode } from 'graphql';
export class CallGraphQL implements Ability {
public result: ApolloQueryResult<any>;
public _apolloClient: ApolloClient<NormalizedCacheObject>;
private projectContainer: Container = new Container();
constructor(private readonly myAbility: GraphQLConnection) {
}
public static with(myAbility: GraphQLConnection): CallGraphQL {
return new CallGraphQL(myAbility);
}
public static as(actor: UsesAbilities): CallGraphQL {
return actor.abilityTo(CallGraphQL);
}
public connect(): ApolloClient<NormalizedCacheObject> {
const myApollo = new GraphQLConnection();
this._apolloClient = myApollo.getConnection(this._apolloClient);
return this._apolloClient;
}
public async executeQuery(queryToExecute: DocumentNode): Promise<ApolloQueryResult<any>> {
try {
this.result = await this._apolloClient.query({
query: queryToExecute,
});
} catch (error) {
console.log(error);
}
return this.result;
}
}
Appreciate your help, Thanks