+
.emotion-0 {
display: table;
margin: 24px 0;
diff --git a/tests/unit/__snapshots__/CodeIO.test.js.snap b/tests/unit/__snapshots__/CodeIO.test.js.snap
index 983f5b7e4..08e775de1 100644
--- a/tests/unit/__snapshots__/CodeIO.test.js.snap
+++ b/tests/unit/__snapshots__/CodeIO.test.js.snap
@@ -505,33 +505,33 @@ exports[`CodeIO renders correctly 1`] = `
justify-self: right;
}
-.emotion-21>div>* {
+.emotion-22>div>* {
display: inline!important;
}
-.emotion-21 * {
+.emotion-22 * {
border-top-right-radius: 0px;
border-top-left-radius: 0px;
border-bottom-right-radius: 12px;
border-bottom-left-radius: 12px;
}
-.emotion-21>div {
+.emotion-22>div {
border: var(--code-container-border);
}
-.emotion-21>div>div>pre {
+.emotion-22>div>div>pre {
border: var(--code-pre-border);
border-top: none;
}
-.emotion-23 {
+.emotion-24 {
border: 1px solid #3D4F58;
border-radius: 12px;
overflow: hidden;
}
-.emotion-24 {
+.emotion-25 {
position: relative;
display: grid;
grid-template-areas: 'code panel';
@@ -541,8 +541,8 @@ exports[`CodeIO renders correctly 1`] = `
grid-template-areas: 'code code';
}
-.emotion-24:before,
-.emotion-24:after {
+.emotion-25:before,
+.emotion-25:after {
content: '';
display: block;
position: absolute;
@@ -556,20 +556,20 @@ exports[`CodeIO renders correctly 1`] = `
transition: box-shadow 100ms ease-in-out;
}
-.emotion-24:before {
+.emotion-25:before {
grid-column: 1;
left: -40px;
}
-.emotion-24:after {
+.emotion-25:after {
grid-column: 2;
}
-.emotion-24:after {
+.emotion-25:after {
grid-column: -1;
}
-.emotion-25 {
+.emotion-26 {
grid-area: code;
overflow-x: auto;
border-radius: inherit;
@@ -602,45 +602,45 @@ exports[`CodeIO renders correctly 1`] = `
}
@media only screen and (max-device-width: 812px) and (-webkit-min-device-pixel-ratio: 2) {
- .emotion-25 {
+ .emotion-26 {
white-space: pre-wrap;
}
}
@media only screen and (min-device-width: 813px) and (-webkit-min-device-pixel-ratio: 2) {
- .emotion-25 {
+ .emotion-26 {
white-space: pre;
}
}
-.emotion-25:focus-visible {
+.emotion-26:focus-visible {
outline: none;
box-shadow: 0 0 0 2px #0498EC inset;
}
-.emotion-28 {
+.emotion-29 {
background-color: transparent;
background-image: linear-gradient(90deg, #1C2D38, #001E2B);
background-attachment: fixed;
}
-.emotion-28>td {
+.emotion-29>td {
border-top: 1px solid #1C2D38;
}
-.emotion-28+tr>td {
+.emotion-29+tr>td {
border-top: 1px solid #1C2D38;
}
-.emotion-28+.emotion-28>td {
+.emotion-29+.emotion-29>td {
border-top: 0;
}
-.emotion-28:last-child>td {
+.emotion-29:last-child>td {
border-bottom: 1px solid #1C2D38;
}
-.emotion-29 {
+.emotion-30 {
border-spacing: 0;
vertical-align: top;
padding: 0 16px;
@@ -657,6 +657,11 @@ exports[`CodeIO renders correctly 1`] = `
+
@@ -766,44 +771,53 @@ exports[`CodeIO renders correctly 1`] = `
+
-
-
-
-
-
-
+ |
+
- 1
-
-
- hello world
- |
-
-
-
-
-
+
+ 1
+ |
+
+ hello world
+ |
+
+
+
+
+
+
diff --git a/tests/unit/__snapshots__/Collapsible.test.js.snap b/tests/unit/__snapshots__/Collapsible.test.js.snap
index a8be9e6ed..86da7511f 100644
--- a/tests/unit/__snapshots__/Collapsible.test.js.snap
+++ b/tests/unit/__snapshots__/Collapsible.test.js.snap
@@ -589,6 +589,11 @@ exports[`collapsible component renders all the content in the options and childr
>
This is collapsible content
+
diff --git a/tests/unit/__snapshots__/LiteralInclude.test.js.snap b/tests/unit/__snapshots__/LiteralInclude.test.js.snap
index 3fb0fb180..f55e71ab2 100644
--- a/tests/unit/__snapshots__/LiteralInclude.test.js.snap
+++ b/tests/unit/__snapshots__/LiteralInclude.test.js.snap
@@ -2,6 +2,11 @@
exports[`renders correctly 1`] = `
+
.emotion-0 {
display: table;
margin: 24px 0;
diff --git a/tests/unit/__snapshots__/ReleaseSpecification.test.js.snap b/tests/unit/__snapshots__/ReleaseSpecification.test.js.snap
index 2731a55ee..f812ed02a 100644
--- a/tests/unit/__snapshots__/ReleaseSpecification.test.js.snap
+++ b/tests/unit/__snapshots__/ReleaseSpecification.test.js.snap
@@ -2,6 +2,11 @@
exports[`renders correctly 1`] = `
+
.emotion-0 {
display: table;
margin: 24px 0;
diff --git a/tests/unit/__snapshots__/Video.test.js.snap b/tests/unit/__snapshots__/Video.test.js.snap
index 71675fe8d..1339d9499 100644
--- a/tests/unit/__snapshots__/Video.test.js.snap
+++ b/tests/unit/__snapshots__/Video.test.js.snap
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
-exports[`DailyMotion video renders correctly 1`] = ``;
+exports[`DailyMotion video renders null 1`] = ``;
-exports[`Vimeo video renders correctly 1`] = ``;
+exports[`Vimeo video renders null 1`] = ``;
exports[`Wistia video renders correctly 1`] = `
diff --git a/tests/unit/utils/__snapshots__/structured-data.test.js.snap b/tests/unit/utils/__snapshots__/structured-data.test.js.snap
new file mode 100644
index 000000000..e48583bfd
--- /dev/null
+++ b/tests/unit/utils/__snapshots__/structured-data.test.js.snap
@@ -0,0 +1,101 @@
+// Jest Snapshot v1, https://goo.gl/fbAQLP
+
+exports[`Structured Data HowTo Structured Data converts steps into expected structured data format 1`] = `
+HowToSd {
+ "@context": "https://schema.org",
+ "@type": "HowTo",
+ "image": "https://webimages.mongodb.com/_com_assets/cms/kuyj2focmkbxv7gh3-stacked_default_slate_blue.svg?auto=format%252Ccompress",
+ "name": undefined,
+ "steps": [
+ {
+ "@type": "HowToStep",
+ "name": "In Atlas, go to your federated database instance for your project.",
+ "text": "If it's not already displayed, select the
+organization that contains your project from the
+ Organizations menu in the navigation bar.If it's not already displayed, select your project
+from the Projects menu in the navigation bar.In the sidebar, click Data Federation under
+the Services heading.The Data Federation page displays.",
+ },
+ {
+ "@type": "HowToStep",
+ "name": "Click Create Federated Database Instance.",
+ "text": "If you have an existing federated database instance, instead click
+Create Federated Database in the
+top right corner of the dashboard.",
+ },
+ {
+ "@type": "HowToSection",
+ "itemListElement": [
+ {
+ "@type": "HowToStep",
+ "name": "Rename the default collection.",
+ "text": "Click next to the default collection
+VirtualCollection0 to edit its name. For this tutorial,
+rename your collection Sessions.",
+ },
+ {
+ "@type": "HowToStep",
+ "name": "Create a second collection.",
+ "text": "Click next to the default name
+VirtualDatabase0 to add a collection to the database.
+For this tutorial, name your new collection Users.",
+ },
+ {
+ "@type": "HowToStep",
+ "name": "Add data to your virtual database.",
+ "text": "Drag and drop the following data sources into the
+respective federated database instance virtual collections:/mflix/sessions.json, into the Sessions
+collection, and/mflix/users.json into the Users collection.",
+ },
+ ],
+ "name": "Connect to a Data Source and add sample data to your federated database instance.",
+ },
+ {
+ "@type": "HowToStep",
+ "name": "Click Save.",
+ "text": "Your federated database instance appears on the Data Federation page.",
+ },
+ ],
+}
+`;
+
+exports[`Structured Data SoftwareSourceCode returns valid structured data with programmingLanguage 1`] = `
+SoftwareSourceCodeSd {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "codeSampleType": "code snippet",
+ "text": "print("hello world")",
+}
+`;
+
+exports[`Structured Data SoftwareSourceCode returns valid structured data without programmingLangauge 1`] = `
+SoftwareSourceCodeSd {
+ "@context": "https://schema.org",
+ "@type": "SoftwareSourceCode",
+ "codeSampleType": "code snippet",
+ "text": "print("hello world")",
+}
+`;
+
+exports[`Structured Data VideoObject returns valid structured data with description 1`] = `
+VideoObjectSd {
+ "@context": "https://schema.org",
+ "@type": "VideoObject",
+ "description": "Learn more about indexes in Atlas Search",
+ "embedUrl": "https://www.youtube.com/embed/XrJG994YxD8",
+ "name": "Mastering Indexing for Perfect Query Matching",
+ "thumbnailUrl": "https://i.ytimg.com/vi/XrJG994YxD8/maxresdefault.jpg",
+ "uploadDate": "2023-11-08T05:00:28-08:00",
+}
+`;
+
+exports[`Structured Data VideoObject returns valid structured data without description 1`] = `
+VideoObjectSd {
+ "@context": "https://schema.org",
+ "@type": "VideoObject",
+ "embedUrl": "https://www.youtube.com/embed/XrJG994YxD8",
+ "name": "Mastering Indexing for Perfect Query Matching",
+ "thumbnailUrl": "https://i.ytimg.com/vi/XrJG994YxD8/maxresdefault.jpg",
+ "uploadDate": "2023-11-08T05:00:28-08:00",
+}
+`;
diff --git a/tests/unit/utils/structured-data.test.js b/tests/unit/utils/structured-data.test.js
new file mode 100644
index 000000000..17184dfe4
--- /dev/null
+++ b/tests/unit/utils/structured-data.test.js
@@ -0,0 +1,53 @@
+import { SoftwareSourceCodeSd, VideoObjectSd, constructHowToSd } from '../../../src/utils/structured-data';
+import stepsData from '../../utils/data/how-to-structured-data.json';
+
+describe('Structured Data', () => {
+ describe('HowTo Structured Data', () => {
+ it('converts steps into expected structured data format', () => {
+ const howToSd = constructHowToSd({ steps: stepsData });
+ expect(howToSd).toMatchSnapshot();
+ });
+ });
+
+ describe('SoftwareSourceCode', () => {
+ it('returns valid structured data with programmingLanguage', () => {
+ const code = 'print("hello world")';
+ const lang = 'py';
+ const softwareSourceCodeSd = new SoftwareSourceCodeSd({ code, lang });
+ expect(softwareSourceCodeSd.isValid()).toBeTruthy();
+ expect(softwareSourceCodeSd).toMatchSnapshot();
+ });
+
+ it('returns valid structured data without programmingLangauge', () => {
+ const code = 'print("hello world")';
+ const softwareSourceCodeSd = new SoftwareSourceCodeSd({ code });
+ expect(softwareSourceCodeSd.isValid()).toBeTruthy();
+ expect(softwareSourceCodeSd).toMatchSnapshot();
+ });
+ });
+
+ describe('VideoObject', () => {
+ const embedUrl = 'https://www.youtube.com/embed/XrJG994YxD8';
+ const name = 'Mastering Indexing for Perfect Query Matching';
+ const uploadDate = '2023-11-08T05:00:28-08:00';
+ const thumbnailUrl = 'https://i.ytimg.com/vi/XrJG994YxD8/maxresdefault.jpg';
+ const description = 'Learn more about indexes in Atlas Search';
+
+ it('returns valid structured data with description', () => {
+ const videoObjectSd = new VideoObjectSd({ embedUrl, name, uploadDate, thumbnailUrl, description });
+ expect(videoObjectSd.isValid()).toBeTruthy();
+ expect(videoObjectSd).toMatchSnapshot();
+ });
+
+ it('returns valid structured data without description', () => {
+ const videoObjectSd = new VideoObjectSd({ embedUrl, name, uploadDate, thumbnailUrl });
+ expect(videoObjectSd.isValid()).toBeTruthy();
+ expect(videoObjectSd).toMatchSnapshot();
+ });
+
+ it('returns invalid structured data with missing name field', () => {
+ const videoObjectSd = new VideoObjectSd({ embedUrl, uploadDate, thumbnailUrl, description });
+ expect(videoObjectSd.isValid()).toBeFalsy();
+ });
+ });
+});
diff --git a/tests/utils/data/how-to-structured-data.json b/tests/utils/data/how-to-structured-data.json
new file mode 100644
index 000000000..0448552dd
--- /dev/null
+++ b/tests/utils/data/how-to-structured-data.json
@@ -0,0 +1,1020 @@
+[
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "In "
+ },
+ {
+ "type": "substitution_reference",
+ "children": [
+ {
+ "type": "text",
+ "value": "Atlas"
+ }
+ ],
+ "name": "service"
+ },
+ {
+ "type": "text",
+ "value": ", go to your federated database instance for your project."
+ }
+ ],
+ "id": "in---go-to-your-federated-database-instance-for-your-project."
+ },
+ {
+ "type": "list",
+ "children": [
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "If it's not already displayed, select the\norganization that contains your project from the\n"
+ },
+ {
+ "type": "substitution_reference",
+ "children": [
+ {
+ "type": "role",
+ "children": [],
+ "domain": "",
+ "name": "icon-mms",
+ "target": "office",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Organizations"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " menu"
+ }
+ ],
+ "name": "ui-org-menu"
+ },
+ {
+ "type": "text",
+ "value": " in the navigation bar."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "If it's not already displayed, select your project\nfrom the "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Projects"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " menu in the navigation bar."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "In the sidebar, click "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Data Federation"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " under\nthe "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Services"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " heading."
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "The "
+ },
+ {
+ "type": "reference",
+ "children": [
+ {
+ "type": "text",
+ "value": "Data Federation"
+ }
+ ],
+ "refuri": "https://cloud.mongodb.com/go?l=https%3A%2F%2Fcloud.mongodb.com%2Fv2%2F%3Cproject%3E%23%2FdataFederation"
+ },
+ {
+ "type": "text",
+ "value": " page displays."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "enumtype": "loweralpha"
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 0
+ }
+ },
+ "value": "In "
+ },
+ {
+ "type": "substitution_reference",
+ "position": {
+ "start": {
+ "line": 0
+ }
+ },
+ "children": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 0
+ }
+ },
+ "value": "Atlas"
+ }
+ ],
+ "name": "service"
+ },
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 0
+ }
+ },
+ "value": ", go to your federated database instance for your project."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Create Federated Database Instance"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ],
+ "id": "click-create-federated-database-instance."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "If you have an existing federated database instance, instead click\n"
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Create Federated Database"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " in the\ntop right corner of the dashboard."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 5
+ }
+ },
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "position": {
+ "start": {
+ "line": 5
+ }
+ },
+ "children": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 5
+ }
+ },
+ "value": "Create Federated Database Instance"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 5
+ }
+ },
+ "value": "."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Connect to a Data Source and add sample data to your federated database instance."
+ }
+ ],
+ "id": "connect-to-a-data-source-and-add-sample-data-to-your-federated-database-instance."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "You can use a sample dataset to start exploring\nAtlas SQL through Atlas Data Federation without configuring a data source\nyourself. This tutorial references a specific sample dataset."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "To connect to your own data instead, click\n"
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Add Data Sources"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": ". To learn more about\nconfiguring different types of data sources, see\n"
+ },
+ {
+ "type": "ref_role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Define Data Stores for a Federated Database Instance"
+ }
+ ],
+ "domain": "std",
+ "name": "label",
+ "target": "config-adf",
+ "flag": "",
+ "fileid": ["data-federation/config/config-data-stores", "std-label-config-adf"]
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ]
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "If you want to configure data from a "
+ },
+ {
+ "type": "substitution_reference",
+ "children": [
+ {
+ "type": "text",
+ "value": "Atlas"
+ }
+ ],
+ "name": "service"
+ },
+ {
+ "type": "text",
+ "value": " cluster, you\nmust use MongoDB version 5.0 or greater for that cluster to\ntake advantage of Atlas SQL."
+ }
+ ]
+ }
+ ],
+ "domain": "",
+ "name": "note",
+ "argument": []
+ },
+ {
+ "type": "list",
+ "children": [
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Add Sample Data"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Select "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "AWS S3"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": " from the "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Filter"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " dropdown if it\nisn't selected already."
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Expand the "
+ },
+ {
+ "type": "substitution_reference",
+ "children": [
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "S3 (Simple Storage Service)"
+ }
+ ],
+ "domain": "",
+ "name": "abbr",
+ "target": "",
+ "flag": ""
+ }
+ ],
+ "name": "s3"
+ },
+ {
+ "type": "text",
+ "value": " store "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "sample-data-atlas-data-lake"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": "\nif it isn't expanded already."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "enumtype": "loweralpha"
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "For this tutorial, configure your federated database instance as follows using the\n"
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Federated Database Instance"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " panel:"
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Rename the default collection."
+ }
+ ],
+ "id": "rename-the-default-collection."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "children": [],
+ "domain": "",
+ "name": "icon-fa4",
+ "target": "pencil",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " next to the default collection\n"
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "VirtualCollection0"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": " to edit its name. For this tutorial,\nrename your collection "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "Sessions"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 42
+ }
+ },
+ "value": "Rename the default collection."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Create a second collection."
+ }
+ ],
+ "id": "create-a-second-collection."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "children": [],
+ "domain": "",
+ "name": "icon-fa4",
+ "target": "plus-square",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " next to the default name\n"
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "VirtualDatabase0"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": " to add a collection to the database.\nFor this tutorial, name your new collection "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "Users"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 48
+ }
+ },
+ "value": "Create a second collection."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Add data to your virtual database."
+ }
+ ],
+ "id": "add-data-to-your-virtual-database."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Drag and drop the following data sources into the\nrespective federated database instance virtual collections:"
+ }
+ ]
+ },
+ {
+ "type": "list",
+ "children": [
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "/mflix/sessions.json"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": ", into the "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "Sessions"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": "\ncollection, and"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "listItem",
+ "children": [
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "/mflix/users.json"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": " into the "
+ },
+ {
+ "type": "literal",
+ "children": [
+ {
+ "type": "text",
+ "value": "Users"
+ }
+ ]
+ },
+ {
+ "type": "text",
+ "value": " collection."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "enumtype": "unordered"
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 54
+ }
+ },
+ "value": "Add data to your virtual database."
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "procedure",
+ "argument": [],
+ "options": {
+ "style": "normal"
+ }
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 11
+ }
+ },
+ "value": "Connect to a Data Source and add sample data to your federated database instance."
+ }
+ ]
+ },
+ {
+ "type": "directive",
+ "children": [
+ {
+ "type": "section",
+ "children": [
+ {
+ "type": "heading",
+ "children": [
+ {
+ "type": "text",
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Save"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": "."
+ }
+ ],
+ "id": "click-save."
+ },
+ {
+ "type": "paragraph",
+ "children": [
+ {
+ "type": "text",
+ "value": "Your federated database instance appears on the "
+ },
+ {
+ "type": "role",
+ "children": [
+ {
+ "type": "text",
+ "value": "Data Federation"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "value": " page."
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "domain": "mongodb",
+ "name": "step",
+ "argument": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 63
+ }
+ },
+ "value": "Click "
+ },
+ {
+ "type": "role",
+ "position": {
+ "start": {
+ "line": 63
+ }
+ },
+ "children": [
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 63
+ }
+ },
+ "value": "Save"
+ }
+ ],
+ "domain": "",
+ "name": "guilabel",
+ "target": "",
+ "flag": ""
+ },
+ {
+ "type": "text",
+ "position": {
+ "start": {
+ "line": 63
+ }
+ },
+ "value": "."
+ }
+ ]
+ }
+]