1
+ package io .skygear .skygear ;
2
+
3
+ import android .support .test .runner .AndroidJUnit4 ;
4
+
5
+ import org .json .JSONArray ;
6
+ import org .json .JSONObject ;
7
+ import org .junit .Test ;
8
+ import org .junit .runner .RunWith ;
9
+
10
+ import static org .junit .Assert .*;
11
+
12
+ @ RunWith (AndroidJUnit4 .class )
13
+ public class RecordNonAtomicDeleteResponseHandlerUnitTest {
14
+ @ Test
15
+ public void testRecordNonAtomicDeleteResponseNormalFlow () throws Exception {
16
+ JSONArray results = new JSONArray ();
17
+
18
+ JSONObject jsonObject1 = new JSONObject ();
19
+ jsonObject1 .put ("_type" , "record" );
20
+ jsonObject1 .put ("_recordType" , "Note" );
21
+ jsonObject1 .put ("_recordID" , "48092492-0791-4120-B314-022202AD3970" );
22
+ results .put (jsonObject1 );
23
+
24
+ JSONObject jsonObject2 = new JSONObject ();
25
+ jsonObject2 .put ("_type" , "record" );
26
+ jsonObject2 .put ("_recordType" , "Note" );
27
+ jsonObject2 .put ("_recordID" , "48092492-0791-4120-B314-022202AD3971" );
28
+ results .put (jsonObject2 );
29
+
30
+ JSONObject resultObject = new JSONObject ();
31
+ resultObject .put ("result" , results );
32
+
33
+ final boolean [] checkpoints = new boolean [] { false };
34
+ RecordNonAtomicDeleteResponseHandler handler = new RecordNonAtomicDeleteResponseHandler () {
35
+ @ Override
36
+ public void onDeleteSuccess (RecordResult <Record >[] results ) {
37
+ assertEquals (2 , results .length );
38
+ assertEquals ("Note" , results [0 ].value .getType ());
39
+ assertEquals ("48092492-0791-4120-B314-022202AD3970" , results [0 ].value .getId ());
40
+ assertTrue (results [0 ].value .deleted );
41
+ assertEquals ("Note" , results [1 ].value .getType ());
42
+ assertEquals ("48092492-0791-4120-B314-022202AD3971" , results [1 ].value .getId ());
43
+ assertTrue (results [1 ].value .deleted );
44
+
45
+ checkpoints [0 ] = true ;
46
+ }
47
+
48
+ @ Override
49
+ public void onDeleteFail (Error error ) {
50
+ fail ("Should not get error callback" );
51
+ }
52
+ };
53
+
54
+ handler .onSuccess (resultObject );
55
+ assertTrue (checkpoints [0 ]);
56
+ }
57
+
58
+ @ Test
59
+ public void testRecordNonAtomicDeleteResponseSomeErrorsFlow () throws Exception {
60
+ JSONArray results = new JSONArray ();
61
+
62
+ JSONObject jsonObject1 = new JSONObject ();
63
+ jsonObject1 .put ("_type" , "record" );
64
+ jsonObject1 .put ("_recordType" , "Note" );
65
+ jsonObject1 .put ("_recordID" , "48092492-0791-4120-B314-022202AD3970" );
66
+ results .put (jsonObject1 );
67
+
68
+ JSONObject jsonObject2 = new JSONObject ();
69
+ jsonObject2 .put ("_type" , "error" );
70
+ jsonObject2 .put ("code" , 110 );
71
+ jsonObject2 .put ("message" , "record not found" );
72
+ jsonObject2 .put ("type" , "ResourceNotFound" );
73
+ results .put (jsonObject2 );
74
+
75
+ JSONObject jsonObject3 = new JSONObject ();
76
+ jsonObject3 .put ("_type" , "record" );
77
+ jsonObject3 .put ("_recordType" , "Note" );
78
+ jsonObject3 .put ("_recordID" , "48092492-0791-4120-B314-022202AD3971" );
79
+ results .put (jsonObject3 );
80
+
81
+ JSONObject resultObject = new JSONObject ();
82
+ resultObject .put ("result" , results );
83
+
84
+ final boolean [] checkpoints = new boolean [] { false };
85
+ RecordNonAtomicDeleteResponseHandler handler = new RecordNonAtomicDeleteResponseHandler () {
86
+ @ Override
87
+ public void onDeleteSuccess (RecordResult <Record >[] results ) {
88
+ assertEquals (3 , results .length );
89
+ assertEquals ("Note" , results [0 ].value .getType ());
90
+ assertEquals ("48092492-0791-4120-B314-022202AD3970" , results [0 ].value .getId ());
91
+ assertTrue (results [0 ].value .deleted );
92
+ assertEquals ("Note" , results [2 ].value .getType ());
93
+ assertEquals ("48092492-0791-4120-B314-022202AD3971" , results [2 ].value .getId ());
94
+ assertTrue (results [2 ].value .deleted );
95
+
96
+ assertNull (results [1 ].value );
97
+ assertTrue (results [1 ].isError ());
98
+ assertEquals (110 , results [1 ].error .getCode ().getValue ());
99
+ assertEquals ("record not found" , results [1 ].error .getDetailMessage ());
100
+
101
+ checkpoints [0 ] = true ;
102
+ }
103
+
104
+ @ Override
105
+ public void onDeleteFail (Error error ) {
106
+ fail ("Should not get error callback" );
107
+ }
108
+ };
109
+
110
+ handler .onSuccess (resultObject );
111
+ assertTrue (checkpoints [0 ]);
112
+ }
113
+
114
+ @ Test
115
+ public void testRecordNonAtomicDeleteResponseOperationalErrorFlow () throws Exception {
116
+ final boolean [] checkpoints = new boolean [] { false };
117
+ RecordNonAtomicDeleteResponseHandler handler = new RecordNonAtomicDeleteResponseHandler () {
118
+ @ Override
119
+ public void onDeleteSuccess (RecordResult <Record >[] results ) {
120
+ fail ("Should not get success callback" );
121
+ }
122
+
123
+ @ Override
124
+ public void onDeleteFail (Error error ) {
125
+ assertEquals ("some-error" , error .getDetailMessage ());
126
+ checkpoints [0 ] = true ;
127
+ }
128
+ };
129
+
130
+ handler .onFail (new Error ("some-error" ));
131
+ assertTrue (checkpoints [0 ]);
132
+ }
133
+ }
0 commit comments