# ====================================================================
# Copyright (c) 2018, 2019 Obeo
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#    Obeo - initial API and implementation
# ====================================================================
pluginName = Sirius Services - GraphQL API Tests
providerName = Eclipse Modeling Project

introspectionQuery=query {\n\
  __schema {\n\
    queryType { name }\n\
    mutationType { name } \n\
    subscriptionType { name } \n\
    types {\n\
      ...typeDetails\n\
    }\n\
  }\n\
}\n\
\n\
fragment typeDetails on __Type {\n\
  kind\n\
  name\n\
  description\n\
  fields(includeDeprecated: true) {\n\
    name\n\
    description\n\
    args {\n\
      ...inputValueDetails\n\
    }\n\
    type {\n\
      ...typeReferenceDetails\n\
    }\n\
    isDeprecated\n\
    deprecationReason\n\
  }\n\
  inputFields {\n\
    ...inputValueDetails\n\
  }\n\
  interfaces {\n\
    ...typeReferenceDetails\n\
  }\n\
  enumValues(includeDeprecated: true) {\n\
    name\n\
    description\n\
    isDeprecated\n\
    deprecationReason\n\
  }\n\
  possibleTypes {\n\
    ...typeReferenceDetails\n\
  }\n\
}\n\
\n\
fragment inputValueDetails on __InputValue {\n\
  name\n\
  description\n\
  defaultValue\n\
  type {\n\
    ...typeReferenceDetails\n\
  }\n\
}\n\
\n\
fragment typeReferenceDetails on __Type {\n\
  kind\n\
  name\n\
  ofType {\n\
    kind\n\
    name\n\
    ofType {\n\
      kind\n\
      name\n\
      ofType {\n\
        kind\n\
        name\n\
      }\n\
    }\n\
  }\n\
}

# ====================================================================
#
# Project test queries and results
#
# ====================================================================

findProjectNameByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
    }\n\
  }\n\
}

findProjectNameByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample"\n\
      }\n\
    }\n\
  }\n\
}

findProjectPathByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      path\n\
    }\n\
  }\n\
}

findProjectPathByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "path": ""\n\
      }\n\
    }\n\
  }\n\
}

findProjectContainerByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      container {\n\
        ... on Project {\n\
          name\n\
        }\n\
        ... on Folder {\n\
          name\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectContainerByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample"\n\
      }\n\
    }\n\
  }\n\
}

findProjectProjectByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      project {\n\
        name\n\
      }\n\
    }\n\
  }\n\
}

findProjectProjectByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "project": {\n\
          "name": "org.eclipse.sirius.sample"\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectResourcesByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      resources(first: 10, after: null) {\n\
        totalCount\n\
        pageInfo {\n\
          hasNextPage\n\
          hasPreviousPage\n\
        }\n\
        edges {\n\
          node {\n\
            name\n\
          }\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectResourcesByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "resources": {\n\
          "totalCount": 1,\n\
          "pageInfo": {\n\
            "hasNextPage": false,\n\
            "hasPreviousPage": false\n\
          },\n\
          "edges": [\n\
            {\n\
              "node": {\n\
                "name": ".project"\n\
              }\n\
            }\n\
          ]\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectDescriptionByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      description\n\
    }\n\
  }\n\
}

findProjectDescriptionByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "description": "SampleDescription"\n\
      }\n\
    }\n\
  }\n\
}

findProjectResourceByPathByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      resourceByPath(path: ".project") {\n\
        name\n\
      }\n\
    }\n\
  }\n\
}

findProjectResourceByPathByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "resourceByPath": {\n\
          "name": ".project"\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectActivatedViewpointsByName=query findProject($projectName: String!) {\n\
  viewer {\n\
    project(name: $projectName) {\n\
      name\n\
      activatedViewpoints(first: 10, after: null) {\n\
        totalCount\n\
        pageInfo {\n\
          hasNextPage\n\
          hasPreviousPage\n\
        }\n\
        edges {\n\
          node {\n\
            identifier\n\
            name\n\
          }\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

findProjectActivatedViewpointsByName_resultSample = {\n\
  "data": {\n\
    "viewer": {\n\
      "project": {\n\
        "name": "org.eclipse.sirius.sample",\n\
        "activatedViewpoints": {\n\
          "totalCount": 0,\n\
          "pageInfo": {\n\
            "hasNextPage": false,\n\
            "hasPreviousPage": false\n\
          },\n\
          "edges": []\n\
        }\n\
      }\n\
    }\n\
  }\n\
}

# ====================================================================
#
# Query
#
# ====================================================================

query=type Query {\n\
  viewer: User\n\
}

user=type User {\n\
  project(name: String!): Project\n\
  projects(first: Int, after: String, last: Int, before: String): UserProjectConnection\n\
  ePackage(nsURI: String!): EPackage\n\
  ePackages(first: Int, after: String, last: Int, before: String, includeDefaultEPackages: Boolean): UserEPackageConnection\n\
  viewpoint(identifier: String!): Viewpoint\n\
  viewpoints(first: Int, after: String, last: Int, before: String): UserViewpointConnection\n\
}

pageInfo=type PageInfo {\n\
  hasPreviousPage: Boolean!\n\
  hasNextPage: Boolean!\n\
}

# ====================================================================
#
# Mutation
#
# ====================================================================

mutation=type Mutation {\n\
  createProject(description: ProjectCreationDescription!): Project\n\
  createFolder(projectName: String!, containerPath: String!, name: String!): Folder\n\
  createFile(projectName: String!, containerPath: String!, description: FileCreationDescription!): File\n\
  activateViewpoint(projectName: String!, viewpointIdentifier: String!): Project\n\
  deactivateViewpoint(projectName: String!, viewpointIdentifier: String!): Project\n\
  createRepresentation(projectName: String!, resourcePath: String!, description: RepresentationCreationDescription!): Project\n\
}

fileCreationDescription=input FileCreationDescription {\n\
  kind: String!\n\
  name: String!\n\
}

representationCreationDescription=input RepresentationCreationDescription {\n\
  viewpointIdentifier: String!\n\
  representationIdentifier: String!\n\
  eObjectFragment: String!\n\
  name: String!\n\
}

# ====================================================================
#
# Workspace Domain
#
# ====================================================================

resource=interface Resource {\n\
  name: String!\n\
  path: String!\n\
  container: Container\n\
  project: Project!\n\
}

container=interface Container {\n\
  resources(first: Int, after: String, last: Int, before: String): ContainerResourceConnection\n\
}

project=type Project implements Resource, Container {\n\
  name: String!\n\
  path: String!\n\
  container: Container\n\
  project: Project!\n\
  resources(first: Int, after: String, last: Int, before: String): ContainerResourceConnection\n\
  description: String\n\
  resourceByPath(path: String!): Resource\n\
  activatedViewpoints(first: Int, after: String, last: Int, before: String): ProjectViewpointConnection\n\
}

folder=type Folder implements Resource, Container {\n\
  name: String!\n\
  path: String!\n\
  container: Container\n\
  project: Project!\n\
  resources(first: Int, after: String, last: Int, before: String): ContainerResourceConnection\n\
}

file=type File implements Resource {\n\
  name: String!\n\
  path: String!\n\
  container: Container\n\
  project: Project!\n\
  representations(first: Int, after: String, last: Int, before: String): FileRepresentationConnection\n\
  eObjects(first: Int, after: String, last: Int, before: String): FileEObjectConnection\n\
}

# ====================================================================
#
# Sirius Domain
#
# ====================================================================

viewpoint=type Viewpoint {\n\
  identifier: String!\n\
  name: String!\n\
  representationDescriptions(first: Int, after: String, last: Int, before: String): ViewpointRepresentationDescriptionConnection\n\
}

representationDescription=interface RepresentationDescription {\n\
  identifier: String!\n\
  name: String!\n\
  viewpoint: Viewpoint!\n\
  ePackages(first: Int, after: String, last: Int, before: String): RepresentationDescriptionEPackageConnection\n\
}

diagramDescription=type DiagramDescription implements RepresentationDescription {\n\
  identifier: String!\n\
  name: String!\n\
  viewpoint: Viewpoint!\n\
  ePackages(first: Int, after: String, last: Int, before: String): RepresentationDescriptionEPackageConnection\n\
}

representation=interface Representation {\n\
  name: String!\n\
}

diagram=type Diagram implements Representation {\n\
  name: String!\n\
  description: DiagramDescription!\n\
}

# ====================================================================
#
# EMF Domain
#
# ====================================================================

eObject=interface EObject {\n\
}

eModelElement=interface EModelElement {\n\
  eAnnotations: [EAnnotation!]!\n\
}

eNamedElement=interface ENamedElement {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
}

eClassifier=interface EClassifier {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  instanceClassName: String\n\
  instanceTypeName: String\n\
  ePackage: EPackage\n\
  eTypeParameters: [ETypeParameter!]!\n\
}

eClass=type EClass implements EClassifier, ENamedElement, EModelElement, EObject {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  instanceClassName: String\n\
  instanceTypeName: String\n\
  ePackage: EPackage\n\
  eTypeParameters: [ETypeParameter!]!\n\
  abstract: Boolean!\n\
  interface: Boolean!\n\
  eSuperTypes: [EClass!]!\n\
  eOperations: [EOperation!]!\n\
  eAllAttributes: [EAttribute!]!\n\
  eAllReferences: [EReference!]!\n\
  eReferences: [EReference!]!\n\
  eAttributes: [EAttribute!]!\n\
  eAllContainments: [EReference!]!\n\
  eAllOperations: [EOperation!]!\n\
  eAllStructuralFeatures: [EStructuralFeature!]!\n\
  eAllSuperTypes: [EClass!]!\n\
  eIDAttribute: EAttribute\n\
  eStructuralFeatures: [EStructuralFeature!]!\n\
  eGenericSuperTypes: [EGenericType!]!\n\
  eAllGenericSuperTypes: [EGenericType!]!\n\
}

eTypedElement=interface ETypedElement {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  ordered: Boolean!\n\
  unique: Boolean!\n\
  lowerBound: Int!\n\
  upperBound: Int!\n\
  many: Boolean!\n\
  required: Boolean!\n\
  eType: EClassifier\n\
  eGenericType: EGenericType\n\
}

eStructuralFeature=interface EStructuralFeature {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  ordered: Boolean!\n\
  unique: Boolean!\n\
  lowerBound: Int!\n\
  upperBound: Int!\n\
  many: Boolean!\n\
  required: Boolean!\n\
  eType: EClassifier\n\
  eGenericType: EGenericType\n\
  changeable: Boolean!\n\
  volatile: Boolean!\n\
  transient: Boolean!\n\
  defaultValueLiteral: String\n\
  unsettable: Boolean!\n\
  derived: Boolean!\n\
  eContainingClass: EClass\n\
}

eAttribute=type EAttribute implements EStructuralFeature, ETypedElement, ENamedElement, EModelElement, EObject {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  ordered: Boolean!\n\
  unique: Boolean!\n\
  lowerBound: Int!\n\
  upperBound: Int!\n\
  many: Boolean!\n\
  required: Boolean!\n\
  eType: EClassifier\n\
  eGenericType: EGenericType\n\
  changeable: Boolean!\n\
  volatile: Boolean!\n\
  transient: Boolean!\n\
  defaultValueLiteral: String\n\
  unsettable: Boolean!\n\
  derived: Boolean!\n\
  eContainingClass: EClass\n\
  iD: Boolean!\n\
  eAttributeType: EDataType\n\
}

eReference=type EReference implements EStructuralFeature, ETypedElement, ENamedElement, EModelElement, EObject {\n\
  eAnnotations: [EAnnotation!]!\n\
  name: String\n\
  ordered: Boolean!\n\
  unique: Boolean!\n\
  lowerBound: Int!\n\
  upperBound: Int!\n\
  many: Boolean!\n\
  required: Boolean!\n\
  eType: EClassifier\n\
  eGenericType: EGenericType\n\
  changeable: Boolean!\n\
  volatile: Boolean!\n\
  transient: Boolean!\n\
  defaultValueLiteral: String\n\
  unsettable: Boolean!\n\
  derived: Boolean!\n\
  eContainingClass: EClass\n\
  containment: Boolean!\n\
  container: Boolean!\n\
  resolveProxies: Boolean!\n\
  eOpposite: EReference\n\
  eReferenceType: EClass\n\
  eKeys: [EAttribute!]!\n\
}

library=type Library implements Addressable, EObject {\n\
  address: String\n\
  name: String\n\
  writers: [Writer!]!\n\
  employees: [Employee!]!\n\
  borrowers: [Borrower!]!\n\
  stock: [Item!]!\n\
  books: [Book!]!\n\
  branches: [Library!]!\n\
  parentBranch: Library\n\
}

book=type Book implements CirculatingItem, Lendable, Item, EObject {\n\
  publicationDate: EDate\n\
  copies: Int!\n\
  borrowers: [Borrower!]!\n\
  title: String\n\
  pages: Int!\n\
  category: BookCategory\n\
  author: Writer\n\
}

