Himars
Ты с фреймворком никак не работаешь Presenter должен быть абстрагирован от фреймворка
Vitaly
Не знал, что в JUnit можно делать моки
Vitaly
Но только зачем?
Himars
Не знал, что в JUnit можно делать моки
https://github.com/freaksgit/test-task-middle/blob/master/app/src/test/java/vasyl/v/stoliarchuk/testtaskmiddle/features/reposearch/RepoSearchPresenterTest.kt Вот пример
Vitaly
Я создаю новый Presenter и готово
Himars
Но только зачем?
Не знаю Забей...
Mike
см. описание чата
Himars
Оперативно
Anonymous
офф. а у кого можно спросить
Mike
сразу скажу, что никто, скорее всего, не станет протыкивать все экраны существующего приложения чтобы просто сказать, сколько может стоить
Mike
офф. а у кого можно спросить
см. описание чата :)
Mike
за это тоже надо заплатить?)
надо техзадание составить
Himars
за это тоже надо заплатить?)
Сколько будет стоить оценка стоимости приложения? 🌝
Anonymous
надо техзадание составить
ну мне можно примерно. если отталкиваться от скриншотов, то там только список со скачиваемыми мр3 файлами, функционал вроде весьма не сложный
Anonymous
спасибо
Anonymous
учту
Sviat
Гайз, кто-то делал ItemDecoration с вьюхами которые надо инфлейтить?
Vitaly
Есть у меня в Presenter следующий код: JsonConverter jsonConverter = new JsonConverter(); String json = jsonConverter.toJson(messageEditor.getMessage()); Intent intent = new Intent(context, ClientService.class); intent.putExtra("request", json); context.startService(intent);
Vitaly
Как можно для тестов подменить этот код не встаявляя его в отдельный класс?
Volodymyr
Этого всего кода не должно быть в презентере, что то явно пошло не так
Vitaly
public void sendMessage() { if(messageEditor.isNotEmptyMessage()) { // Save message in DB and display the message Message message = new Message(messageEditor.getMessage(), Message.ROUTE_OUT); chatInteractor.insertMessage(message); getViewState().displayMessage(message); /* TODO зависимость для тестов // Send message to server JsonConverter jsonConverter = new JsonConverter(); String json = jsonConverter.toJson(messageEditor.getMessage()); Intent intent = new Intent(context, ClientService.class); intent.putExtra("request", json); context.startService(intent); */ // Clear existing message after sending messageEditor.clear(); } } Эта часть кода точно должна быть здесь так как по своей сути это касается логики приложения, а то, что он запускает сервис, это лишь он делает запрос на отправку сообщения на сервер
Roman
Настроил crashlytics, отчёты приходят в fabric.io, но не отображаются в консоли firebase, в чём может быть проблема?
Roman
StarUML
Roman
спасибо)
Vitaly
А как тогда мне получить экземпляр, который находится внутри Service, так как только через него возможно отправить данные?
Vitaly
ну замокай контекст или возьми роболектрик
Всё таки Mockito в JUnit понадобился, а MVP не такой красочный как я думал
Evgeny
привет, есть recyclerview в который при большом количестве imageview начинает фризить, пробовал битмап компрессию, не помогает, может подскажете чтонибудь?
Mike
Igor
Всё таки Mockito в JUnit понадобился, а MVP не такой красочный как я думал
Конечно, MVP как любой ООП фреймворк очень сложно тестировать.
Bahrom
да из файла в onBind и прямо в нём уменьшаю размер
Наверно надо ассинхронно загрузить и отображать (Glide, Picasso)
Сергій
Надо делать асинхронно все операции ИО и уменьшение битмап
Evgeny
Надо делать асинхронно все операции ИО и уменьшение битмап
перед тем как проставить imageview идёт проверка есть в кеше или нет. Лучше сразу перед кэшированием один раз ужать?
Mike
перед тем как проставить imageview идёт проверка есть в кеше или нет. Лучше сразу перед кэшированием один раз ужать?
кэш файловый или в памяти? Лучше взять готовое решение, задача нетривиальная.
Сергій
перед тем как проставить imageview идёт проверка есть в кеше или нет. Лучше сразу перед кэшированием один раз ужать?
Лучше взять Glide или Picasso, написать правильно загрузку и кеширование картинок не простая задача
Vitaly
Конечно, MVP как любой ООП фреймворк очень сложно тестировать.
Так он подразумевался и подавался как легкотестируемый паттерн
Сергій
Иначе с вероятностью 99% будете фиксить тормоза и пробелы с памятью
Vitaly
А вообще какие паттерны можно назвать легкотестируемыми?
Evgeny
Лучше взять Glide или Picasso, написать правильно загрузку и кеширование картинок не простая задача
подгружается с сервера в отдельную папку в памяти с уникальным именем
Mike
А вообще какие паттерны можно назвать легкотестируемыми?
Приятно, когда решение задачи ложится на паттерн, но в первую очередь нужно решать задачу.
Vitaly
Как по мне Clean Architecture рулит
Mike
Именно так и сделал телеграмм
кажется, в репе лежит обфусцированный, что бы нам ни говорили
Mike
Как по мне Clean Architecture рулит
твой вопрос «как тестировать?» неуместен, если ты попробовал паттерн и тебе понравилось
Roman
что-то нигде тут найти не могу
Gregory
Как по мне Clean Architecture рулит
это же вот та самая дисциплина специальной олимпиады, где ты берёшь простую штуку и размазываешь её по как можно большему количеству как можно более мелких классов?
Mike
Gregory
особенно удобно в чужом коде разбираться, который таким образом написан
Gregory
подожди, а ты все делаешь в одном классе?
например, я люблю на экранах со списками делать адаптеры и холдеры внутренними классами
Mike
Я вообще предпочитаю иметь один-два адаптера на проект. Очень гибких и расширяемых адаптера, конечно.
Gregory
один разработчик в ВК попытался так сделать, был высмеян нами с @bvitaliyg
ВК лагает
Mike
а я такой подход считаю говнокодом
кажется, ты предпочитаешь строго императивный подход
походу вк - приложение эталон
Konstantin
а кроме смеха там аргументы были?
Дмитрий
Всем привет! А у вас bitbucket работает?
Gregory
ВК лагает
поставь 4.0
Danil
Блин
Mike
что это значит?)
ООП — это история про полиморфизм
Gregory
Gregory
полиморфизм удобен, наследоване тоже, а инкапсуляция... да ну её в жопу