@angular2Эта группа больше не существует

Страница 173 из 179
Alexey
03.02.2017
12:54:50
полностью абстраируясь от браузера

на NativeScript например

Олег
03.02.2017
12:55:09
щас бы html тестить

Alexey
03.02.2017
12:55:38
то смысла нет писать тесты с рендерингом дома

Google
Alexey
03.02.2017
12:56:11
т.к там ты будешь пытаться сделать user-form универсальным компонентом и под веб и под нативные моб платформы

Gleb
03.02.2017
12:56:13
it('should emit submit on valid form', fakeAsync(() => { const pass = 'valid_password_123456'; page.emailInput.value = 'valid_value@mail.ru'; page.passwordInput.value = pass; fixture.detectChanges(); tick(); expect(component.form.valid).toEqual(true); const saveSpy = spyOn(component.onFormSubmit, 'emit'); const btnInst: DxButtonComponent = page.submitBtn.componentInstance; btnInst.onClick.emit(); expect(saveSpy.calls.any()).toBe(true); })); Вот например, в таком духе тест годится на то чтобы претендовать на покрытие кейса о вызове евента если форма валидна?

и ниже скажем не валидное что то ввожу и expect что не вызвался emit, и все я покрыл логинилку считается?

Олег
03.02.2017
12:57:54
это что ты протестировал? что ангуляр работает?

Alexey
03.02.2017
12:57:56
я бы еще проверил что там пришло в saveSpy

мы же ожидаем объект конкретного типа чтобы потом например в api отправить

Gleb
03.02.2017
12:58:40
Ну и это да

Alexey
03.02.2017
12:58:54
а так да, я разделяю такой подход к тестированию

Gleb
03.02.2017
13:01:41
@dersizes Бесполезный тест ?

Олег
03.02.2017
13:03:22
вам видней, лул

Alexey
03.02.2017
13:04:58
да, еще при невалидном вводе можно проверить вывод ошибок/подсказок

если они есть

Gleb
03.02.2017
13:05:57
@dersizes Ну у меня в название кейса написано то что я тестирую, к любой критике открыт и даже рад если есть какие то поправки =)

Google
Олег
03.02.2017
13:06:34
https://github.com/angular/angular/blob/master/modules/%40angular/forms/test/validators_spec.ts

я к этому

вы щас во второй слой покрывыете тестами ангуляр

Gleb
03.02.2017
13:09:03
Да тоже такая мысль была, разве что целиком кейса нет что будет вызван emit, а лишь отдельных валидаторов, но с другой стороны expect(component.form.valid).toEqual(true); действительно очевидная

Alexey
03.02.2017
13:10:08
нет, это не так, я не предлагаю проверять инпуты отдельно или стандартные валидаторы типа required и expect(component.form.valid).toEqual(true) можно не проверять, у тебя есть какая-то форма <user-form> в ней может быть что угодно

Иван
03.02.2017
13:10:28
коллеги, а можно как-то ngIf юзать с ngFor не использовав свою директиву?

Alexey
03.02.2017
13:10:33
кастомные контролы, как уже сказали, сложная логика (выбрал одно поле, появились еще другие)

и много чего еще

тебе нужно быть уверенным как работает <user-form> и проверить все use cases

тот же вывод ошибок валидации

Output-свойств тоже может быть больше, кейсы бывают разные

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

Олег
03.02.2017
13:14:21
будете @Component @Input @Output покрывать?

Alexey
03.02.2017
13:15:21
то в какой момент твой компонент вызывает определенный Output и то что он туда отправляет это далеко за рамками angular

это твоя логика

Alexey
03.02.2017
13:15:43
и ты ее должен тестировать

Gleb
03.02.2017
13:15:45
https://angular.io/resources/live-examples/testing/ts/app-specs.eplnkr.html У них там пол тестов тогда покрывают работу самого ангуляра

Google
Алексей
03.02.2017
13:16:44
плс
ты иммешь ввиду ngIf и ngFor использовать на одной DOM ноде?

Иван
03.02.2017
13:20:25
ну да

я хочу на каждую итерацию цикла проверять условие

Igor
03.02.2017
13:21:39
не проще коллекцию отфилтровать?

Alexey
03.02.2017
13:22:06
согласен, комбинация ngFor и ngIf это фильтр внутри ngFor

Алексей
03.02.2017
13:23:12
ну да
Так запретили делать.. из за того что ngIf и ngFor это сентаксический сахар и в зависимости от ситуации было разное поведение. Как и сказали - выход это Pipe либо <template [ng-if]="showCategory()"> <div *ng-for="#category of categories"> Category: {{ category.displayName }} </div> </template>

Иван
03.02.2017
13:24:49
спасибо

Alexey
03.02.2017
13:24:54
если присутствие элемента в доме не критично и подразумевается что по клику куда-либо этот элемент нужно будет показать то можно сделать <div *ngFor="..." [hidden]="!showCategory()">

Иван
03.02.2017
13:29:13
Я сделал <div ngFor> <component ngIf> </component> </div>

Артем
03.02.2017
13:32:55
Я сделал <div ngFor> <component ngIf> </component> </div>
А вот так вот не будет лишних элементов: <ng-container *ngFor='foo'> <ng-container *ngIf='bar'> ... </ng-container> </ng-container>

