docbrown/spec/services/notifications/reactions
Daniel Uber 293ff5653a
Fix integer > nil error when sending reaction notifications (#16627)
* don't set nil when size not called

recently, #16570 worked around an issue where aggregated siblings
wasn't present, by only calling size if present.

Unfortunately, this causes a comparison of integer (new json_data
aggregated siblings count) with nil (result of the safe navigation for dig()&.size
assigned nil to previous_siblings_size, when we expected it to be
0). The initial error on the same data moved farther down the controller.

If old_json_data is present, but does not have an array in
reaction.aggregated_siblings, we want to have previous size be zero.

Remove guard clause and previous assignment

The issue was not that old_json_data was nil (it came from an existing
notification) but that there were missing keys (or rather that the
json data for some notifications didn't have a reaction key at all).

Remove the guard clause and either set to the size, or zero if there
is none. I don't understand what the guard clause was for, so replace the
safety by adding a nil safe call to dig. I don't _believe_ this is
possible but in case it was we can shorten the check here.

* Add test to cover missing json_data['reaction'] key

* Remove unneeded temporary variable
2022-02-17 16:30:39 -06:00
..
reaction_data_spec.rb Ensure arguments to perform_async are json safe (#16285) 2022-01-25 18:07:40 -06:00
send_spec.rb Fix integer > nil error when sending reaction notifications (#16627) 2022-02-17 16:30:39 -06:00