1003
1024
info.count = info.direct.count;
1025
direct_info = module._get_direct_subscription_information(info);
1004
1026
Y.Assert.areSame(
1005
1027
module._reasons.MUTED_SUBSCRIPTION,
1006
module._get_direct_subscription_information(info));
1009
test_direct_subscription: function() {
1010
// The simple direct subscription.
1013
//private: false, // JSLint complains
1014
security_related: false
1016
principal_is_reporter: false
1018
sub.bug['private'] = false;
1020
direct: _constructCategory([sub]),
1025
module._reasons.YOU_SUBSCRIBED,
1026
module._get_direct_subscription_information(info));
1028
direct_info.reason);
1029
Y.ArrayAssert.itemsAreEqual(
1031
direct_info.reductions);
1032
Y.ArrayAssert.itemsAreEqual(
1033
['unmute-direct-subscription',
1034
'select-direct-subscription-discussion',
1035
'select-direct-subscription-metadata',
1036
'select-direct-subscription-lifecycle'],
1037
direct_info.increases);
1040
test_direct_subscription_at_discussion_level: function() {
1041
// The larch^D^D^D^D^D^D simple direct subscription.
1045
security_related: false
1047
principal_is_reporter: false,
1048
subscription: {bug_notification_level: 'Discussion'}
1051
direct: _constructCategory([sub]),
1055
var direct_info = module._get_direct_subscription_information(info);
1057
module._reasons.YOU_SUBSCRIBED,
1058
direct_info.reason);
1059
Y.ArrayAssert.itemsAreEqual(
1060
['mute-direct-subscription',
1061
'select-only-direct-subscription-metadata',
1062
'select-only-direct-subscription-lifecycle',
1063
'remove-direct-subscription'],
1064
direct_info.reductions);
1065
Y.ArrayAssert.itemsAreEqual(
1067
direct_info.increases);
1070
test_direct_subscription_at_metadata_level: function() {
1071
// The simple direct subscription at metadata level.
1075
security_related: false
1077
principal_is_reporter: false,
1078
subscription: {bug_notification_level: 'Details'}
1081
direct: _constructCategory([sub]),
1085
var direct_info = module._get_direct_subscription_information(info);
1087
module._reasons.YOU_SUBSCRIBED,
1088
direct_info.reason);
1089
Y.ArrayAssert.itemsAreEqual(
1090
['mute-direct-subscription',
1091
'select-only-direct-subscription-lifecycle',
1092
'remove-direct-subscription'],
1093
direct_info.reductions);
1094
Y.ArrayAssert.itemsAreEqual(
1095
['select-direct-subscription-discussion'],
1096
direct_info.increases);
1099
test_direct_subscription_at_lifecycle_level: function() {
1100
// The simple direct subscription at lifecycle level.
1104
security_related: false
1106
principal_is_reporter: false,
1107
subscription: {bug_notification_level: 'Lifecycle'}
1110
direct: _constructCategory([sub]),
1114
var direct_info = module._get_direct_subscription_information(info);
1116
module._reasons.YOU_SUBSCRIBED,
1117
direct_info.reason);
1118
Y.ArrayAssert.itemsAreEqual(
1119
['mute-direct-subscription',
1120
'remove-direct-subscription'],
1121
direct_info.reductions);
1122
Y.ArrayAssert.itemsAreEqual(
1123
['select-direct-subscription-discussion',
1124
'select-direct-subscription-metadata'],
1125
direct_info.increases);
1128
test_direct_subscription_at_unknown_level: function() {
1129
// The simple direct subscription at unknown level.
1133
security_related: false
1135
principal_is_reporter: false,
1136
subscription: {bug_notification_level: 'The Larch'}
1139
direct: _constructCategory([sub]),
1142
// This should raise an error.
1143
module._get_direct_subscription_information(info);
1029
1146
test_direct_subscription_as_reporter: function() {
1030
1147
// The direct subscription created for bug reporter.
1033
principal_is_reporter: true
1150
principal_is_reporter: true,
1151
subscription: {bug_notification_level: 'Discussion'}
1036
1154
direct: _constructCategory([sub]),
1158
var direct_info = module._get_direct_subscription_information(info);
1039
1159
Y.Assert.areSame(
1040
1160
module._reasons.YOU_REPORTED,
1041
module._get_direct_subscription_information(info));
1161
direct_info.reason);
1162
Y.ArrayAssert.itemsAreEqual(
1163
['mute-direct-subscription',
1164
'select-only-direct-subscription-metadata',
1165
'select-only-direct-subscription-lifecycle',
1166
'remove-direct-subscription'],
1167
direct_info.reductions);
1168
Y.ArrayAssert.itemsAreEqual(
1170
direct_info.increases);
1044
1173
test_direct_subscription_for_supervisor: function() {
1046
1175
// the bug supervisor.
1049
//private: true //JSLint complains
1180
subscription: {bug_notification_level: 'Discussion'}
1052
sub.bug['private'] = true;
1054
1183
direct: _constructCategory([sub]),
1186
var direct_info = module._get_direct_subscription_information(info);
1057
1187
Y.Assert.areSame(
1058
1188
module._reasons.YOU_SUBSCRIBED_BUG_SUPERVISOR,
1059
module._get_direct_subscription_information(info));
1189
direct_info.reason);
1190
Y.ArrayAssert.itemsAreEqual(
1191
['mute-direct-subscription',
1192
'select-only-direct-subscription-metadata',
1193
'select-only-direct-subscription-lifecycle',
1194
'remove-direct-subscription'],
1195
direct_info.reductions);
1196
Y.ArrayAssert.itemsAreEqual(
1198
direct_info.increases);
1062
1201
test_direct_subscription_for_security_contact: function() {
1066
1205
security_related: true
1207
subscription: {bug_notification_level: 'Discussion'}
1070
1210
direct: _constructCategory([sub]),
1213
var direct_info = module._get_direct_subscription_information(info);
1073
1214
Y.Assert.areSame(
1074
1215
module._reasons.YOU_SUBSCRIBED_SECURITY_CONTACT,
1075
module._get_direct_subscription_information(info));
1216
direct_info.reason);
1217
Y.ArrayAssert.itemsAreEqual(
1218
['mute-direct-subscription',
1219
'select-only-direct-subscription-metadata',
1220
'select-only-direct-subscription-lifecycle',
1221
'remove-direct-subscription'],
1222
direct_info.reductions);
1223
Y.ArrayAssert.itemsAreEqual(
1225
direct_info.increases);
1228
test_direct_subscription_and_other_subscriptions: function() {
1229
// Other subscriptions are present along with the simple direct
1234
security_related: false
1236
principal_is_reporter: false,
1237
subscription: {bug_notification_level: 'Discussion'}
1240
direct: _constructCategory([sub]),
1241
from_duplicates: _constructCategory(['dupe']),
1245
var direct_info = module._get_direct_subscription_information(info);
1247
module._reasons.YOU_SUBSCRIBED,
1248
direct_info.reason);
1249
Y.ArrayAssert.itemsAreEqual(
1250
['mute-direct-subscription',
1251
'select-only-direct-subscription-metadata',
1252
'select-only-direct-subscription-lifecycle',
1253
'remove-direct-subscription-with-warning'],
1254
direct_info.reductions);
1255
Y.ArrayAssert.itemsAreEqual(
1257
direct_info.increases);
1272
1455
direct: _constructCategory(),
1275
var expected_text = module._get_direct_subscription_information(info);
1458
var expected_text = module._get_direct_subscription_information(
1276
1460
var node = module._get_direct_description_node(info);
1278
'direct-subscription', node.get('id'));
1280
expected_text, node.get('text'));
1461
Y.Assert.areEqual('direct-subscription', node.get('id'));
1462
Y.Assert.isTrue(node.get('text').indexOf(expected_text) !== -1);
1283
1465
test_direct_subscription: function() {
1284
1466
// One personal, direct subscription exists.
1286
direct: _constructCategory([{ bug: {} }]),
1468
direct: _constructCategory([{
1470
subscription: {bug_notification_level: 'Discussion'} }]),
1289
var expected_text = module._get_direct_subscription_information(info);
1473
var expected_text = module._get_direct_subscription_information(
1290
1475
var node = module._get_direct_description_node(info);
1291
1476
Y.Assert.areEqual(
1292
1477
'direct-subscription', node.get('id'));
1294
expected_text, node.get('text'));
1478
Y.Assert.isTrue(node.get('text').indexOf(expected_text) !== -1);