-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
* refactor: typescript the backends * feat: support multiple files upload for GitLab and BitBucket * fix: load entry media files from media folder or UI state * chore: cleanup log message * chore: code cleanup * refactor: typescript the test backend * refactor: cleanup getEntry unsued variables * refactor: moved shared backend code to lib util * chore: rename files to preserve history * fix: bind readFile method to API classes * test(e2e): switch to chrome in cypress tests * refactor: extract common api methods * refactor: remove most of immutable js usage from backends * feat(backend-gitlab): initial editorial workflow support * feat(backend-gitlab): implement missing workflow methods * chore: fix lint error * feat(backend-gitlab): support files deletion * test(e2e): add gitlab cypress tests * feat(backend-bitbucket): implement missing editorial workflow methods * test(e2e): add BitBucket backend e2e tests * build: update node version to 12 on netlify builds * fix(backend-bitbucket): extract BitBucket avatar url * test: fix git-gateway AuthenticationPage test * test(e2e): fix some backend tests * test(e2e): fix tests * test(e2e): add git-gateway editorial workflow test * chore: code cleanup * test(e2e): revert back to electron * test(e2e): add non editorial workflow tests * fix(git-gateway-gitlab): don't call unpublishedEntry in simple workflow gitlab git-gateway doesn't support editorial workflow APIs yet. This change makes sure not to call them in simple workflow * refactor(backend-bitbucket): switch to diffstat API instead of raw diff * chore: fix test * test(e2e): add more git-gateway tests * fix: post rebase typescript fixes * test(e2e): fix tests * fix: fix parsing of content key and add tests * refactor: rename test file * test(unit): add getStatues unit tests * chore: update cypress * docs: update beta docs
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
8 | ||
12 |
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
import '../../utils/dismiss-local-backup'; | ||
import { | ||
login, | ||
createPost, | ||
createPostAndExit, | ||
updateExistingPostAndExit, | ||
exitEditor, | ||
goToWorkflow, | ||
goToCollections, | ||
updateWorkflowStatus, | ||
publishWorkflowEntry, | ||
assertWorkflowStatusInEditor, | ||
assertPublishedEntry, | ||
deleteEntryInEditor, | ||
assertOnCollectionsPage, | ||
assertEntryDeleted, | ||
assertWorkflowStatus, | ||
updateWorkflowStatusInEditor, | ||
} from '../../utils/steps'; | ||
import { workflowStatus, editorStatus } from '../../utils/constants'; | ||
|
||
export default function({ entries, getUser }) { | ||
it('successfully loads', () => { | ||
login(getUser()); | ||
}); | ||
|
||
it('can create an entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
}); | ||
|
||
it('can update an entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
updateExistingPostAndExit(entries[0], entries[1]); | ||
}); | ||
|
||
it('can publish an editorial workflow entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.ready); | ||
publishWorkflowEntry(entries[0]); | ||
}); | ||
|
||
it('can change workflow status', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.review); | ||
updateWorkflowStatus(entries[0], workflowStatus.review, workflowStatus.ready); | ||
updateWorkflowStatus(entries[0], workflowStatus.ready, workflowStatus.review); | ||
updateWorkflowStatus(entries[0], workflowStatus.review, workflowStatus.draft); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.ready); | ||
}); | ||
|
||
it('can change status on and publish multiple entries', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
createPostAndExit(entries[1]); | ||
createPostAndExit(entries[2]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[2], workflowStatus.draft, workflowStatus.ready); | ||
updateWorkflowStatus(entries[1], workflowStatus.draft, workflowStatus.ready); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.ready); | ||
publishWorkflowEntry(entries[2]); | ||
publishWorkflowEntry(entries[1]); | ||
publishWorkflowEntry(entries[0]); | ||
goToCollections(); | ||
assertPublishedEntry([entries[2], entries[1], entries[0]]); | ||
}); | ||
|
||
it('can delete an entry', () => { | ||
login(getUser()); | ||
createPost(entries[0]); | ||
deleteEntryInEditor(); | ||
assertOnCollectionsPage(); | ||
assertEntryDeleted(entries[0]); | ||
}); | ||
|
||
it('can update workflow status from within the editor', () => { | ||
login(getUser()); | ||
createPost(entries[0]); | ||
assertWorkflowStatusInEditor(editorStatus.draft); | ||
updateWorkflowStatusInEditor(editorStatus.review); | ||
assertWorkflowStatusInEditor(editorStatus.review); | ||
updateWorkflowStatusInEditor(editorStatus.ready); | ||
assertWorkflowStatusInEditor(editorStatus.ready); | ||
exitEditor(); | ||
goToWorkflow(); | ||
assertWorkflowStatus(entries[0], workflowStatus.ready); | ||
}); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
import '../../utils/dismiss-local-backup'; | ||
import { | ||
login, | ||
createPostAndExit, | ||
updateExistingPostAndExit, | ||
goToWorkflow, | ||
deleteWorkflowEntry, | ||
updateWorkflowStatus, | ||
publishWorkflowEntry, | ||
} from '../../utils/steps'; | ||
import { workflowStatus } from '../../utils/constants'; | ||
|
||
export default function({ entries, getUser, getForkUser }) { | ||
it('successfully loads', () => { | ||
login(getUser()); | ||
}); | ||
|
||
it('can create an entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
}); | ||
|
||
it('can update an entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
updateExistingPostAndExit(entries[0], entries[1]); | ||
}); | ||
|
||
it('can publish an editorial workflow entry', () => { | ||
login(getUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.ready); | ||
publishWorkflowEntry(entries[0]); | ||
}); | ||
|
||
it('successfully forks repository and loads', () => { | ||
login(getForkUser()); | ||
}); | ||
|
||
it('can create an entry on fork', () => { | ||
login(getForkUser()); | ||
createPostAndExit(entries[0]); | ||
}); | ||
|
||
it('can update a draft entry on fork', () => { | ||
login(getForkUser()); | ||
createPostAndExit(entries[0]); | ||
updateExistingPostAndExit(entries[0], entries[1]); | ||
}); | ||
|
||
it('can change entry status from fork', () => { | ||
login(getForkUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.review); | ||
}); | ||
|
||
it('can delete review entry from fork', () => { | ||
login(getForkUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.review); | ||
deleteWorkflowEntry(entries[0]); | ||
}); | ||
|
||
it('can return entry to draft and delete it', () => { | ||
login(getForkUser()); | ||
createPostAndExit(entries[0]); | ||
goToWorkflow(); | ||
updateWorkflowStatus(entries[0], workflowStatus.draft, workflowStatus.review); | ||
|
||
updateWorkflowStatus(entries[0], workflowStatus.review, workflowStatus.draft); | ||
deleteWorkflowEntry(entries[0]); | ||
}); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
import '../../utils/dismiss-local-backup'; | ||
import { login, createPostAndPublish, assertPublishedEntry } from '../../utils/steps'; | ||
|
||
export default function({ entries, getUser }) { | ||
it('successfully loads', () => { | ||
login(getUser()); | ||
}); | ||
|
||
it('can create an entry', () => { | ||
login(getUser()); | ||
createPostAndPublish(entries[0]); | ||
assertPublishedEntry(entries[0]); | ||
}); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
import fixture from './common/editorial_workflow'; | ||
import * as specUtils from './common/spec_utils'; | ||
import { entry1, entry2, entry3 } from './common/entries'; | ||
|
||
const backend = 'bitbucket'; | ||
|
||
describe('BitBucket Backend Editorial Workflow', () => { | ||
let taskResult = { data: {} }; | ||
|
||
before(() => { | ||
specUtils.before(taskResult, { publish_mode: 'editorial_workflow' }, backend); | ||
}); | ||
|
||
after(() => { | ||
specUtils.after(taskResult, backend); | ||
}); | ||
|
||
beforeEach(() => { | ||
specUtils.beforeEach(taskResult, backend); | ||
}); | ||
|
||
afterEach(() => { | ||
specUtils.afterEach(taskResult, backend); | ||
}); | ||
|
||
fixture({ | ||
entries: [entry1, entry2, entry3], | ||
getUser: () => taskResult.data.user, | ||
}); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import fixture from './common/editorial_workflow'; | ||
import * as specUtils from './common/spec_utils'; | ||
import { entry1, entry2, entry3 } from './common/entries'; | ||
|
||
const backend = 'git-gateway'; | ||
const provider = 'github'; | ||
|
||
describe('Git Gateway (GitHub) Backend Editorial Workflow', () => { | ||
let taskResult = { data: {} }; | ||
|
||
before(() => { | ||
specUtils.before(taskResult, { publish_mode: 'editorial_workflow', provider }, backend); | ||
}); | ||
|
||
after(() => { | ||
specUtils.after(taskResult, backend); | ||
}); | ||
|
||
beforeEach(() => { | ||
specUtils.beforeEach(taskResult, backend); | ||
}); | ||
|
||
afterEach(() => { | ||
specUtils.afterEach(taskResult, backend); | ||
}); | ||
|
||
fixture({ | ||
entries: [entry1, entry2, entry3], | ||
getUser: () => taskResult.data.user, | ||
}); | ||
}); |