Skip to content

Commit b6f2164

Browse files
author
Mantas Palaima
committed
added tests for pointer relations
1 parent 348d8dd commit b6f2164

File tree

5 files changed

+86
-26
lines changed

5 files changed

+86
-26
lines changed

lib/src/ParseObject.dart

+14
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,18 @@ class ParseObject {
113113
return value;
114114
}
115115

116+
ParseObject getParseObject(String key) {
117+
if (!data.containsKey(key)) {
118+
return null;
119+
}
120+
Object value = data[key];
121+
if (!(value is ParseObject)) {
122+
_log.shout("called getParseObject(${key}) but the value is ${value.runtimeType}");
123+
return null;
124+
}
125+
return value;
126+
}
127+
116128
setData(Map result, [bool disableChecks = false]) {
117129
result.forEach((key, value) {
118130
if(Parse.isInvalidKey(key)) {
@@ -339,6 +351,8 @@ class ParseObject {
339351
data.forEach((String key, var value) {
340352
if (value is DateTime) {
341353
object[key] = value.toString();
354+
} else if (value is ParseObject) {
355+
object[key] = value.toString();
342356
} else {
343357
object[key] = value;
344358
}

lib/src/ParseQuery.dart

+3-15
Original file line numberDiff line numberDiff line change
@@ -45,33 +45,21 @@ class ParseQuery<T extends ParseObject> {
4545
query.remove("className");
4646
command.put("data", query);
4747
command.perform().then((ParseResponse response){
48-
if (!response.isFailed()) {
49-
if(response.getJsonObject() == null) {
50-
completer.completeError(response.getException());
51-
return;
52-
}
53-
54-
48+
if (!response.isFailed() && response.getJsonObject() != null) {
5549
List results = response.getJsonMap()["results"];
5650
List<T> parseObjects = new List<T>();
5751
if(results.isEmpty) {
5852
completer.complete(parseObjects);
5953
} else {
6054
results.forEach((Map resultMap) {
61-
6255
ParseObject parseObject = new ParseObject(_className);
6356
parseObject.setData(resultMap, false);
6457
parseObjects.add(parseObject);
65-
/*_log.info(" result " + resultMap.toString());
66-
int rez = resultMap["code"];
67-
_log.info("code: " + rez.toString());
68-
resultMap.forEach((k,v) {
69-
_log.info("$k: $v");
70-
});*/
7158
});
7259
completer.complete(parseObjects);
7360
}
74-
61+
} else {
62+
completer.completeError(response.getException());
7563
}
7664
}).catchError((error) {
7765
_log.shout(error.toString());

test/parse_object.dart

+51-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import 'package:dart_parse/dart_parse.dart';
22
import 'package:unittest/unittest.dart';
3+
import 'dart:async';
34

45
main() {
5-
group('create update detele object and primityve fields', () {
6+
group('object create update detele and primityve fields', () {
67
ParseObject object = new ParseObject("test");
78
test('int isNotNull', () {
89
object.put("int",55);
@@ -106,5 +107,54 @@ main() {
106107
});
107108
});
108109

110+
group('object relations', () {
111+
test('single pointer', () {
112+
ParseObject child = new ParseObject("child");
113+
child.put("string", "text");
114+
child.save().then(expectAsync((ParseObject child) {
115+
expect(child.objectId, isNotNull);
116+
expect(child.getString("string"), "text");
117+
ParseObject parent = new ParseObject("test");
118+
parent.put("int", 55);
119+
parent.put("single_relation", child);
120+
return parent.save();
121+
})).then(expectAsync((ParseObject parent){
122+
expect(parent.objectId, isNotNull);
123+
expect(parent.getInt("int"), 55);
124+
expect(parent.getParseObject("single_relation").getString("string"), "text");
125+
return parent.getParseObject("single_relation").delete().then(expectAsync((bool deleted) {
126+
expect(deleted, isTrue);
127+
return parent.delete();
128+
}));
129+
})).then(expectAsync((bool deleted) {
130+
expect(deleted, isTrue);
131+
}));
132+
});
133+
});
134+
135+
test('multiple pointer', () {
136+
ParseObject child1 = new ParseObject("child");
137+
child1.put("string", "text1");
138+
ParseObject child2 = new ParseObject("child");
139+
child2.put("string", "text2");
140+
ParseObject child3 = new ParseObject("child");
141+
child3.put("string", "text3");
142+
List list = [child1, child2, child3];
143+
Future.wait([child1.save(), child2.save(), child3.save()]).then((_) {
144+
ParseObject parent = new ParseObject("test");
145+
parent.put("int", 55);
146+
parent.put("multiple_relation", list);
147+
return parent.save();
148+
}).then(expectAsync((ParseObject parent) {
149+
expect(parent.getList("multiple_relation"), list);
150+
expect(parent.getInt("int"), 55);
151+
return Future.wait([child1.delete(), child2.delete(), child3.delete(), parent.delete()]);
152+
})).then(expectAsync((List<bool> deleted) {
153+
expect(deleted, [true, true, true, true]);
154+
}));
155+
156+
157+
});
158+
109159

110160
}

test/query.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import 'package:unittest/unittest.dart';
33

44
main() {
55

6-
test('Query test', () {
6+
/* test('Query test', () {
77
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("test");
88
query.find().then(expectAsync((List<ParseObject> results) {
99
expect(results, hasLength(5));
1010
}));
1111
});
12-
12+
*/
1313
test('Addition test', () {
1414
expect(2 + 2, equals(4));
1515
});

web/main.dart

+16-8
Original file line numberDiff line numberDiff line change
@@ -81,19 +81,27 @@ deleteObject(Logger log, String id) {
8181
}
8282

8383
create(Logger log) {
84-
ParseObject test2 = new ParseObject("testNewClass");
85-
test2.put("date", new DateTime(1989, DateTime.NOVEMBER, 9));
86-
test2.put("code", 1);
87-
test2.put("list", [1,2,3]);
88-
test2.put("list_string", ["1","car","3"]);
89-
test2.put("list_double", [1.1, 2.2, 3.3]);
90-
test2.put("list_boolean", [true, true, false]);
91-
test2.save().catchError((e) {
84+
ParseObject relation = new ParseObject("relationTestClass");
85+
relation.put("data", 55);
86+
relation.save().then((ParseObject object) {
87+
ParseObject test2 = new ParseObject("testNewClass");
88+
test2.put("date", new DateTime(1989, DateTime.NOVEMBER, 9));
89+
test2.put("code", 1);
90+
test2.put("list", [1,2,3]);
91+
test2.put("list_string", ["1","car","3"]);
92+
test2.put("list_double", [1.1, 2.2, 3.3]);
93+
test2.put("list_boolean", [true, true, false]);
94+
test2.put("relation", object);
95+
return test2.save();
96+
}).then((ParseObject object){
97+
log.info("retrieved " + object.getParseObject("relation").toString());
98+
}).catchError((e) {
9299
log.info(e.toString());
93100
return 42;
94101
}).then((value) {
95102
log.info("The value is $value");
96103
}).whenComplete(() => log.info("Done!"));
104+
97105
}
98106

99107
query(Logger log) {

0 commit comments

Comments
 (0)