Let’s start with how a mutation looks like in GraphQL, A simple “createEmployer” and response looks below.

To work with Mutation , we need a GraphQL variables, Mutation request. You can also choose to pass the variables(data) along with the mutation request.

But is always better to keep them seperate for simplicity.Let’s start with creating a folder structure.

Now create a file called createEmployerQuery.graphql and add the below code snippet in the file

mutation($employer:EmployerParam ) {
  createmployer(employer: $employer) {
    id
    firstName
    lastName
    middleName
    employmentStatus
    
  }
}

Once you have the Query variable in place , we will add another file called createEmployerVariables.graphql which will contain all the variables we need.

{
  "employer": {
    "companyName": "foo",
    "Region": "sdf",
    "Email": "somefmao.com",
    "Phone": "1987683433"
   
  }
}

We will now create a feature fill that will combine these two files and run them as once.

Feature: Create Employer 
Background:  
  * url 'AuthURL' 
  * path 'token' 
  * form field grant_type = 'password' 
  * form field username = username 
  * form field password = password 
  * form field client_id = appId 
  * form field client_secret = appSecret 
  * form field scope = 'yourScopeURL' 
  * method post 
  * status 200 
  * print response

Scenario: Create all employer details     
Given def query = read('createEmployerQuery.graphql')     Given def variables = read('createEmployerVariable.graphql') #And def variables = { name: 'Charmander' }     
And request { query: '#(query)', variables: '#(variables)' } #And request { query: '#(query)' }      
When method post     
* print response     
Then status 200     

To run this we need a runner class.

package employer;
import org.junit.runner.RunWith;
import com.intuit.karate.junit4.Karate;
import com.intuit.karate.KarateOptions;
@RunWith(Karate.class)
@KarateOptions(features = "classpath:employer/createEmployer.feature")
public class EmployerRunner {
}