feat(backend-github): GitHub GraphQL API support (#2456)
* add GitHub GraphQL api initial support * support mutiple backends for e2e tests - initial commit * add github backend e2e test (currently skipped), fix bugs per tests * refactor e2e tests, add fork workflow tests, support fork workflow in GraphQL api * remove log message that might contain authentication token * return empty error when commit is not found when using GraphQL (align with base class) * disable github backend tests * fix bugs introduced after rebase of GraphQL and OpenAuthoring features * test: update tests per openAuthoring changes, split tests into multiple files * fix: pass in headers for pagination requests, avoid async iterator as it requires a polyfill on old browsers * test(e2e): disable github backend tests
This commit is contained in:
committed by
Shawn Erquhart
parent
083a336ba4
commit
ece136c92e
231
dev-test/backends/test/config.yml
Normal file
231
dev-test/backends/test/config.yml
Normal file
@ -0,0 +1,231 @@
|
||||
backend:
|
||||
name: test-repo
|
||||
|
||||
site_url: https://example.com
|
||||
|
||||
publish_mode: editorial_workflow
|
||||
media_folder: assets/uploads
|
||||
|
||||
collections: # A list of collections the CMS should be able to edit
|
||||
- name: 'posts' # Used in routes, ie.: /admin/collections/:slug/edit
|
||||
label: 'Posts' # Used in the UI
|
||||
label_singular: 'Post' # Used in the UI, ie: "New Post"
|
||||
description: >
|
||||
The description is a great place for tone setting, high level information, and editing
|
||||
guidelines that are specific to a collection.
|
||||
folder: '_posts'
|
||||
slug: '{{year}}-{{month}}-{{day}}-{{slug}}'
|
||||
summary: '{{title}} -- {{year}}/{{month}}/{{day}}'
|
||||
create: true # Allow users to create new documents in this collection
|
||||
fields: # The fields each document in this collection have
|
||||
- { label: 'Title', name: 'title', widget: 'string', tagname: 'h1' }
|
||||
- {
|
||||
label: 'Publish Date',
|
||||
name: 'date',
|
||||
widget: 'datetime',
|
||||
dateFormat: 'YYYY-MM-DD',
|
||||
timeFormat: 'HH:mm',
|
||||
format: 'YYYY-MM-DD HH:mm',
|
||||
}
|
||||
- label: 'Cover Image'
|
||||
name: 'image'
|
||||
widget: 'image'
|
||||
required: false
|
||||
tagname: ''
|
||||
|
||||
- { label: 'Body', name: 'body', widget: 'markdown', hint: 'Main content goes here.' }
|
||||
meta:
|
||||
- { label: 'SEO Description', name: 'description', widget: 'text' }
|
||||
|
||||
- name: 'faq' # Used in routes, ie.: /admin/collections/:slug/edit
|
||||
label: 'FAQ' # Used in the UI
|
||||
folder: '_faqs'
|
||||
create: true # Allow users to create new documents in this collection
|
||||
fields: # The fields each document in this collection have
|
||||
- { label: 'Question', name: 'title', widget: 'string', tagname: 'h1' }
|
||||
- { label: 'Answer', name: 'body', widget: 'markdown' }
|
||||
|
||||
- name: 'settings'
|
||||
label: 'Settings'
|
||||
delete: false # Prevent users from deleting documents in this collection
|
||||
editor:
|
||||
preview: false
|
||||
files:
|
||||
- name: 'general'
|
||||
label: 'Site Settings'
|
||||
file: '_data/settings.json'
|
||||
description: 'General Site Settings'
|
||||
fields:
|
||||
- { label: 'Global title', name: 'site_title', widget: 'string' }
|
||||
- label: 'Post Settings'
|
||||
name: posts
|
||||
widget: 'object'
|
||||
fields:
|
||||
- {
|
||||
label: 'Number of posts on frontpage',
|
||||
name: front_limit,
|
||||
widget: number,
|
||||
min: 1,
|
||||
max: 10,
|
||||
}
|
||||
- { label: 'Default Author', name: author, widget: string }
|
||||
- { label: 'Default Thumbnail', name: thumb, widget: image, class: 'thumb', required: false }
|
||||
|
||||
- name: 'authors'
|
||||
label: 'Authors'
|
||||
file: '_data/authors.yml'
|
||||
description: 'Author descriptions'
|
||||
fields:
|
||||
- name: authors
|
||||
label: Authors
|
||||
label_singular: 'Author'
|
||||
widget: list
|
||||
fields:
|
||||
- { label: 'Name', name: 'name', widget: 'string', hint: 'First and Last' }
|
||||
- { label: 'Description', name: 'description', widget: 'markdown' }
|
||||
|
||||
- name: 'kitchenSink' # all the things in one entry, for documentation and quick testing
|
||||
label: 'Kitchen Sink'
|
||||
folder: '_sink'
|
||||
create: true
|
||||
fields:
|
||||
- label: 'Related Post'
|
||||
name: 'post'
|
||||
widget: 'relationKitchenSinkPost'
|
||||
collection: 'posts'
|
||||
displayFields: ['title', 'date']
|
||||
searchFields: ['title', 'body']
|
||||
valueField: 'title'
|
||||
- { label: 'Title', name: 'title', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean', default: true }
|
||||
- { label: 'Map', name: 'map', widget: 'map' }
|
||||
- { label: 'Text', name: 'text', widget: 'text', hint: 'Plain text, not markdown' }
|
||||
- { label: 'Number', name: 'number', widget: 'number', hint: 'To infinity and beyond!' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- {
|
||||
label: 'Select multiple',
|
||||
name: 'select_multiple',
|
||||
widget: 'select',
|
||||
options: ['a', 'b', 'c'],
|
||||
multiple: true,
|
||||
}
|
||||
- { label: 'Hidden', name: 'hidden', widget: 'hidden', default: 'hidden' }
|
||||
- label: 'Object'
|
||||
name: 'object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- label: 'Related Post'
|
||||
name: 'post'
|
||||
widget: 'relationKitchenSinkPost'
|
||||
collection: 'posts'
|
||||
searchFields: ['title', 'body']
|
||||
valueField: 'title'
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean', default: false }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- label: 'List'
|
||||
name: 'list'
|
||||
widget: 'list'
|
||||
fields:
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean' }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- label: 'Object'
|
||||
name: 'object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean' }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- label: 'List'
|
||||
name: 'list'
|
||||
widget: 'list'
|
||||
fields:
|
||||
- label: 'Related Post'
|
||||
name: 'post'
|
||||
widget: 'relationKitchenSinkPost'
|
||||
collection: 'posts'
|
||||
searchFields: ['title', 'body']
|
||||
valueField: 'title'
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean' }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- { label: 'Hidden', name: 'hidden', widget: 'hidden', default: 'hidden' }
|
||||
- label: 'Object'
|
||||
name: 'object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean' }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
||||
- {
|
||||
label: 'Select',
|
||||
name: 'select',
|
||||
widget: 'select',
|
||||
options: ['a', 'b', 'c'],
|
||||
}
|
||||
- label: 'Typed List'
|
||||
name: 'typed_list'
|
||||
widget: 'list'
|
||||
types:
|
||||
- label: 'Type 1 Object'
|
||||
name: 'type_1_object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- { label: 'String', name: 'string', widget: 'string' }
|
||||
- { label: 'Boolean', name: 'boolean', widget: 'boolean' }
|
||||
- { label: 'Text', name: 'text', widget: 'text' }
|
||||
- label: 'Type 2 Object'
|
||||
name: 'type_2_object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- { label: 'Number', name: 'number', widget: 'number' }
|
||||
- { label: 'Select', name: 'select', widget: 'select', options: ['a', 'b', 'c'] }
|
||||
- { label: 'Datetime', name: 'datetime', widget: 'datetime' }
|
||||
- { label: 'Markdown', name: 'markdown', widget: 'markdown' }
|
||||
- label: 'Type 3 Object'
|
||||
name: 'type_3_object'
|
||||
widget: 'object'
|
||||
fields:
|
||||
- { label: 'Date', name: 'date', widget: 'date' }
|
||||
- { label: 'Image', name: 'image', widget: 'image' }
|
||||
- { label: 'File', name: 'file', widget: 'file' }
|
208
dev-test/backends/test/index.html
Normal file
208
dev-test/backends/test/index.html
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user