@@ -96,8 +96,14 @@ public void setUp() throws Exception {
96
96
}
97
97
98
98
@ Override
99
- public void tearDown () throws Exception {
100
- client .deleteIndex (indexName );
99
+ public void tearDown () {
100
+ try {
101
+ client .deleteIndex (indexName );
102
+ }
103
+ catch (AlgoliaException e ) {
104
+ fail (e .getMessage ());
105
+ }
106
+ AssertCompletionHandler .checkAllHandlers ();
101
107
}
102
108
103
109
@ Test
@@ -911,4 +917,174 @@ public void testGetObjectsAttributes() throws AlgoliaException {
911
917
fail (e .getMessage ());
912
918
}
913
919
}
920
+
921
+ @ Test
922
+ public void testPartialUpdateObject () throws Exception {
923
+ JSONObject partialObject = new JSONObject ().put ("city" , "Paris" );
924
+ index .partialUpdateObjectAsync (partialObject , ids .get (0 ), new AssertCompletionHandler () {
925
+ @ Override
926
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
927
+ assertNull (error );
928
+ String taskID = content .optString ("taskID" );
929
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
930
+ @ Override
931
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
932
+ assertNull (error );
933
+ index .getObjectAsync (ids .get (0 ), new AssertCompletionHandler () {
934
+ @ Override
935
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
936
+ assertNotNull (content );
937
+ assertEquals (ids .get (0 ), content .optString ("objectID" ));
938
+ }
939
+ });
940
+ }
941
+ });
942
+ }
943
+ });
944
+ }
945
+
946
+ @ Test
947
+ public void testPartialUpdateObjectNoCreate () throws Exception {
948
+ final String objectID = "unknown" ;
949
+ final JSONObject partialObject = new JSONObject ().put ("city" , "Paris" );
950
+
951
+ // Partial update on a nonexistent object with `createIfNotExists=false` should not create the object.
952
+ index .partialUpdateObjectAsync (partialObject , objectID , false , new AssertCompletionHandler () {
953
+ @ Override
954
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
955
+ assertNull (error );
956
+ String taskID = content .optString ("taskID" );
957
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
958
+ @ Override
959
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
960
+ assertNull (error );
961
+ index .getObjectAsync (objectID , new AssertCompletionHandler () {
962
+ @ Override
963
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
964
+ assertNotNull (error );
965
+ assertEquals (404 , error .getStatusCode ());
966
+
967
+ // Partial update on a nonexistent object with `createIfNotExists=true` should create the object.
968
+ index .partialUpdateObjectAsync (partialObject , objectID , true , new AssertCompletionHandler () {
969
+ @ Override
970
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
971
+ assertNull (error );
972
+ String taskID = content .optString ("taskID" );
973
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
974
+ @ Override
975
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
976
+ assertNull (error );
977
+ index .getObjectAsync (objectID , new AssertCompletionHandler () {
978
+ @ Override
979
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
980
+ assertNotNull (content );
981
+ assertEquals (objectID , content .optString ("objectID" ));
982
+ }
983
+ });
984
+ }
985
+ });
986
+ }
987
+ });
988
+ }
989
+ });
990
+ }
991
+ });
992
+ }
993
+ });
994
+ }
995
+
996
+ @ Test
997
+ public void testPartialUpdateObjects () throws Exception {
998
+ final JSONArray partialObjects = new JSONArray ()
999
+ .put (new JSONObject ().put ("objectID" , ids .get (0 )).put ("city" , "Paris" ))
1000
+ .put (new JSONObject ().put ("objectID" , ids .get (1 )).put ("city" , "Berlin" ));
1001
+
1002
+ index .partialUpdateObjectsAsync (partialObjects , false , new AssertCompletionHandler () {
1003
+ @ Override
1004
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1005
+ assertNull (error );
1006
+ String taskID = content .optString ("taskID" );
1007
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
1008
+ @ Override
1009
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1010
+ assertNull (error );
1011
+ index .getObjectsAsync (ids , new AssertCompletionHandler () {
1012
+ @ Override
1013
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1014
+ assertNotNull (content );
1015
+ JSONArray results = content .optJSONArray ("results" );
1016
+ assertNotNull (results );
1017
+ assertEquals (2 , results .length ());
1018
+ for (int i = 0 ; i < partialObjects .length (); ++i ) {
1019
+ assertEquals (ids .get (i ), results .optJSONObject (i ).optString ("objectID" ));
1020
+ assertEquals (partialObjects .optJSONObject (i ).optString ("city" ), results .optJSONObject (i ).optString ("city" ));
1021
+ }
1022
+ }
1023
+ });
1024
+ }
1025
+ });
1026
+ }
1027
+ });
1028
+ }
1029
+
1030
+ @ Test
1031
+ public void testPartialUpdateObjectsNoCreate () throws Exception {
1032
+ final List <String > newIds = Arrays .asList ("unknown" , "none" );
1033
+ final JSONArray partialObjects = new JSONArray ()
1034
+ .put (new JSONObject ().put ("objectID" , newIds .get (0 )).put ("city" , "Paris" ))
1035
+ .put (new JSONObject ().put ("objectID" , newIds .get (1 )).put ("city" , "Berlin" ));
1036
+
1037
+ index .partialUpdateObjectsAsync (partialObjects , false , new AssertCompletionHandler () {
1038
+ @ Override
1039
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1040
+ assertNull (error );
1041
+ String taskID = content .optString ("taskID" );
1042
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
1043
+ @ Override
1044
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1045
+ assertNull (error );
1046
+ index .getObjectsAsync (newIds , new AssertCompletionHandler () {
1047
+ @ Override
1048
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1049
+ // NOTE: A multiple get objects doesn't return an error for nonexistent objects,
1050
+ // but simply returns `null` for the missing objects.
1051
+ assertNotNull (content );
1052
+ JSONArray results = content .optJSONArray ("results" );
1053
+ assertNotNull (results );
1054
+ assertEquals (2 , results .length ());
1055
+ assertEquals (null , results .optJSONObject (0 ));
1056
+ assertEquals (null , results .optJSONObject (1 ));
1057
+
1058
+ index .partialUpdateObjectsAsync (partialObjects , false , new AssertCompletionHandler () {
1059
+ @ Override
1060
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1061
+ assertNull (error );
1062
+ String taskID = content .optString ("taskID" );
1063
+ index .waitTaskAsync (taskID , new AssertCompletionHandler () {
1064
+ @ Override
1065
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1066
+ assertNull (error );
1067
+ index .getObjectsAsync (newIds , new AssertCompletionHandler () {
1068
+ @ Override
1069
+ public void doRequestCompleted (JSONObject content , AlgoliaException error ) {
1070
+ assertNotNull (content );
1071
+ JSONArray results = content .optJSONArray ("results" );
1072
+ assertNotNull (results );
1073
+ assertEquals (2 , results .length ());
1074
+ for (int i = 0 ; i < partialObjects .length (); ++i ) {
1075
+ assertEquals (partialObjects .optJSONObject (i ).optString ("city" ), results .optJSONObject (i ).optString ("city" ));
1076
+ }
1077
+ }
1078
+ });
1079
+ }
1080
+ });
1081
+ }
1082
+ });
1083
+ }
1084
+ });
1085
+ }
1086
+ });
1087
+ }
1088
+ });
1089
+ }
914
1090
}
0 commit comments