1+ import '../helpers/global'
2+ import sandbox from '../helpers/sandbox'
3+
4+ const Backendless = sandbox . Backendless
5+
6+ describe ( 'User - Relations' , function ( ) {
7+ let consoleApi
8+ let appId
9+
10+ sandbox . forTest ( )
11+
12+ const createRelationColumn = ( tableName , columnName , toTableName , relationshipType ) => {
13+ return consoleApi . tables . createColumn ( appId , { name : tableName } , {
14+ dataType : 'DATA_REF' ,
15+ name : columnName ,
16+ toTableName,
17+ relationshipType
18+ } )
19+ }
20+
21+ beforeEach ( function ( ) {
22+ consoleApi = this . consoleApi
23+ appId = this . app . id
24+ } )
25+
26+ it ( 'Circular Users relations' , function ( ) {
27+ const usersStore = Backendless . Data . of ( Backendless . User )
28+
29+ let user1 = { email : 'user1@com' , password : '123456' }
30+ let user2 = { email : 'user2@com' , password : '123456' }
31+ let user3 = { email : 'user3@com' , password : '123456' }
32+ let user4 = { email : 'user4@com' , password : '123456' }
33+ let user5 = { email : 'user5@com' , password : '123456' }
34+ let user6 = { email : 'user6@com' , password : '123456' }
35+
36+ return Promise . resolve ( )
37+ . then ( ( ) => {
38+ return Promise . resolve ( )
39+ . then ( ( ) => usersStore . save ( user1 ) )
40+ . then ( ( ) => usersStore . save ( user2 ) )
41+ . then ( ( ) => usersStore . save ( user3 ) )
42+ . then ( ( ) => usersStore . save ( user4 ) )
43+ . then ( ( ) => usersStore . save ( user5 ) )
44+ . then ( ( ) => usersStore . save ( user6 ) )
45+ . then ( ( ) => usersStore . find ( Backendless . DataQueryBuilder . create ( ) . setSortBy ( 'created' ) ) )
46+ } )
47+ . then ( users => {
48+ user1 = users [ 0 ]
49+ user2 = users [ 1 ]
50+ user3 = users [ 2 ]
51+ user4 = users [ 3 ]
52+ user5 = users [ 4 ]
53+ user6 = users [ 5 ]
54+ } )
55+ . then ( ( ) => {
56+ return Promise . all ( [
57+ createRelationColumn ( 'Users' , 'friends' , 'Users' , 'ONE_TO_MANY' ) ,
58+ createRelationColumn ( 'Users' , 'blocked' , 'Users' , 'ONE_TO_MANY' ) ,
59+ ] )
60+ } )
61+ . then ( ( ) => {
62+ return Promise . all ( [
63+ usersStore . addRelation ( user1 . objectId , 'friends' , [ user2 , user3 , user6 ] ) ,
64+ usersStore . addRelation ( user1 . objectId , 'blocked' , [ user2 , user3 , user4 , user5 ] ) ,
65+ ] )
66+ } )
67+ . then ( ( ) => {
68+ const query = Backendless . DataQueryBuilder
69+ . create ( )
70+ . setWhereClause ( `objectId = '${ user1 . objectId } '` )
71+ . setRelated ( [ 'friends' , 'blocked' ] )
72+ . setSortBy ( 'created' )
73+
74+ return Backendless . Data . of ( 'Users' ) . find ( query )
75+ } )
76+ . then ( users => {
77+ expect ( users [ 0 ] . objectId ) . to . be . equal ( user1 . objectId )
78+
79+ expect ( users [ 0 ] . friends . length ) . to . be . equal ( 3 )
80+ expect ( users [ 0 ] . blocked . length ) . to . be . equal ( 4 )
81+
82+ const friendsUser2 = users [ 0 ] . friends . find ( o => o . objectId === user2 . objectId )
83+ const friendsUser3 = users [ 0 ] . friends . find ( o => o . objectId === user3 . objectId )
84+ const friendsUser6 = users [ 0 ] . friends . find ( o => o . objectId === user6 . objectId )
85+
86+ const blockedUser2 = users [ 0 ] . blocked . find ( o => o . objectId === user2 . objectId )
87+ const blockedUser3 = users [ 0 ] . blocked . find ( o => o . objectId === user3 . objectId )
88+ const blockedUser4 = users [ 0 ] . blocked . find ( o => o . objectId === user4 . objectId )
89+ const blockedUser5 = users [ 0 ] . blocked . find ( o => o . objectId === user5 . objectId )
90+
91+ expect ( friendsUser2 . objectId ) . to . be . equal ( user2 . objectId )
92+ expect ( friendsUser3 . objectId ) . to . be . equal ( user3 . objectId )
93+ expect ( friendsUser6 . objectId ) . to . be . equal ( user6 . objectId )
94+
95+ expect ( blockedUser2 . objectId ) . to . be . equal ( user2 . objectId )
96+ expect ( blockedUser3 . objectId ) . to . be . equal ( user3 . objectId )
97+ expect ( blockedUser4 . objectId ) . to . be . equal ( user4 . objectId )
98+ expect ( blockedUser5 . objectId ) . to . be . equal ( user5 . objectId )
99+
100+ expect ( friendsUser2 ) . to . be . equal ( blockedUser2 )
101+ expect ( friendsUser3 ) . to . be . equal ( blockedUser3 )
102+ } )
103+ } )
104+ } )
0 commit comments