у вас 2 ошибки(даже можно сказать 3):
1)
function productDeleteWish() {
$(this)...
в этом месте контекст $(this) уже потерян, что легко проверяется console.log($(this)).
Вместо этого выше нужно передать контекстную переменную в другую, let that = $(this);
2) function productDeleteWish() { не принимает аргументов, хотя функция done() возвращает какой-то результат. Хотя это по моему тут вообще лишнее.
3) Не используете дебаг, всего-то надо было последовательно отловить что происходит по ходу скрипта.
Вообще логика скрипта - мрак и ужас, все умещается в 4-5 значимых строк:
$('.js-addwish').on('click', function(){
$(this).toggleClass('in_wishlist');
//Отправляем запрос на удаление/добавление товара из избранного,
//так как id уникальный, никаких других данных серверу передавать не нужно
//в ответ просто получаем 1 или 0 (добавили/удалили)
$.get('/wishlist/?product_id=' + $(this).attr('product_id'), function(data)){
(data == 1)? alert('addet!') : alert('removed!');
)}
)}