emotz / kladovka

Optimizer of inventory for games
http://kladovka.herokuapp.com/
MIT License
0 stars 0 forks source link

failing with non-existing db or collection #48

Closed Eoksni closed 7 years ago

Eoksni commented 7 years ago

При попытке получить предмет из несуществующей базы или несуществующей коллекции программа ведет себя не так, как заявлено в документации. Я добавил пару тестов, иллюстрирующих неполадку. Надо пофиксить. (Лучше фиксить прям в этой ветке NonExistingDbOrColl, когда закончим - смержим его в KeepAliveConnection).

Eoksni commented 7 years ago

У меня эти тесты фейлятся вот так:

npm run test-unit -s

  Тест БД 0
    1) при попытке достать объект из несуществующей базы данных отклоняет обещание
    2) при попытке достать объект из несуществующей коллекции отклоняет обещание
    √ добавляет объект в БД
    √ записывает 2 одинаковых объекта в базу, и полученные id будут различны
    √ добавляет переменную в БД несколько раз, только если её значение будет переприсвоено
    √ записывает объект в базу, и считывает его по полученному id
    √ получает все объекты из БД 
    √ сохраняет данные в БД, и они остаются неизменны, если изменяется состояние исходного объекта
    √ удаляет объект из БД
    √ удаляет все объекты из БД
    √ получает объекты конкретного типа
    √ получает записанный объект через getAll
    √ получает все объекты, меняет один из них, получает их заново и проверяет что они не изменились

  Тест БД 1
    √ при попытке достать объект из несуществующей базы данных отклоняет обещание
    3) при попытке достать объект из несуществующей коллекции отклоняет обещание
    √ добавляет объект в БД
    √ записывает 2 одинаковых объекта в базу, и полученные id будут различны
    √ добавляет переменную в БД несколько раз, только если её значение будет переприсвоено
    √ записывает объект в базу, и считывает его по полученному id
    √ получает все объекты из БД 
    √ сохраняет данные в БД, и они остаются неизменны, если изменяется состояние исходного объекта
    √ удаляет объект из БД
    √ удаляет все объекты из БД
    √ получает объекты конкретного типа
    √ получает записанный объект через getAll
    √ получает все объекты, меняет один из них, получает их заново и проверяет что они не изменились

  Тест для кладовки
    √ сохраняет предмет в кладовке
    √ получает предмет из кладовки
    √ получает все предметы из кладовки
    √ удаляет конкретный предмет
    √ удаляет все предметы из кладовки
    √ возвращает худший предмет из кладовки
    Сравнение предметов
      √ #первый предмет лучше
      √ #второй предмет лучше
      √ #предметы равны
    Предмет нужен
      √ #да
      √ #нет

  34 passing (136ms)
  3 failing

  1) Тест БД 0 при попытке достать объект из несуществующей базы данных отклоняет обещание:

      AssertionError [ERR_ASSERTION]: false == true
      + expected - actual

      -false
      +true

      at Context.<anonymous> (test\db.async.test.js:25:17)
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:169:7)

  2) Тест БД 0 при попытке достать объект из несуществующей коллекции отклоняет обещание:

      AssertionError [ERR_ASSERTION]: false == true
      + expected - actual

      -false
      +true

      at Context.<anonymous> (test\db.async.test.js:39:13)
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:169:7)

  3) Тест БД 1 при попытке достать объект из несуществующей коллекции отклоняет обещание:

      AssertionError [ERR_ASSERTION]: false == true
      + expected - actual

      -false
      +true

      at Context.<anonymous> (test\db.async.test.js:36:17)
      at <anonymous>
ITarako commented 7 years ago

начинаю недолюбливать опенсорсы

Eoksni commented 7 years ago

что не так с опенсорсами? )

ITarako commented 7 years ago

лазиють всякие, тесты провальные пишут

Eoksni commented 7 years ago

Ваще-то в ответ на баг принято писать "Thank you for reporting this issue" :)

ITarako commented 7 years ago

но не в России х)

на 1й тест в контексте mongo просто вылазит обычная ошибка, err.message : cannot read property 'collection' of undefined у memory же срабатывает reject, и я не хочу от него отказываться, ведь вся эта async.db конспект по промисам и даже если убрать reject , будет err.message : cannot read property 'COLL' of undefined и все равно будет фейлиться ассерт на err.message

ITarako commented 7 years ago

Тест БД 0 при попытке достать объект из несуществующей коллекции отклоняет обещание

монго создает коллекции на лету и не должно быть отказа от обещания но в мемори был недочет, поправил

Eoksni commented 7 years ago

не вижу, где поправил?

Eoksni commented 7 years ago

я уже сто раз повторял про консистентность апи, но повторю еще раз - ошибки должны быть одни и те же. Если ты в мемори базе возвращаешь "нет базы данных", то же самое ты должен делать и в монго.

Eoksni commented 7 years ago

ок, а чего тесты то не пофиксил