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.
26
8
27
9
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 ] ,
56
13
} ) ;
57
14
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
+ } ) ;
64
18
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
+ } ) ;
67
37
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
+ } ) ;
72
42
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
+ } ) ;
77
49
78
- expect ( myObject . nullableCounter ?. value ) . toBe ( 0 )
50
+ const myID = siteVisitTracker . _id ;
51
+ expect ( siteVisitTracker . nullableSiteVisits ?. value ) . toBe ( 0 ) ;
79
52
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
+ ) ;
80
68
} ) ;
81
69
82
- test ( "testing filtering" , async ( ) => {
70
+ expect ( siteVisitTracker . nullableSiteVisits ?. value ) . toBe ( 0 ) ;
71
+ } ) ;
83
72
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
+ } ) ;
88
77
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
+ } ) ;
92
81
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
+ } ) ;
96
85
97
- const allObjects = realm . objects ( 'myClass' ) ;
86
+ const aboveThreshold = realm . write ( ( ) => {
87
+ return realm . create ( SiteVisitTracker , { siteVisits : 2 } ) ;
88
+ } ) ;
98
89
99
- let filteredObjects = allObjects . filtered ( 'counter >= $0' , atThreshold . myCounter . value ) ;
100
- // :snippet-end:
90
+ const allObjects = realm . objects ( "SiteVisitTracker" ) ;
101
91
102
- let unfilteredExpected = [ belowThreshold , atThreshold , aboveThreshold ]
103
- let filteredExpected = [ atThreshold , aboveThreshold ]
92
+ let filteredObjects = allObjects . filtered (
93
+ "siteVisits >= $0" ,
94
+ atThreshold . siteVisits . value
95
+ ) ;
104
96
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 ] ;
107
99
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