Как правильно проверить написать условие в else if(не срабатывает как необходимо)?
function test(str) {
  if (typeof str !== 'string') {
    alert('аргумент не строка');
    return;
  }

  str = str.trim(); 
  return str.length > 50 ? str.slice(0, 50) + '...' : str;
}
ваши ошибки:
1) b = a.split(' ').join('');
этот код уберёт вообще все пробелы в строке
2) else if (b > 50 && b == 50) {
вы сравниваете строку и число, это неправильно, нужно сравнивать свойство length строки 
3) else if (b > 50 && b == 50) {
это условие никогда не выполнится, b не может быть больше и одновременно равным 50
4) document.write(b + '...    ');
если b больше 50 символов, то выведется b + '...', что не удовлетворяет условию
b > 50 && b == 50
Больше 50, но одновременно и равно 50, такого не бывает. Нужно тогда проверять b >= 50.
Во-вторых, вы говорите, что нужно проверять строку, а операция b > 50, приведет b к числу. Для получения длины строки нужно обратиться к свойству length.
Проверить на строку можно с помощью оператора typeof, чтобы взять первые 50 символов строки можно воспользоваться методом slice(start, end).
Сейчас Ваша функция вообще не выполняет поставленную задачу.