Иван
03.02.2017
13:33:58
<div *ngFor="let contact of contactLibrary"> <app-contact-block *ngIf="contacts.indexOf(contact.id) !== -1" [title]="contact.title" [contact_id]="contact.id" [mask]="" [(contactInput)]="contactInput" (contactOutput)="sendToGeneral($event)" ></app-contact-block> </div>

Артем
03.02.2017
13:35:17
не совсем понимаю как мне применить это к своему случаю
Вот так можно <ng-container *ngFor="let contact of contactLibrary"> <app-contact-block *ngIf="contacts.indexOf(contact.id) !== -1" [title]="contact.title" [contact_id]="contact.id" [mask]="" [(contactInput)]="contactInput" (contactOutput)="sendToGeneral($event)" ></app-contact-block> </ng-container>

Иван
03.02.2017
13:35:49
а в чем разница если не секрет?

аа понял

погуглил

спасибо за помощь

Артем
03.02.2017
13:37:35
а в чем разница если не секрет?
ну если вас не волнует что у вас там лишний div, то нет разницы) div ведет себя как блочный элемент, а с ng-container там просто не будет лишнего ничего

Google
Иван
03.02.2017
13:40:06
Извините, а где вы вообще берете эти темплейт и ng-container? в оф доке они описаны?

ткните носом

Артем
03.02.2017
13:40:22
template тоже никаких DOM элементов лишних не генерирует
ага, ну если вы помните синтаксис всех структурных директив и считаете, что сахарок не нужен, то так можно делать)

Иван
03.02.2017
13:41:23
спасибо

Артем
03.02.2017
13:41:30
dhfj
03.02.2017
13:42:16
Гайз, привет, а есть ресурсы где по ангуляру и нэйтиву на русском можно почитать, с примерчиками желательно?

Иван
03.02.2017
13:42:47
я этого не знал. благодарю еще раз

dhfj
03.02.2017
13:44:12
В https://telegram.me/nativescript_ru Недавно скидывали
спасибо тупанул )) норм если еще что то подобное будет буду благодарен

https://tehnojam.pro/tag/nativescript/
ооо, вот то что нужно пасиб

Gleb
03.02.2017
15:03:08
Кто нибудт организовывал динамические формы? чтобы по модельки сразу построить можно было шаблонную форму?

Alexey
03.02.2017
15:04:10
да

Alexey
03.02.2017
15:04:33
мы формат json-schema.org используем

Gleb
03.02.2017
15:07:27
Это вы так покрывали кейс дублирования кода или именно динамические филды были в базе?

@bro_science @sedruid

Google
Alexey
03.02.2017
15:08:53
в бэкенде они хранятся, да

из API получаешь схему, потом по ней строишь форму

Nikita
03.02.2017
15:09:30
динамические, схема объекта описывается тоже схемой и меняется пользователем,

Gleb
03.02.2017
15:10:14
Мне в админку бы просто, у меня на беке loopback генерирует SDK, этим бы воспользоваться

т.е готовую модельку на TS выдает, как то бы замапить ее на форму и все, они там однотипные, единственно там валидации наверное прокидывать геморно?

Nikita
03.02.2017
15:13:14
можно описать в схеме и валидацию,

мы для этого немного расширяли синтаксих схемы

Gleb
03.02.2017
15:17:54
https://github.com/udos86/ng2-dynamic-forms Вот тут у них готовые я вижу есть варианты для bootstrap итд, у меня комерч. devextreme для него мб реализовать интерфейсы какие, мб самому уж написать наподобие что то

Alexey
03.02.2017
15:29:05
самому конечно писать

Nikita
03.02.2017
15:29:16
там не сложно самому всё написать на каждый тип данных по компоненту, да дерева обход

интересно если сделать у такого объекта итератор по его обходу, то ng-for по идеи должен его обойти

Gleb
03.02.2017
15:33:04
Во идея кстати

ну все я вдохновлен, так и поступлю, единстенно что у меня там готовый TS interface беком раз выдается замаплюсь на typeof тогда наверное

Nikita
03.02.2017
15:34:35
расскажи потом о результатах, а то мне любопытно =)

Алишер
03.02.2017
15:36:23
Подскажите пожалуйста, как можно при ngSubmit, чтобы из формы бралось не только <input> {name: value} , но еще и какой -нибудь атрибут ?

Алексей
03.02.2017
15:46:59
Подскажите пожалуйста, как можно при ngSubmit, чтобы из формы бралось не только <input> {name: value} , но еще и какой -нибудь атрибут ?
<form #f="ngForm" (ngSubmit)="onSubmit(f.value)"> <div #other></div> onSubmit(form: any): void { form.OTHER_PROPERTY = this.other.nativeElement.nativeElement.getAttribute('attributename'); } Но я бы посоветовал вместо DIV или любого другово элемента создать компонент и у него создать свойство и из него заберать значение. В обход прямого обращения к DOM.

Алишер
03.02.2017
15:49:43
спасибо! просто в форме несколько инпутов, а мне нужно помимо значений из этих инпутов взять еще в связке название инпута на русском, которое отображается в span над этим инпутом.

Igor
03.02.2017
15:51:06
понимаю что наверное глупый вопрос, нооо ... зачем вам значение из спана?)))

Страница 173 из 179

Эта группа больше не существует Эта группа больше не существует