Skip to content

Commit aa257d0

Browse files
committed
Merge branch 'master' of github.com:mongodb/docs-realm into dart_tests
2 parents 4a18763 + 3c909ae commit aa257d0

File tree

40 files changed

+1160
-534
lines changed

40 files changed

+1160
-534
lines changed

.github/pull_request_template.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
Jira ticket: https://jira.mongodb.org/browse/DOCSP-NNNNN
44

5-
*Staged Page*
6-
7-
- [PAGE_NAME](https://docs-mongodbcom-staging.corp.mongodb.com/realm/docsworker-xlarge/BRANCH_NAME/)
5+
### Staging Links
6+
<!-- start insert-links -->
7+
-
8+
<!-- end insert-links -->
89

910
*Page Source*
1011

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
name: Add Netlify Links To Changed Pages
2+
on:
3+
workflow_call:
4+
pull_request_target:
5+
jobs:
6+
get-pr-changes:
7+
name: Get Changed Files & Update PR Description
8+
runs-on: ubuntu-latest
9+
permissions:
10+
issues: write
11+
contents: write
12+
pull-requests: write
13+
repository-projects: write
14+
steps:
15+
- uses: actions/checkout@v4
16+
- name: Get Changed Files
17+
id: changed-files
18+
uses: tj-actions/changed-files@v44
19+
with:
20+
separator: ","
21+
files: source/**
22+
- name: Build Netlify Links for Changed Pages
23+
id: build_page_links
24+
run: |
25+
new_links=""
26+
base_link='https://deploy-preview-${{ github.event.number }}--docs-realm.netlify.app'
27+
changed_files=${{ steps.changed-files.outputs.all_changed_files }}
28+
files=$(echo $changed_files | tr "," "\n")
29+
for file in $files; do
30+
echo "processing ${file}"
31+
if (! grep -s "includes/" <<< $file) &&
32+
(! grep -s "images/" <<< $file) &&
33+
(! grep -s "examples/" <<< $file); then
34+
file="${file#source}"
35+
file="${file%.txt}"
36+
filenoslash="${file:1}"
37+
echo "${base_link}${file}"
38+
new_links+="<li><a href=${base_link}${file}>${filenoslash}</a></li>"
39+
else
40+
echo "(file skipped)"
41+
fi
42+
done
43+
if [ "$new_links" == "" ]; then
44+
new_links="No pages to preview"
45+
fi
46+
echo "Final new_links string: "
47+
echo "${new_links}"
48+
echo "staging_links=${new_links}" >> "$GITHUB_OUTPUT"
49+
- name: Update the PR Description
50+
uses: MongoCaleb/pr-description-action@master
51+
with:
52+
regex: "<!-- start insert-links -->.*<!-- end insert-links -->"
53+
appendContentOnMatchOnly: true
54+
regexFlags: is
55+
content: "<!-- start insert-links -->\n${{ steps.build_page_links.outputs.staging_links }}\n<!-- end insert-links -->"
56+
token: ${{ secrets.GITHUB_TOKEN }}

docs-release-notes.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
# August 2, 2024
2+
3+
## .NET SDK
4+
5+
- Create
6+
- New C# API descriptions for "Create an unmanaged copy of an object" and "Copy an object to another database" advising developers to use third-party libraries for this functionality.
7+
- Fix typo of incorrect .NET SDK version
8+
9+
## React Native SDK
10+
11+
- Fix typo per reported feedback.
12+
13+
## Other
14+
15+
- Fix the jest node test (for v12) CI, so it fails when jest tests fail.
16+
- Re-add path to Node v12 tests. Update RN tests to use same logic as Node. Clean up legacy node tests. Use ``checkout@4`` to remove warnings.
17+
118
# July 26, 2024
219

320
## Flutter SDK

examples/node/v12/__tests__/configure-and-open-synced-realm.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ describe("Configure & Open a Synced Realm", () => {
5858
});
5959
});
6060

61+
// Make sure realm is empty
62+
realm.write(() => {
63+
realm.deleteAll();
64+
});
65+
6166
const dogs = realm.objects(Doggie);
6267

6368
await realm.syncSession?.downloadAllServerChanges();

examples/node/v12/__tests__/configure-and-open-synced-realm.test.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Realm, { BSON, Credentials, ObjectSchema } from "realm";
2-
import { APP_ID } from "../config";
2+
import { APP_ID } from "../config.ts";
33

44
describe("Configure & Open a Synced Realm", () => {
55
test("test cancelWaitsOnNonFatalError is valid config", async () => {
@@ -65,6 +65,11 @@ describe("Configure & Open a Synced Realm", () => {
6565
});
6666
});
6767

68+
// Make sure realm is empty
69+
realm.write(() => {
70+
realm.deleteAll();
71+
});
72+
6873
const dogs = realm.objects<Doggie>(Doggie);
6974

7075
// :snippet-start: wait-for-download
Lines changed: 88 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,109 +1,107 @@
1-
import Realm, { BSON, Counter, ObjectSchema, UpdateMode } from "realm";
2-
3-
// :snippet-start:declare-counter-schema
4-
class myClass extends Realm.Object {
5-
_id!;
6-
myCounter!;
7-
nullableCounter;
8-
9-
static schema = {
10-
name: "myClass",
11-
primaryKey: "_id",
12-
properties: {
13-
_id: { type: "objectId", default: () => new BSON.ObjectId() },
14-
myCounter: { type: "int", presentation: "counter" },
15-
// or myCounter: "counter"
16-
nullableCounter: { type: "int", presentation: "counter", optional: true },
17-
// or nullableCounter: "counter?"
18-
},
19-
}
20-
};
21-
// :snippet-end:
22-
23-
const realm = await Realm.open({
24-
schema: [myClass],
25-
});
1+
import Realm, { UpdateMode } from "realm";
2+
3+
import { SiteVisitTracker } from "./models/models.js";
4+
5+
// This test exists to ensure that the JS model definition works that same way
6+
// as the TS model definition. There are no snippets generated from this file,
7+
// as it's the exact same code as what's in the TS file.
268

279
describe("Counter Updates", () => {
28-
test("testing normal methods", async () => {
29-
30-
// :snippet-start:initialize-counter
31-
const myObject = realm.write(() => {
32-
return realm.create( myClass, { myCounter: 0 } );
33-
});
34-
// :snippet-end:
35-
36-
realm.write(() => {
37-
// :snippet-start:update-counter
38-
myObject.myCounter.increment();
39-
myObject.myCounter.value; // 1
40-
expect(myObject.myCounter.value).toBe(1) // :remove:
41-
myObject.myCounter.increment(2);
42-
myObject.myCounter.value; // 3
43-
expect(myObject.myCounter.value).toBe(3) // :remove:
44-
myObject.myCounter.decrement(2);
45-
myObject.myCounter.value; // 1
46-
expect(myObject.myCounter.value).toBe(1) // :remove:
47-
myObject.myCounter.increment(-2);
48-
myObject.myCounter.value; // -1
49-
expect(myObject.myCounter.value).toBe(-1) // :remove:
50-
myObject.myCounter.set(0); // reset counter value to 0
51-
// :snippet-end:
52-
expect(myObject.myCounter.value).toBe(0)
53-
});
54-
55-
realm.close()
10+
test("testing normal methods", async () => {
11+
const realm = await Realm.open({
12+
schema: [SiteVisitTracker],
5613
});
5714

58-
test("testing nullability switching", async () => {
59-
60-
// :snippet-start:null-updating
61-
const myObject = realm.write(() => {
62-
return realm.create( myClass, { nullableCounter: 0 } );
63-
});
15+
const siteVisitTracker = realm.write(() => {
16+
return realm.create(SiteVisitTracker, { siteVisits: 0 });
17+
});
6418

65-
const myID = myObject._id
66-
expect(myObject.nullableCounter?.value).toBe(0) // :remove:
19+
realm.write(() => {
20+
siteVisitTracker.siteVisits.increment();
21+
siteVisitTracker.siteVisits.value; // 1
22+
expect(siteVisitTracker.siteVisits.value).toBe(1);
23+
siteVisitTracker.siteVisits.increment(2);
24+
siteVisitTracker.siteVisits.value; // 3
25+
expect(siteVisitTracker.siteVisits.value).toBe(3);
26+
siteVisitTracker.siteVisits.decrement(2);
27+
siteVisitTracker.siteVisits.value; // 1
28+
expect(siteVisitTracker.siteVisits.value).toBe(1);
29+
siteVisitTracker.siteVisits.increment(-2);
30+
siteVisitTracker.siteVisits.value; // -1
31+
expect(siteVisitTracker.siteVisits.value).toBe(-1);
32+
siteVisitTracker.siteVisits.set(0); // reset counter value to 0
33+
34+
expect(siteVisitTracker.siteVisits.value).toBe(0);
35+
});
36+
});
6737

68-
realm.write(() => {
69-
realm.create( myClass, { _id: myID, nullableCounter: null }, UpdateMode.Modified );
70-
});
71-
expect(myObject.nullableCounter).toBe(null) // :remove:
38+
test("testing nullability switching", async () => {
39+
const realm = await Realm.open({
40+
schema: [SiteVisitTracker],
41+
});
7242

73-
realm.write(() => {
74-
realm.create( myClass, { _id: myID, nullableCounter: 0 }, UpdateMode.Modified );
75-
});
76-
// :snippet-end:
43+
const siteVisitTracker = realm.write(() => {
44+
return realm.create(SiteVisitTracker, {
45+
nullableSiteVisits: 0,
46+
siteVisits: 1,
47+
});
48+
});
7749

78-
expect(myObject.nullableCounter?.value).toBe(0)
50+
const myID = siteVisitTracker._id;
51+
expect(siteVisitTracker.nullableSiteVisits?.value).toBe(0);
7952

53+
realm.write(() => {
54+
realm.create(
55+
SiteVisitTracker,
56+
{ _id: myID, nullableSiteVisits: null },
57+
UpdateMode.Modified
58+
);
59+
});
60+
expect(siteVisitTracker.nullableSiteVisits).toBe(null);
61+
62+
realm.write(() => {
63+
realm.create(
64+
SiteVisitTracker,
65+
{ _id: myID, nullableSiteVisits: 0 },
66+
UpdateMode.Modified
67+
);
8068
});
8169

82-
test("testing filtering", async () => {
70+
expect(siteVisitTracker.nullableSiteVisits?.value).toBe(0);
71+
});
8372

84-
// :snippet-start:filtering-with-counter
85-
const belowThreshold = realm.write(() => {
86-
return realm.create( myClass, { myCounter: 0 } );
87-
});
73+
test("testing filtering", async () => {
74+
const realm = await Realm.open({
75+
schema: [SiteVisitTracker],
76+
});
8877

89-
const atThreshold = realm.write(() => {
90-
return realm.create( myClass, { myCounter: 1 } );
91-
});
78+
const belowThreshold = realm.write(() => {
79+
return realm.create(SiteVisitTracker, { siteVisits: 0 });
80+
});
9281

93-
const aboveThreshold = realm.write(() => {
94-
return realm.create( myClass, { myCounter: 2 } );
95-
});
82+
const atThreshold = realm.write(() => {
83+
return realm.create(SiteVisitTracker, { siteVisits: 1 });
84+
});
9685

97-
const allObjects = realm.objects('myClass');
86+
const aboveThreshold = realm.write(() => {
87+
return realm.create(SiteVisitTracker, { siteVisits: 2 });
88+
});
9889

99-
let filteredObjects = allObjects.filtered('counter >= $0', atThreshold.myCounter.value);
100-
// :snippet-end:
90+
const allObjects = realm.objects("SiteVisitTracker");
10191

102-
let unfilteredExpected = [belowThreshold, atThreshold, aboveThreshold]
103-
let filteredExpected = [atThreshold, aboveThreshold]
92+
let filteredObjects = allObjects.filtered(
93+
"siteVisits >= $0",
94+
atThreshold.siteVisits.value
95+
);
10496

105-
expect(JSON.stringify(allObjects)).toMatch(JSON.stringify(unfilteredExpected));
106-
expect(JSON.stringify(filteredObjects)).toMatch(JSON.stringify(filteredExpected));
97+
let unfilteredExpected = [belowThreshold, atThreshold, aboveThreshold];
98+
let filteredExpected = [atThreshold, aboveThreshold];
10799

108-
});
109-
});
100+
expect(JSON.stringify(allObjects)).toMatch(
101+
JSON.stringify(unfilteredExpected)
102+
);
103+
expect(JSON.stringify(filteredObjects)).toMatch(
104+
JSON.stringify(filteredExpected)
105+
);
106+
});
107+
});

0 commit comments

Comments
 (0)