@@ -1216,19 +1216,26 @@ describe('AmplitudeClient', function () {
1216
1216
1217
1217
it ( 'should run the callback after making the identify call' , function ( ) {
1218
1218
var counter = 0 ;
1219
+ var errCounter = 0 ;
1219
1220
var value = - 1 ;
1220
1221
var message = '' ;
1221
1222
var callback = function ( status , response ) {
1222
1223
counter ++ ;
1223
1224
value = status ;
1224
1225
message = response ;
1225
1226
} ;
1227
+
1228
+ var errCallback = function ( ) {
1229
+ errCounter ++ ;
1230
+ } ;
1231
+
1226
1232
var identify = new amplitude . Identify ( ) . set ( 'key' , 'value' ) ;
1227
- amplitude . identify ( identify , callback ) ;
1233
+ amplitude . identify ( identify , callback , errCallback ) ;
1228
1234
1229
1235
// before server responds, callback should not fire
1230
1236
assert . lengthOf ( server . requests , 1 ) ;
1231
1237
assert . equal ( counter , 0 ) ;
1238
+ assert . equal ( errCounter , 0 ) ;
1232
1239
assert . equal ( value , - 1 ) ;
1233
1240
assert . equal ( message , '' ) ;
1234
1241
@@ -1238,41 +1245,76 @@ describe('AmplitudeClient', function () {
1238
1245
assert . equal ( counter , 1 ) ;
1239
1246
assert . equal ( value , 200 ) ;
1240
1247
assert . equal ( message , 'success' ) ;
1248
+
1249
+ // error callback should not fire
1250
+ assert . equal ( errCounter , 0 ) ;
1241
1251
} ) ;
1242
1252
1243
1253
it ( 'should run the callback even if client not initialized with apiKey' , function ( ) {
1244
1254
var counter = 0 ;
1245
1255
var value = - 1 ;
1246
1256
var message = '' ;
1257
+
1258
+ var errCounter = 0 ;
1259
+ var errValue = - 1 ;
1260
+ var errMessage = '' ;
1247
1261
var callback = function ( status , response ) {
1248
1262
counter ++ ;
1249
1263
value = status ;
1250
1264
message = response ;
1251
1265
} ;
1266
+
1267
+ var errCallback = function ( status , response ) {
1268
+ errCounter ++ ;
1269
+ errValue = status ;
1270
+ errMessage = response ;
1271
+ } ;
1272
+
1252
1273
var identify = new amplitude . Identify ( ) . set ( 'key' , 'value' ) ;
1253
- new AmplitudeClient ( ) . identify ( identify , callback ) ;
1274
+ new AmplitudeClient ( ) . identify ( identify , callback , errCallback ) ;
1254
1275
1255
1276
// verify callback fired
1256
1277
assert . equal ( counter , 1 ) ;
1257
1278
assert . equal ( value , 0 ) ;
1258
1279
assert . equal ( message , 'No request sent' ) ;
1280
+
1281
+ // verify error callback fired
1282
+ assert . equal ( errCounter , 1 ) ;
1283
+ assert . equal ( errValue , 0 ) ;
1284
+ assert . equal ( errMessage , 'No request sent' ) ;
1259
1285
} ) ;
1260
1286
1261
1287
it ( 'should run the callback even with an invalid identify object' , function ( ) {
1262
1288
var counter = 0 ;
1263
1289
var value = - 1 ;
1264
1290
var message = '' ;
1291
+
1292
+ var errCounter = 0 ;
1293
+ var errValue = - 1 ;
1294
+ var errMessage = '' ;
1265
1295
var callback = function ( status , response ) {
1266
1296
counter ++ ;
1267
1297
value = status ;
1268
1298
message = response ;
1269
1299
} ;
1270
- amplitude . identify ( null , callback ) ;
1300
+
1301
+ var errCallback = function ( status , response ) {
1302
+ errCounter ++ ;
1303
+ errValue = status ;
1304
+ errMessage = response ;
1305
+ } ;
1306
+
1307
+ amplitude . identify ( null , callback , errCallback ) ;
1271
1308
1272
1309
// verify callback fired
1273
1310
assert . equal ( counter , 1 ) ;
1274
1311
assert . equal ( value , 0 ) ;
1275
1312
assert . equal ( message , 'No request sent' ) ;
1313
+
1314
+ // verify error callback fired
1315
+ assert . equal ( errCounter , 1 ) ;
1316
+ assert . equal ( errValue , 0 ) ;
1317
+ assert . equal ( errMessage , 'No request sent' ) ;
1276
1318
} ) ;
1277
1319
} ) ;
1278
1320
@@ -1390,19 +1432,24 @@ describe('AmplitudeClient', function () {
1390
1432
1391
1433
it ( 'should run the callback after making the identify call' , function ( ) {
1392
1434
var counter = 0 ;
1435
+ var errCounter = 0 ;
1393
1436
var value = - 1 ;
1394
1437
var message = '' ;
1395
1438
var callback = function ( status , response ) {
1396
1439
counter ++ ;
1397
1440
value = status ;
1398
1441
message = response ;
1399
1442
} ;
1443
+ var errCallback = function ( ) {
1444
+ errCounter ++ ;
1445
+ } ;
1400
1446
var identify = new amplitude . Identify ( ) . set ( 'key' , 'value' ) ;
1401
- amplitude . groupIdentify ( group_type , group_name , identify , callback ) ;
1447
+ amplitude . groupIdentify ( group_type , group_name , identify , callback , errCallback ) ;
1402
1448
1403
1449
// before server responds, callback should not fire
1404
1450
assert . lengthOf ( server . requests , 1 ) ;
1405
1451
assert . equal ( counter , 0 ) ;
1452
+ assert . equal ( errCounter , 0 ) ;
1406
1453
assert . equal ( value , - 1 ) ;
1407
1454
assert . equal ( message , '' ) ;
1408
1455
@@ -1412,24 +1459,42 @@ describe('AmplitudeClient', function () {
1412
1459
assert . equal ( counter , 1 ) ;
1413
1460
assert . equal ( value , 200 ) ;
1414
1461
assert . equal ( message , 'success' ) ;
1462
+
1463
+ // error callback should not be fired
1464
+ assert . equal ( errCounter , 0 ) ;
1415
1465
} ) ;
1416
1466
1417
1467
it ( 'should run the callback even if client not initialized with apiKey' , function ( ) {
1418
1468
var counter = 0 ;
1419
1469
var value = - 1 ;
1420
1470
var message = '' ;
1471
+
1472
+ var errCounter = 0 ;
1473
+ var errValue = - 1 ;
1474
+ var errMessage = '' ;
1421
1475
var callback = function ( status , response ) {
1422
1476
counter ++ ;
1423
1477
value = status ;
1424
1478
message = response ;
1425
1479
} ;
1480
+
1481
+ var errCallback = function ( status , response ) {
1482
+ errCounter ++ ;
1483
+ errValue = status ;
1484
+ errMessage = response ;
1485
+ } ;
1426
1486
var identify = new amplitude . Identify ( ) . set ( 'key' , 'value' ) ;
1427
- new AmplitudeClient ( ) . groupIdentify ( group_type , group_name , identify , callback ) ;
1487
+ new AmplitudeClient ( ) . groupIdentify ( group_type , group_name , identify , callback , errCallback ) ;
1428
1488
1429
1489
// verify callback fired
1430
1490
assert . equal ( counter , 1 ) ;
1431
1491
assert . equal ( value , 0 ) ;
1432
1492
assert . equal ( message , 'No request sent' ) ;
1493
+
1494
+ // verify error callback fired
1495
+ assert . equal ( errCounter , 1 ) ;
1496
+ assert . equal ( errValue , 0 ) ;
1497
+ assert . equal ( errMessage , 'No request sent' ) ;
1433
1498
} ) ;
1434
1499
1435
1500
it ( 'should run the callback even with an invalid identify object' , function ( ) {
@@ -1894,31 +1959,57 @@ describe('AmplitudeClient', function () {
1894
1959
var counter = 0 ;
1895
1960
var value = - 1 ;
1896
1961
var message = '' ;
1962
+
1963
+ var errCounter = 0 ;
1964
+ var errValue = - 1 ;
1965
+ var errMessage = '' ;
1897
1966
var callback = function ( status , response ) {
1898
1967
counter ++ ;
1899
1968
value = status ;
1900
1969
message = response ;
1901
1970
} ;
1902
- amplitude . logEvent ( null , null , callback ) ;
1971
+
1972
+ var errCallback = function ( status , response ) {
1973
+ errCounter ++ ;
1974
+ errValue = status ;
1975
+ errMessage = response ;
1976
+ } ;
1977
+ amplitude . logEvent ( null , null , callback , errCallback ) ;
1903
1978
assert . equal ( counter , 1 ) ;
1904
1979
assert . equal ( value , 0 ) ;
1905
1980
assert . equal ( message , 'No request sent' ) ;
1981
+ assert . equal ( errCounter , 1 ) ;
1982
+ assert . equal ( errValue , 0 ) ;
1983
+ assert . equal ( errMessage , 'No request sent' ) ;
1906
1984
} ) ;
1907
1985
1908
1986
it ( 'should run callback if optout' , function ( ) {
1909
1987
amplitude . setOptOut ( true ) ;
1910
1988
var counter = 0 ;
1911
1989
var value = - 1 ;
1912
1990
var message = '' ;
1991
+
1992
+ var errCounter = 0 ;
1993
+ var errValue = - 1 ;
1994
+ var errMessage = '' ;
1913
1995
var callback = function ( status , response ) {
1914
1996
counter ++ ;
1915
1997
value = status ;
1916
1998
message = response ;
1917
1999
} ;
1918
- amplitude . logEvent ( 'test' , null , callback ) ;
2000
+
2001
+ var errCallback = function ( status , response ) {
2002
+ errCounter ++ ;
2003
+ errValue = status ;
2004
+ errMessage = response ;
2005
+ } ;
2006
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
1919
2007
assert . equal ( counter , 1 ) ;
1920
2008
assert . equal ( value , 0 ) ;
1921
2009
assert . equal ( message , 'No request sent' ) ;
2010
+ assert . equal ( errCounter , 1 ) ;
2011
+ assert . equal ( errValue , 0 ) ;
2012
+ assert . equal ( errMessage , 'No request sent' ) ;
1922
2013
} ) ;
1923
2014
1924
2015
it ( 'should not run callback if invalid callback and no eventType' , function ( ) {
@@ -1927,18 +2018,25 @@ describe('AmplitudeClient', function () {
1927
2018
1928
2019
it ( 'should run callback after logging event' , function ( ) {
1929
2020
var counter = 0 ;
2021
+ var errCounter = 0 ;
1930
2022
var value = - 1 ;
1931
2023
var message = '' ;
2024
+
2025
+ var errCallback = function ( ) {
2026
+ errCounter ++ ;
2027
+ } ;
2028
+
1932
2029
var callback = function ( status , response ) {
1933
2030
counter ++ ;
1934
2031
value = status ;
1935
2032
message = response ;
1936
2033
} ;
1937
- amplitude . logEvent ( 'test' , null , callback ) ;
2034
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
1938
2035
1939
2036
// before server responds, callback should not fire
1940
2037
assert . lengthOf ( server . requests , 1 ) ;
1941
2038
assert . equal ( counter , 0 ) ;
2039
+ assert . equal ( errCounter , 0 ) ;
1942
2040
assert . equal ( value , - 1 ) ;
1943
2041
assert . equal ( message , '' ) ;
1944
2042
@@ -1948,6 +2046,9 @@ describe('AmplitudeClient', function () {
1948
2046
assert . equal ( counter , 1 ) ;
1949
2047
assert . equal ( value , 200 ) ;
1950
2048
assert . equal ( message , 'success' ) ;
2049
+
2050
+ // erro callback should not fire
2051
+ assert . equal ( errCounter , 0 ) ;
1951
2052
} ) ;
1952
2053
1953
2054
it ( 'should run callback if batchEvents but under threshold' , function ( ) {
@@ -1958,14 +2059,20 @@ describe('AmplitudeClient', function () {
1958
2059
eventUploadPeriodMillis : eventUploadPeriodMillis ,
1959
2060
} ) ;
1960
2061
var counter = 0 ;
2062
+ var errCounter = 0 ;
1961
2063
var value = - 1 ;
1962
2064
var message = '' ;
1963
2065
var callback = function ( status , response ) {
1964
2066
counter ++ ;
1965
2067
value = status ;
1966
2068
message = response ;
1967
2069
} ;
1968
- amplitude . logEvent ( 'test' , null , callback ) ;
2070
+
2071
+ var errCallback = function ( ) {
2072
+ errCounter ++ ;
2073
+ } ;
2074
+
2075
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
1969
2076
assert . lengthOf ( server . requests , 0 ) ;
1970
2077
1971
2078
// check that request is made after delay, but callback is not run a second time
@@ -1974,13 +2081,15 @@ describe('AmplitudeClient', function () {
1974
2081
server . respondWith ( 'success' ) ;
1975
2082
server . respond ( ) ;
1976
2083
assert . equal ( counter , 1 ) ;
2084
+ assert . equal ( errCounter , 0 ) ;
1977
2085
assert . equal ( value , 200 ) ;
1978
2086
assert . equal ( message , 'success' ) ;
1979
2087
} ) ;
1980
2088
1981
2089
it ( 'should run callback once and only after all events are uploaded' , function ( ) {
1982
2090
amplitude . init ( apiKey , null , { uploadBatchSize : 10 } ) ;
1983
2091
var counter = 0 ;
2092
+ var errCounter = 0 ;
1984
2093
var value = - 1 ;
1985
2094
var message = '' ;
1986
2095
var callback = function ( status , response ) {
@@ -1989,21 +2098,26 @@ describe('AmplitudeClient', function () {
1989
2098
message = response ;
1990
2099
} ;
1991
2100
2101
+ var errCallback = function ( ) {
2102
+ errCounter ++ ;
2103
+ } ;
2104
+
1992
2105
// queue up 15 events, since batchsize 10, need to send in 2 batches
1993
2106
amplitude . _sending = true ;
1994
2107
for ( var i = 0 ; i < 15 ; i ++ ) {
1995
2108
amplitude . logEvent ( 'Event' , { index : i } ) ;
1996
2109
}
1997
2110
amplitude . _sending = false ;
1998
2111
1999
- amplitude . logEvent ( 'Event' , { index : 100 } , callback ) ;
2112
+ amplitude . logEvent ( 'Event' , { index : 100 } , callback , errCallback ) ;
2000
2113
2001
2114
assert . lengthOf ( server . requests , 1 ) ;
2002
2115
server . respondWith ( 'success' ) ;
2003
2116
server . respond ( ) ;
2004
2117
2005
2118
// after first response received, callback should not have fired
2006
2119
assert . equal ( counter , 0 ) ;
2120
+ assert . equal ( errCounter , 0 ) ;
2007
2121
assert . equal ( value , - 1 ) ;
2008
2122
assert . equal ( message , '' ) ;
2009
2123
@@ -2015,22 +2129,37 @@ describe('AmplitudeClient', function () {
2015
2129
assert . equal ( counter , 1 ) ;
2016
2130
assert . equal ( value , 200 ) ;
2017
2131
assert . equal ( message , 'success' ) ;
2132
+
2133
+ // error callback should not have fired
2134
+ assert . equal ( errCounter , 0 ) ;
2018
2135
} ) ;
2019
2136
2020
2137
it ( 'should run the callback even with a dropped unsent event' , function ( ) {
2021
2138
amplitude . init ( apiKey , null , { savedMaxCount : 1 } ) ;
2022
2139
var counter = 0 ;
2023
- var value = null ;
2024
- var message = null ;
2025
- var reason = null ;
2140
+ var value = - 1 ;
2141
+ var message = '' ;
2142
+ var reason = '' ;
2143
+
2144
+ var errCounter = 0 ;
2145
+ var errValue = - 1 ;
2146
+ var errMessage = '' ;
2147
+ var errReason = '' ;
2026
2148
var callback = function ( status , response , details ) {
2027
2149
counter ++ ;
2028
2150
value = status ;
2029
2151
message = response ;
2030
2152
reason = details . reason ;
2031
2153
} ;
2032
- amplitude . logEvent ( 'DroppedEvent' , { } , callback ) ;
2033
- amplitude . logEvent ( 'SavedEvent' , { } , callback ) ;
2154
+
2155
+ var errCallback = function ( status , response , details ) {
2156
+ errCounter ++ ;
2157
+ errValue = status ;
2158
+ errMessage = response ;
2159
+ errReason = details . reason ;
2160
+ } ;
2161
+ amplitude . logEvent ( 'DroppedEvent' , { } , callback , errCallback ) ;
2162
+ amplitude . logEvent ( 'SavedEvent' , { } , callback , errCallback ) ;
2034
2163
server . respondWith ( [ 0 , { } , '' ] ) ;
2035
2164
server . respond ( ) ;
2036
2165
@@ -2042,10 +2171,20 @@ describe('AmplitudeClient', function () {
2042
2171
reason ,
2043
2172
'Event dropped because options.savedMaxCount exceeded. User may be offline or have a content blocker' ,
2044
2173
) ;
2174
+
2175
+ // verify error callback fired
2176
+ assert . equal ( errCounter , 1 ) ;
2177
+ assert . equal ( errValue , 0 ) ;
2178
+ assert . equal ( errMessage , 'No request sent' ) ;
2179
+ assert . equal (
2180
+ errReason ,
2181
+ 'Event dropped because options.savedMaxCount exceeded. User may be offline or have a content blocker' ,
2182
+ ) ;
2045
2183
} ) ;
2046
2184
2047
2185
it ( 'should run callback once and only after 413 resolved' , function ( ) {
2048
2186
var counter = 0 ;
2187
+ var errCounter = 0 ;
2049
2188
var value = - 1 ;
2050
2189
var message = '' ;
2051
2190
var callback = function ( status , response ) {
@@ -2054,6 +2193,10 @@ describe('AmplitudeClient', function () {
2054
2193
message = response ;
2055
2194
} ;
2056
2195
2196
+ var errCallback = function ( ) {
2197
+ errCounter ++ ;
2198
+ } ;
2199
+
2057
2200
// queue up 15 events
2058
2201
amplitude . _sending = true ;
2059
2202
for ( var i = 0 ; i < 15 ; i ++ ) {
@@ -2062,7 +2205,7 @@ describe('AmplitudeClient', function () {
2062
2205
amplitude . _sending = false ;
2063
2206
2064
2207
// 16th event with 413 will backoff to batches of 8
2065
- amplitude . logEvent ( 'Event' , { index : 100 } , callback ) ;
2208
+ amplitude . logEvent ( 'Event' , { index : 100 } , callback , errCallback ) ;
2066
2209
2067
2210
assert . lengthOf ( server . requests , 1 ) ;
2068
2211
var events = JSON . parse ( queryString . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
@@ -2072,6 +2215,7 @@ describe('AmplitudeClient', function () {
2072
2215
server . respondWith ( [ 413 , { } , '' ] ) ;
2073
2216
server . respond ( ) ;
2074
2217
assert . equal ( counter , 0 ) ;
2218
+ assert . equal ( errCounter , 1 ) ;
2075
2219
assert . equal ( value , - 1 ) ;
2076
2220
assert . equal ( message , '' ) ;
2077
2221
@@ -2082,6 +2226,7 @@ describe('AmplitudeClient', function () {
2082
2226
server . respondWith ( 'success' ) ;
2083
2227
server . respond ( ) ;
2084
2228
assert . equal ( counter , 0 ) ;
2229
+ assert . equal ( errCounter , 1 ) ;
2085
2230
assert . equal ( value , - 1 ) ;
2086
2231
assert . equal ( message , '' ) ;
2087
2232
@@ -2092,25 +2237,30 @@ describe('AmplitudeClient', function () {
2092
2237
server . respondWith ( 'success' ) ;
2093
2238
server . respond ( ) ;
2094
2239
assert . equal ( counter , 1 ) ;
2240
+ assert . equal ( errCounter , 1 ) ;
2095
2241
assert . equal ( value , 200 ) ;
2096
2242
assert . equal ( message , 'success' ) ;
2097
2243
} ) ;
2098
2244
2099
2245
it ( 'should _not_ run callback when the server returns a 500' , function ( ) {
2100
2246
const callback = sinon . spy ( ) ;
2247
+ const errCallback = sinon . spy ( ) ;
2101
2248
2102
- amplitude . logEvent ( 'test' , null , callback ) ;
2249
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
2103
2250
server . respondWith ( [ 500 , { } , 'Not found' ] ) ;
2104
2251
server . respond ( ) ;
2105
2252
assert . isFalse ( callback . calledOnce ) ;
2253
+ assert . isTrue ( errCallback . calledOnce ) ;
2106
2254
} ) ;
2107
2255
2108
2256
it ( 'should run the callback when the server finally returns a 200 after a 500' , function ( ) {
2109
2257
const callback = sinon . spy ( ) ;
2258
+ const errCallback = sinon . spy ( ) ;
2110
2259
2111
- amplitude . logEvent ( 'test' , null , callback ) ;
2260
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
2112
2261
server . respondWith ( [ 500 , { } , 'Not found' ] ) ;
2113
2262
server . respond ( ) ;
2263
+ assert . isTrue ( errCallback . calledOnce ) ;
2114
2264
// The SDK retries failed events when a new event is sent
2115
2265
amplitude . logEvent ( 'test2' ) ;
2116
2266
server . respondWith ( [ 200 , { } , 'success' ] ) ;
@@ -2121,10 +2271,12 @@ describe('AmplitudeClient', function () {
2121
2271
2122
2272
it ( 'should run the callback when the server finally returns a 413 after a 500' , function ( ) {
2123
2273
const callback = sinon . spy ( ) ;
2274
+ const errCallback = sinon . spy ( ) ;
2124
2275
2125
- amplitude . logEvent ( 'test' , null , callback ) ;
2276
+ amplitude . logEvent ( 'test' , null , callback , errCallback ) ;
2126
2277
server . respondWith ( [ 500 , { } , 'Not found' ] ) ;
2127
2278
server . respond ( ) ;
2279
+ assert . isTrue ( errCallback . calledOnce ) ;
2128
2280
// The SDK retries failed events when a new event is sent
2129
2281
amplitude . logEvent ( 'test2' ) ;
2130
2282
server . respondWith ( [ 413 , { } , '' ] ) ;
@@ -2562,6 +2714,7 @@ describe('AmplitudeClient', function () {
2562
2714
2563
2715
it ( 'should handle groups input' , function ( ) {
2564
2716
var counter = 0 ;
2717
+ var errCounter = 0 ;
2565
2718
var value = - 1 ;
2566
2719
var message = '' ;
2567
2720
var callback = function ( status , response ) {
@@ -2571,6 +2724,10 @@ describe('AmplitudeClient', function () {
2571
2724
message = response ;
2572
2725
} ;
2573
2726
2727
+ var errCallback = function ( ) {
2728
+ errCounter ++ ;
2729
+ } ;
2730
+
2574
2731
var eventProperties = {
2575
2732
key : 'value' ,
2576
2733
} ;
@@ -2582,7 +2739,7 @@ describe('AmplitudeClient', function () {
2582
2739
null : null , // ignore null values
2583
2740
} ;
2584
2741
2585
- amplitude . logEventWithGroups ( 'Test' , eventProperties , groups , callback ) ;
2742
+ amplitude . logEventWithGroups ( 'Test' , eventProperties , groups , callback , errCallback ) ;
2586
2743
assert . lengthOf ( server . requests , 1 ) ;
2587
2744
var events = JSON . parse ( queryString . parse ( server . requests [ 0 ] . requestBody ) . e ) ;
2588
2745
assert . lengthOf ( events , 1 ) ;
@@ -2600,11 +2757,13 @@ describe('AmplitudeClient', function () {
2600
2757
2601
2758
// verify callback behavior
2602
2759
assert . equal ( counter , 0 ) ;
2760
+ assert . equal ( errCounter , 0 ) ;
2603
2761
assert . equal ( value , - 1 ) ;
2604
2762
assert . equal ( message , '' ) ;
2605
2763
server . respondWith ( 'success' ) ;
2606
2764
server . respond ( ) ;
2607
2765
assert . equal ( counter , 1 ) ;
2766
+ assert . equal ( errCounter , 0 ) ;
2608
2767
assert . equal ( value , 200 ) ;
2609
2768
assert . equal ( message , 'success' ) ;
2610
2769
} ) ;
0 commit comments