
Anton
27.09.2017
09:20:48

Alex
27.09.2017
09:20:52
я про ханами же ну.

Google

Alex
27.09.2017
09:21:44
тьфу, экшон

Anton
27.09.2017
09:22:07
ну, если честно, то не, я не юзаю это
потому что тупо смысла не вижу
но я с удовольствием послушал бы доводы за

Alex
27.09.2017
09:22:33

Anton
27.09.2017
09:22:51
ааа
бля
очень плохо
короче тестирую я все это

Alex
27.09.2017
09:23:13

Anton
27.09.2017
09:23:19
да я о другом подумал
сейчас покажу
короче вот так, но это пиздец не круто и надо бы переписать
https://github.com/ossboard-org/ossboard/blob/master/spec/web/controllers/tasks/index_spec.rb#L10

Google

Anton
27.09.2017
09:24:26
о, лол, 9 месяцев тестам
короче, это не правильные тесты
надо вынести доставание в отдельный функциональный объект, покрыть юнит тестами его, а потом уже проверить на интеграционном уровне, что у тебя что-то лежит там

Alex
27.09.2017
09:25:34
> доставание в отдельный функциональный объект
??
я не понимаю почему я просто в юните expose проверить не могу
причем тут объект
там может быть params.errors
а это чисто логика экшона

Anton
27.09.2017
09:26:20

Alex
27.09.2017
09:26:28
и хочу нормальный матчер

Anton
27.09.2017
09:26:34
но саму логику доставания правильных данных проверять в моем случае - токое

Alex
27.09.2017
09:27:04
если у меня экшон вообще не expose то мне напишет undefined метод.
Не информативно ни разу.

Anton
27.09.2017
09:27:24
ну, там беда в том, что надо мутировать экшен, а потом тестировать его

Alex
27.09.2017
09:27:42
объясни.
Мы же только call его и все.

Anton
27.09.2017
09:28:45
ну смотри, ты как тестируешь все это:
action.call
action.posts
call мутирует action объект, создает все геттеры

Alex
27.09.2017
09:29:09
expect action to define_method(:posts) ?

Anton
27.09.2017
09:29:19
ну

Google

Alex
27.09.2017
09:29:21
потом уже expect(action.send(;posts)).to eq posts
мы вообще инстанс экшона получаем через call.

Anton
27.09.2017
09:30:02
так заполнение и есть мутация

Alex
27.09.2017
09:30:14
ну учитывая что оригинального объекта у нас не было
мы его получаем а не мутируем.
Class.call -> instance

Anton
27.09.2017
09:31:16
возможно мы о разном говорим, но call вернет массив данных + "заполнит" (замутирует считай) все expose геттеры

Alex
27.09.2017
09:31:38
аа, точно

Anton
27.09.2017
09:31:43

Alex
27.09.2017
09:31:52
забыл, сорян

Alex
27.09.2017
09:31:56
мало практики пока что.

Anton
27.09.2017
09:32:05
ну как бы вот так выглядит экшен
let(:action) { described_class.new }
так вот

Alex
27.09.2017
09:32:14
усе, молчу
я лох и апазроился.

Anton
27.09.2017
09:32:20
ты натолкнул на хорошую идею

Alex
27.09.2017
09:32:43

Google

Anton
27.09.2017
09:33:25
ты натолкнул на хорошую идею
можно поковыряться и посмотреть на уровне класса какие expose геттеры нужно будет сделать и написать матчер типо:
expect(action).to build_exposes(:posts, :users, etc)
но я хз, стоит ли или нет

Alex
27.09.2017
09:35:34
я правда все еще не понял чем мой матчер плох

Anton
27.09.2017
09:36:14
как мне кажется, тупо избыточен
и на самом деле, есть один супер важный вопрос, если говорить про тестирование экшенов
о котором я уже год думаю
как правильно тестировать валидационную схему

Alex
27.09.2017
09:37:06
адок

Admin
ERROR: S client not available

Anton
27.09.2017
09:37:09
потому что каждый раз ее проверять на каждое поле - ебанешься
у меня есть идея тестировать АСТ от dry-v, но что-то пока руки не доходят проверить

Alex
27.09.2017
09:37:32
большинство кейсов valid? / invalid
и наверное expose свои ошибки

Anton
27.09.2017
09:37:57
ну как бы да
только проблема в том, что делать, когда у тебя схема на 20+ строк
каждый случай тестировать - ебанешься

Alex
27.09.2017
09:38:50
берем самый распространенный кейс и на него матчер.

Anton
27.09.2017
09:39:02

Alex
27.09.2017
09:39:09
который напишем конечно же!

Google

Anton
27.09.2017
09:39:24
ну а как он выглядеть должен?

Alex
27.09.2017
09:40:32
как shoulda matchers какойнить

Anton
27.09.2017
09:42:29
ну хз
но можно посмотреть, спасибо!

Anatoly
27.09.2017
09:51:53
Ребят, очень интересная ошибка в продакшене стала появляться.
Мы можем сбилбидть какую-то сущность, также сбилдить для нее нестед атрибуты, потом вызывать на ней update! и запись будет создана. Но в продакшене очень часто при подобном раскладе вылетают EROR: null value in column "word_id" violates not-null constraint / PG::NotNullViolation: ERROR: null value in column "word_id" violates not-null constraint
Куда копать?
word - это нестенд сущность, и т.к. она не персистед, то айдшников нет. Но они же и не нужны, ведь update! сделает create!

wi11son
27.09.2017
09:57:18
Продублирую сюда, ребзя
Всем привет! Nick Sutterer (не без помощи @davydovanton) добрался до Питера, поэтому идём его сегодня гулять.
Стартуем в 19.00 в Pitas'e (Невский 65). Возможно мы потом двинем в какой-нибудь бар, так что следите за перемещениями в телеграм-чатике:
t.me/saintprug

Максим
27.09.2017
09:57:59
а кто это

Alex
27.09.2017
09:58:30
он либо должен позволять null, либо туда должно что тописаться

Anatoly
27.09.2017
09:59:04
И что? У меня же происходит создание, откуда у меня возьмется id при создании.

wi11son
27.09.2017
09:59:13

Максим
27.09.2017
09:59:22
спасбо

Nikolay
27.09.2017
10:00:08
оч. позитивный чел оказался

Alex
27.09.2017
10:00:26
хотя с nested сущностями я считай что не работал

Anatoly
27.09.2017
10:04:14

Alex
27.09.2017
10:04:45
Но я с nested сущностями мало работал.