@openneuro/server 4.20.5 → 4.20.6-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -6
- package/src/__mocks__/{config.js → config.ts} +5 -5
- package/src/app.ts +32 -31
- package/src/cache/item.ts +6 -7
- package/src/cache/types.ts +8 -8
- package/src/{config.js → config.ts} +6 -6
- package/src/datalad/__tests__/changelog.spec.ts +83 -0
- package/src/datalad/__tests__/dataset.spec.ts +109 -0
- package/src/datalad/__tests__/description.spec.ts +141 -0
- package/src/datalad/__tests__/files.spec.ts +77 -0
- package/src/datalad/__tests__/pagination.spec.ts +136 -0
- package/src/datalad/__tests__/{snapshots.spec.js → snapshots.spec.ts} +17 -17
- package/src/datalad/{analytics.js → analytics.ts} +4 -4
- package/src/datalad/{changelog.js → changelog.ts} +17 -14
- package/src/datalad/{dataset.js → dataset.ts} +95 -93
- package/src/datalad/{description.js → description.ts} +37 -37
- package/src/datalad/draft.ts +38 -0
- package/src/datalad/files.ts +26 -20
- package/src/datalad/{pagination.js → pagination.ts} +47 -47
- package/src/datalad/{readme.js → readme.ts} +13 -11
- package/src/datalad/{reexporter.js → reexporter.ts} +4 -4
- package/src/datalad/{snapshots.js → snapshots.ts} +56 -62
- package/src/datalad/{upload.js → upload.ts} +7 -5
- package/src/elasticsearch/elastic-client.ts +11 -0
- package/src/elasticsearch/reindex-dataset.ts +7 -7
- package/src/graphql/__tests__/__snapshots__/permissions.spec.ts.snap +5 -0
- package/src/graphql/__tests__/{comment.spec.js → comment.spec.ts} +17 -17
- package/src/graphql/__tests__/permissions.spec.ts +113 -0
- package/src/graphql/{permissions.js → permissions.ts} +14 -14
- package/src/graphql/resolvers/__tests__/brainlife.spec.ts +11 -11
- package/src/graphql/resolvers/__tests__/{dataset-search.spec.js → dataset-search.spec.ts} +25 -23
- package/src/graphql/resolvers/__tests__/dataset.spec.ts +175 -0
- package/src/graphql/resolvers/__tests__/derivatives.spec.ts +19 -19
- package/src/graphql/resolvers/__tests__/importRemoteDataset.spec.ts +20 -20
- package/src/graphql/resolvers/__tests__/permssions.spec.ts +35 -0
- package/src/graphql/resolvers/__tests__/snapshots.spec.ts +59 -0
- package/src/graphql/resolvers/__tests__/user.spec.ts +18 -0
- package/src/graphql/resolvers/brainlife.ts +4 -4
- package/src/graphql/resolvers/cache.ts +4 -4
- package/src/graphql/resolvers/{comment.js → comment.ts} +16 -16
- package/src/graphql/resolvers/{dataset-search.js → dataset-search.ts} +45 -43
- package/src/graphql/resolvers/{dataset.js → dataset.ts} +38 -52
- package/src/graphql/resolvers/datasetType.ts +3 -3
- package/src/graphql/resolvers/derivatives.ts +11 -11
- package/src/graphql/resolvers/description.ts +18 -0
- package/src/graphql/resolvers/{draft.js → draft.ts} +13 -13
- package/src/graphql/resolvers/{flaggedFiles.js → flaggedFiles.ts} +4 -4
- package/src/graphql/resolvers/{follow.js → follow.ts} +1 -1
- package/src/graphql/resolvers/git.ts +3 -3
- package/src/graphql/resolvers/history.ts +13 -0
- package/src/graphql/resolvers/importRemoteDataset.ts +12 -11
- package/src/graphql/resolvers/index.ts +25 -0
- package/src/graphql/resolvers/{issues.js → issues.ts} +9 -9
- package/src/graphql/resolvers/metadata.ts +8 -8
- package/src/graphql/resolvers/{mutation.js → mutation.ts} +26 -26
- package/src/graphql/resolvers/{newsletter.js → newsletter.ts} +2 -2
- package/src/graphql/resolvers/permissions.ts +15 -21
- package/src/graphql/resolvers/publish.ts +17 -0
- package/src/graphql/resolvers/query.ts +21 -0
- package/src/graphql/resolvers/{readme.js → readme.ts} +3 -3
- package/src/graphql/resolvers/{reexporter.js → reexporter.ts} +2 -2
- package/src/graphql/resolvers/relation.ts +5 -5
- package/src/graphql/resolvers/{reset.js → reset.ts} +2 -2
- package/src/graphql/resolvers/reviewer.ts +4 -4
- package/src/graphql/resolvers/{snapshots.js → snapshots.ts} +49 -49
- package/src/graphql/resolvers/{stars.js → stars.ts} +1 -1
- package/src/graphql/resolvers/summary.ts +3 -3
- package/src/graphql/resolvers/{upload.js → upload.ts} +5 -5
- package/src/graphql/resolvers/{user.js → user.ts} +16 -18
- package/src/graphql/resolvers/{validation.js → validation.ts} +12 -14
- package/src/graphql/{schema.js → schema.ts} +4 -6
- package/src/graphql/utils/{file.js → file.ts} +2 -2
- package/src/handlers/{comments.js → comments.ts} +11 -11
- package/src/handlers/{config.js → config.ts} +1 -1
- package/src/handlers/{datalad.js → datalad.ts} +22 -22
- package/src/handlers/{doi.js → doi.ts} +6 -6
- package/src/handlers/reviewer.ts +6 -6
- package/src/handlers/{sitemap.js → sitemap.ts} +19 -19
- package/src/handlers/stars.ts +11 -10
- package/src/handlers/{subscriptions.js → subscriptions.ts} +17 -16
- package/src/handlers/{users.js → users.ts} +3 -3
- package/src/libs/__tests__/apikey.spec.ts +25 -0
- package/src/libs/__tests__/datalad-service.spec.ts +27 -0
- package/src/libs/__tests__/{dataset.spec.js → dataset.spec.ts} +9 -9
- package/src/libs/{apikey.js → apikey.ts} +5 -5
- package/src/libs/authentication/__tests__/jwt.spec.ts +59 -0
- package/src/libs/authentication/{crypto.js → crypto.ts} +16 -16
- package/src/libs/authentication/google.ts +18 -0
- package/src/libs/authentication/jwt.ts +40 -33
- package/src/libs/authentication/{orcid.js → orcid.ts} +11 -11
- package/src/libs/authentication/{passport.js → passport.ts} +45 -30
- package/src/libs/authentication/{states.js → states.ts} +17 -20
- package/src/libs/{counter.js → counter.ts} +1 -1
- package/src/libs/{datalad-service.js → datalad-service.ts} +4 -4
- package/src/libs/dataset.ts +9 -0
- package/src/libs/doi/__tests__/__snapshots__/doi.spec.ts.snap +17 -0
- package/src/libs/doi/__tests__/doi.spec.ts +25 -0
- package/src/libs/doi/__tests__/normalize.spec.ts +19 -19
- package/src/libs/doi/{index.js → index.ts} +27 -21
- package/src/libs/doi/normalize.ts +2 -2
- package/src/libs/email/__tests__/index.spec.ts +14 -14
- package/src/libs/email/index.ts +4 -4
- package/src/libs/email/templates/__tests__/comment-created.spec.ts +12 -12
- package/src/libs/email/templates/__tests__/dataset-deleted.spec.ts +6 -6
- package/src/libs/email/templates/__tests__/owner-unsubscribed.spec.ts +6 -6
- package/src/libs/email/templates/__tests__/snapshot-created.spec.ts +9 -9
- package/src/libs/email/templates/__tests__/snapshot-reminder.spec.ts +7 -7
- package/src/libs/email/templates/comment-created.ts +2 -1
- package/src/libs/email/templates/dataset-deleted.ts +2 -1
- package/src/libs/email/templates/dataset-import-failed.ts +2 -1
- package/src/libs/email/templates/dataset-imported.ts +2 -1
- package/src/libs/email/templates/owner-unsubscribed.ts +2 -1
- package/src/libs/email/templates/snapshot-created.ts +2 -1
- package/src/libs/email/templates/snapshot-reminder.ts +2 -1
- package/src/libs/{notifications.js → notifications.ts} +100 -113
- package/src/libs/{orcid.js → orcid.ts} +20 -20
- package/src/libs/{redis.js → redis.ts} +6 -6
- package/src/models/__tests__/ingestDataset.spec.ts +15 -15
- package/src/models/analytics.ts +2 -2
- package/src/models/badAnnexObject.ts +6 -6
- package/src/models/comment.ts +10 -10
- package/src/models/counter.ts +2 -2
- package/src/models/dataset.ts +16 -16
- package/src/models/deletion.ts +3 -3
- package/src/models/deprecatedSnapshot.ts +2 -2
- package/src/models/doi.ts +2 -2
- package/src/models/file.ts +2 -2
- package/src/models/ingestDataset.ts +4 -4
- package/src/models/issue.ts +2 -2
- package/src/models/key.ts +2 -2
- package/src/models/mailgunIdentifier.ts +2 -2
- package/src/models/metadata.ts +3 -3
- package/src/models/newsletter.ts +3 -3
- package/src/models/notification.ts +2 -2
- package/src/models/permission.ts +4 -4
- package/src/models/reviewer.ts +7 -7
- package/src/models/snapshot.ts +2 -2
- package/src/models/stars.ts +6 -6
- package/src/models/subscription.ts +2 -2
- package/src/models/summary.ts +2 -2
- package/src/models/upload.ts +3 -3
- package/src/models/user.ts +4 -4
- package/src/{routes.js → routes.ts} +62 -62
- package/src/server.ts +9 -9
- package/src/utils/__tests__/datasetOrSnapshot.spec.ts +25 -25
- package/src/utils/__tests__/validateUrl.spec.ts +10 -10
- package/src/utils/datasetOrSnapshot.ts +2 -2
- package/src/utils/validateUrl.ts +1 -1
- package/src/datalad/__tests__/changelog.spec.js +0 -82
- package/src/datalad/__tests__/dataset.spec.js +0 -109
- package/src/datalad/__tests__/description.spec.js +0 -137
- package/src/datalad/__tests__/files.spec.js +0 -75
- package/src/datalad/__tests__/pagination.spec.js +0 -136
- package/src/datalad/draft.js +0 -37
- package/src/elasticsearch/elastic-client.js +0 -11
- package/src/graphql/__tests__/permissions.spec.js +0 -107
- package/src/graphql/pubsub.js +0 -5
- package/src/graphql/resolvers/__tests__/dataset.spec.js +0 -175
- package/src/graphql/resolvers/__tests__/permssions.spec.js +0 -34
- package/src/graphql/resolvers/__tests__/snapshots.spec.js +0 -58
- package/src/graphql/resolvers/__tests__/user.spec.js +0 -17
- package/src/graphql/resolvers/description.js +0 -29
- package/src/graphql/resolvers/history.js +0 -11
- package/src/graphql/resolvers/index.js +0 -25
- package/src/graphql/resolvers/publish.js +0 -17
- package/src/graphql/resolvers/query.js +0 -21
- package/src/graphql/resolvers/subscriptions.js +0 -81
- package/src/graphql/utils/publish-draft-update.js +0 -13
- package/src/libs/__tests__/apikey.spec.js +0 -24
- package/src/libs/__tests__/datalad-service.spec.js +0 -26
- package/src/libs/authentication/__tests__/jwt.spec.js +0 -23
- package/src/libs/authentication/globus.js +0 -11
- package/src/libs/authentication/google.js +0 -19
- package/src/libs/bidsId.js +0 -68
- package/src/libs/dataset.js +0 -9
- package/src/libs/doi/__tests__/doi.spec.js +0 -24
- package/src/libs/redis-pubsub.js +0 -5
- package/src/libs/request.js +0 -155
- package/src/libs/scitran.js +0 -25
- package/src/libs/subscription-server.js +0 -20
- package/src/libs/testing-utils.js +0 -17
- package/src/persistent/datasets/.gitignore +0 -3
- package/src/persistent/temp/.gitignore +0 -3
- /package/src/libs/__mocks__/{notifications.js → notifications.ts} +0 -0
- /package/src/libs/authentication/{verifyUser.js → verifyUser.ts} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import request from
|
|
2
|
-
import config from
|
|
1
|
+
import request from "superagent"
|
|
2
|
+
import config from "../../config"
|
|
3
3
|
|
|
4
4
|
export const template = ({
|
|
5
5
|
doi,
|
|
@@ -7,13 +7,18 @@ export const template = ({
|
|
|
7
7
|
title,
|
|
8
8
|
year,
|
|
9
9
|
resourceType,
|
|
10
|
-
}) =>
|
|
10
|
+
}) =>
|
|
11
|
+
`<?xml version="1.0" encoding="UTF-8"?>
|
|
11
12
|
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4/metadata.xsd">
|
|
12
13
|
<identifier identifierType="DOI">${doi}</identifier>
|
|
13
14
|
<creators>
|
|
14
|
-
${
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
${
|
|
16
|
+
creators
|
|
17
|
+
.map((creator) =>
|
|
18
|
+
`<creator><creatorName>${creator}</creatorName></creator>`
|
|
19
|
+
)
|
|
20
|
+
.join("")
|
|
21
|
+
}
|
|
17
22
|
</creators>
|
|
18
23
|
<titles>
|
|
19
24
|
<title xml:lang="en-us">${title}</title>
|
|
@@ -28,46 +33,47 @@ export const template = ({
|
|
|
28
33
|
* @param {string} doiConfig.username DOI service username
|
|
29
34
|
* @param {string} doiConfig.password DOI service password
|
|
30
35
|
*/
|
|
31
|
-
export const formatBasicAuth = doiConfig =>
|
|
32
|
-
|
|
33
|
-
Buffer.from(doiConfig.username +
|
|
36
|
+
export const formatBasicAuth = (doiConfig) =>
|
|
37
|
+
"Basic " +
|
|
38
|
+
Buffer.from(doiConfig.username + ":" + doiConfig.password).toString("base64")
|
|
34
39
|
|
|
35
40
|
export default {
|
|
36
41
|
auth: formatBasicAuth(config.doi),
|
|
37
42
|
createDOI(accNumber, snapshotId) {
|
|
38
|
-
let doi = config.doi.prefix +
|
|
43
|
+
let doi = config.doi.prefix + "/openneuro." + accNumber
|
|
39
44
|
if (snapshotId) {
|
|
40
|
-
doi = doi +
|
|
45
|
+
doi = doi + ".v" + snapshotId
|
|
41
46
|
}
|
|
42
47
|
return doi
|
|
43
48
|
},
|
|
44
49
|
|
|
45
50
|
async mintDOI(doi, url) {
|
|
46
51
|
return await request
|
|
47
|
-
.put(config.doi.url +
|
|
48
|
-
.set(
|
|
49
|
-
.set(
|
|
50
|
-
.send(
|
|
52
|
+
.put(config.doi.url + "doi/" + doi)
|
|
53
|
+
.set("Authorization", this.auth)
|
|
54
|
+
.set("Content-Type", "text/plain;charset=UTF-8")
|
|
55
|
+
.send("doi=" + doi + "\nurl=" + url)
|
|
51
56
|
},
|
|
52
57
|
|
|
53
58
|
registerMetadata(context) {
|
|
54
59
|
const xml = template(context)
|
|
55
60
|
return request
|
|
56
|
-
.post(config.doi.url +
|
|
57
|
-
.set(
|
|
58
|
-
.set(
|
|
61
|
+
.post(config.doi.url + "metadata/")
|
|
62
|
+
.set("Authorization", this.auth)
|
|
63
|
+
.set("Content-Type", "application/xml;charset=UTF-8")
|
|
59
64
|
.send(xml)
|
|
60
65
|
},
|
|
61
66
|
|
|
62
67
|
registerSnapshotDoi(datasetId, snapshotId, oldDesc) {
|
|
63
68
|
const baseDoi = this.createDOI(datasetId, snapshotId)
|
|
64
|
-
const url =
|
|
69
|
+
const url =
|
|
70
|
+
`https://openneuro.org/datasets/${datasetId}/versions/${snapshotId}`
|
|
65
71
|
const context = {
|
|
66
72
|
doi: baseDoi,
|
|
67
|
-
creators: oldDesc.Authors.filter(x => x),
|
|
73
|
+
creators: oldDesc.Authors.filter((x) => x),
|
|
68
74
|
title: oldDesc.Name,
|
|
69
75
|
year: new Date().getFullYear(),
|
|
70
|
-
resourceType:
|
|
76
|
+
resourceType: "fMRI",
|
|
71
77
|
}
|
|
72
78
|
return this.registerMetadata(context)
|
|
73
79
|
.then(() => {
|
|
@@ -6,11 +6,11 @@ export const normalizeDOI = (doi: string): string | null => {
|
|
|
6
6
|
if (doi.match(DOIPattern)) {
|
|
7
7
|
return doi
|
|
8
8
|
}
|
|
9
|
-
if (doi.toLowerCase().startsWith(
|
|
9
|
+
if (doi.toLowerCase().startsWith("doi:") && doi.slice(4).match(DOIPattern)) {
|
|
10
10
|
return doi.slice(4)
|
|
11
11
|
}
|
|
12
12
|
if (
|
|
13
|
-
doi.toLowerCase().startsWith(
|
|
13
|
+
doi.toLowerCase().startsWith("https://doi.org/") &&
|
|
14
14
|
doi.slice(16).match(DOIPattern)
|
|
15
15
|
) {
|
|
16
16
|
return doi.slice(16)
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { vi } from
|
|
2
|
-
import { mailjetFormat } from
|
|
1
|
+
import { vi } from "vitest"
|
|
2
|
+
import { mailjetFormat } from "../index"
|
|
3
3
|
|
|
4
|
-
vi.mock(
|
|
5
|
-
vi.mock(
|
|
4
|
+
vi.mock("ioredis")
|
|
5
|
+
vi.mock("../../../config.ts")
|
|
6
6
|
|
|
7
|
-
describe(
|
|
8
|
-
it(
|
|
7
|
+
describe("Mailjet formatter", () => {
|
|
8
|
+
it("formats a message", () => {
|
|
9
9
|
const testMessage = {
|
|
10
|
-
to:
|
|
11
|
-
name:
|
|
12
|
-
html:
|
|
13
|
-
subject:
|
|
10
|
+
to: "test@example.com",
|
|
11
|
+
name: "Test User",
|
|
12
|
+
html: "email content goes here",
|
|
13
|
+
subject: "subject line",
|
|
14
14
|
}
|
|
15
15
|
expect(mailjetFormat(testMessage)).toEqual({
|
|
16
16
|
Messages: [
|
|
17
17
|
{
|
|
18
|
-
From: { Email:
|
|
19
|
-
HTMLPart:
|
|
20
|
-
Subject:
|
|
21
|
-
To: [{ Email:
|
|
18
|
+
From: { Email: "notifications@example.com", Name: "OpenNeuro" },
|
|
19
|
+
HTMLPart: "email content goes here",
|
|
20
|
+
Subject: "subject line",
|
|
21
|
+
To: [{ Email: "test@example.com", Name: "Test User" }],
|
|
22
22
|
},
|
|
23
23
|
],
|
|
24
24
|
})
|
package/src/libs/email/index.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import config from
|
|
1
|
+
import config from "../../config"
|
|
2
2
|
|
|
3
3
|
let transport
|
|
4
4
|
let perform_api_call = true
|
|
5
5
|
try {
|
|
6
|
-
const mailjet = require(
|
|
6
|
+
const mailjet = require("node-mailjet")
|
|
7
7
|
transport = mailjet.connect(
|
|
8
8
|
config.notifications.email.apiKey,
|
|
9
9
|
config.notifications.email.secret,
|
|
@@ -17,7 +17,7 @@ export const mailjetFormat = (email: Record<string, string>) => ({
|
|
|
17
17
|
{
|
|
18
18
|
From: {
|
|
19
19
|
Email: config.notifications.email.from,
|
|
20
|
-
Name:
|
|
20
|
+
Name: "OpenNeuro",
|
|
21
21
|
},
|
|
22
22
|
To: [
|
|
23
23
|
{
|
|
@@ -38,7 +38,7 @@ export const mailjetFormat = (email: Record<string, string>) => ({
|
|
|
38
38
|
export const send = (email: Record<string, string>): Promise<Response> => {
|
|
39
39
|
if (perform_api_call) {
|
|
40
40
|
return transport
|
|
41
|
-
.post(
|
|
41
|
+
.post("send", { version: "v3.1", perform_api_call })
|
|
42
42
|
.request(mailjetFormat(email))
|
|
43
43
|
} else {
|
|
44
44
|
// Mailjet is not configured, instead log emails
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { commentCreated } from
|
|
1
|
+
import { commentCreated } from "../comment-created"
|
|
2
2
|
|
|
3
|
-
describe(
|
|
4
|
-
it(
|
|
3
|
+
describe("email template -> comment created", () => {
|
|
4
|
+
it("renders with expected arguments", () => {
|
|
5
5
|
expect(
|
|
6
6
|
commentCreated({
|
|
7
|
-
siteUrl:
|
|
8
|
-
name:
|
|
9
|
-
commentStatus:
|
|
10
|
-
commentId:
|
|
11
|
-
commentUserId:
|
|
12
|
-
commentContent:
|
|
13
|
-
datasetName:
|
|
14
|
-
datasetLabel:
|
|
15
|
-
dateCreated:
|
|
7
|
+
siteUrl: "https://openneuro.org",
|
|
8
|
+
name: "J. Doe",
|
|
9
|
+
commentStatus: "new",
|
|
10
|
+
commentId: "12345",
|
|
11
|
+
commentUserId: "56789",
|
|
12
|
+
commentContent: "Test comment, please ignore",
|
|
13
|
+
datasetName: "ds1245678",
|
|
14
|
+
datasetLabel: "Not Real Dataset",
|
|
15
|
+
dateCreated: "2063-04-05",
|
|
16
16
|
}),
|
|
17
17
|
).toMatchSnapshot()
|
|
18
18
|
})
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { datasetDeleted } from
|
|
1
|
+
import { datasetDeleted } from "../dataset-deleted"
|
|
2
2
|
|
|
3
|
-
describe(
|
|
4
|
-
it(
|
|
3
|
+
describe("email template -> comment created", () => {
|
|
4
|
+
it("renders with expected arguments", () => {
|
|
5
5
|
expect(
|
|
6
6
|
datasetDeleted({
|
|
7
|
-
siteUrl:
|
|
8
|
-
name:
|
|
9
|
-
datasetName:
|
|
7
|
+
siteUrl: "https://openneuro.org",
|
|
8
|
+
name: "J. Doe",
|
|
9
|
+
datasetName: "ds1245678",
|
|
10
10
|
}),
|
|
11
11
|
).toMatchSnapshot()
|
|
12
12
|
})
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { ownerUnsubscribed } from
|
|
1
|
+
import { ownerUnsubscribed } from "../owner-unsubscribed"
|
|
2
2
|
|
|
3
|
-
describe(
|
|
4
|
-
it(
|
|
3
|
+
describe("email template -> comment created", () => {
|
|
4
|
+
it("renders with expected arguments", () => {
|
|
5
5
|
expect(
|
|
6
6
|
ownerUnsubscribed({
|
|
7
|
-
siteUrl:
|
|
8
|
-
name:
|
|
9
|
-
datasetName:
|
|
7
|
+
siteUrl: "https://openneuro.org",
|
|
8
|
+
name: "J. Doe",
|
|
9
|
+
datasetName: "ds1245678",
|
|
10
10
|
}),
|
|
11
11
|
).toMatchSnapshot()
|
|
12
12
|
})
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { snapshotCreated } from
|
|
1
|
+
import { snapshotCreated } from "../snapshot-created"
|
|
2
2
|
|
|
3
|
-
describe(
|
|
4
|
-
it(
|
|
3
|
+
describe("email template -> comment created", () => {
|
|
4
|
+
it("renders with expected arguments", () => {
|
|
5
5
|
expect(
|
|
6
6
|
snapshotCreated({
|
|
7
|
-
siteUrl:
|
|
8
|
-
name:
|
|
9
|
-
datasetId:
|
|
10
|
-
datasetLabel:
|
|
11
|
-
versionNumber:
|
|
12
|
-
changelog:
|
|
7
|
+
siteUrl: "https://openneuro.org",
|
|
8
|
+
name: "J. Doe",
|
|
9
|
+
datasetId: "ds1245678",
|
|
10
|
+
datasetLabel: "Test Dataset Snapshot Created",
|
|
11
|
+
versionNumber: "1.2.4",
|
|
12
|
+
changelog: "New changes...",
|
|
13
13
|
}),
|
|
14
14
|
).toMatchSnapshot()
|
|
15
15
|
})
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { snapshotReminder } from
|
|
1
|
+
import { snapshotReminder } from "../snapshot-reminder"
|
|
2
2
|
|
|
3
|
-
describe(
|
|
4
|
-
it(
|
|
3
|
+
describe("email template -> comment created", () => {
|
|
4
|
+
it("renders with expected arguments", () => {
|
|
5
5
|
expect(
|
|
6
6
|
snapshotReminder({
|
|
7
|
-
siteUrl:
|
|
8
|
-
name:
|
|
9
|
-
datasetName:
|
|
10
|
-
datasetId:
|
|
7
|
+
siteUrl: "https://openneuro.org",
|
|
8
|
+
name: "J. Doe",
|
|
9
|
+
datasetName: "Reminding Dataset",
|
|
10
|
+
datasetId: "ds12345678",
|
|
11
11
|
}),
|
|
12
12
|
).toMatchSnapshot()
|
|
13
13
|
})
|