Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.86 KB | None | 0 0
  1. Chrome 55.0.2883 (Windows 7 0.0.0) LoginComponent Username field should be empty FAILED
  2. Failed: Unexpected value 'Http' imported by the module 'DynamicTestModule'
  3. Error: Unexpected value 'Http' imported by the module 'DynamicTestModule'
  4. TypeError: Cannot read property 'detectChanges' of undefined
  5. Chrome 55.0.2883 (Windows 7 0.0.0): Executed 4 of 4 (1 FAILED) (0 secs / 0.348 secs)
  6.  
  7. Chrome 55.0.2883 (Windows 7 0.0.0) LoginComponent Username field should be empty FAILED
  8. Error: DI Error
  9. Error: Uncaught (in promise): Error: No provider for Http!
  10. TypeError: Cannot read property 'detectChanges' of undefined
  11. Chrome 55.0.2883 (Windows 7 0.0.0): Executed 4 of 4 (1 FAILED) (0 secs / 0.456 secs)
  12.  
  13. <div class="login jumbotron center-block">
  14. <h1>Login</h1>
  15.  
  16. <form (ngSubmit)="onSubmit($event)" #loginForm="ngForm">
  17.  
  18. <div class="form-group">
  19. <label for="username">Username</label>
  20. <input type="text" class="form-control" [(ngModel)]="model.username" name="username"
  21. placeholder="Username" #username="ngModel" required>
  22. <div [hidden]="username.valid || username.pristine" class="alert alert-danger"> Username is required </div>
  23. </div>
  24. <div class="form-group">
  25. <label for="password">Password</label>
  26. <input type="password" class="form-control" [(ngModel)]="model.password" name="password" placeholder="Password" #password="ngModel" required>
  27. <div [hidden]="password.valid || password.pristine" class="alert alert-danger"> Password is required </div>
  28. </div>
  29.  
  30. <button type="submit" class="btn btn-default" [disabled]="!loginForm.form.valid" >Submit</button>
  31. <a [routerLink]="['/signup']">Click here to Signup</a>
  32. </form>
  33. </div>
  34.  
  35. import { Component } from '@angular/core';
  36. import { Router } from '@angular/router';
  37. import { LoginService } from '../services/login.service';
  38. import { User } from '../extensions/user.class';
  39.  
  40. @Component({
  41. moduleId: module.id,
  42. selector: 'login',
  43. templateUrl: '../templates/login.component.html',
  44. styleUrls: [ '../styles/login.component.css' ],
  45. providers: [ LoginService ]
  46. })
  47. export class LoginComponent {
  48.  
  49. private submitted = false;
  50. private model = new User();
  51.  
  52. constructor(
  53. private router: Router,
  54. private loginService: LoginService
  55. ) {}
  56.  
  57. public onSubmit(event: any): void {
  58. event.preventDefault();
  59. if ( ! this.submitted ) {
  60. this.submitted = true;
  61.  
  62. if ( this.model.username && this.model.password ) {
  63. this.loginService.login(this.model).then( (token) => {
  64. localStorage.setItem('id_token', token.id);
  65. this.router.navigate(['home']);
  66. }).catch( (error) => this.onLoginFailed(error) );
  67. } else {
  68. console.warn('No username or password provided');
  69. }
  70.  
  71. }
  72. }
  73.  
  74. private onLoginFailed( error: any ): void {
  75. //// errors are already handled in login-service ////
  76. console.error(error);
  77. this.submitted = false; /// reset form submit funcitonality ///
  78. }
  79.  
  80. public signup(event: any): void {
  81. event.preventDefault();
  82. this.router.navigate(['signup']);
  83. }
  84. }
  85.  
  86. import { async } from '@angular/core/testing';
  87.  
  88. import { FormsModule } from '@angular/forms';
  89. import { RouterTestingModule } from '@angular/router/testing';
  90. import { Component } from '@angular/core';
  91. import { Location } from '@angular/common';
  92.  
  93. import { LoginComponent } from './login.component';
  94. import { LoginService } from '../services/login.service';
  95. import { Http } from '@angular/http';
  96.  
  97. import { User } from '../extensions/user.class';
  98.  
  99. @Component({
  100. template: ''
  101. })
  102. class DummyComponent{}
  103.  
  104. class LoginServiceStub {
  105. login( user: User ){
  106. return true;
  107. }
  108. }
  109.  
  110. describe('LoginComponent', () => {
  111. let comp: LoginComponent;
  112. let fixture: ComponentFixture<LoginComponent>;
  113. let de: DebugElement;
  114. let el: HTMLElement;
  115. let location: Location;
  116.  
  117. // async beforeEach
  118. beforeEach( async(() => {
  119.  
  120. TestBed.configureTestingModule({
  121. declarations: [ LoginComponent, DummyComponent ], // declare the test component
  122. providers: [
  123. { provide: LoginService, useClass: LoginServiceStub }
  124. ],
  125. imports: [
  126. FormsModule ,
  127. RouterTestingModule.withRoutes([
  128. { path: 'singup', component: DummyComponent }
  129. ])
  130. ]
  131. }).compileComponents() // compile template and css
  132. .then( () => {
  133. fixture = TestBed.createComponent(LoginComponent);
  134. comp = fixture.componentInstance; // LoginComponent test instance
  135. de = fixture.debugElement.query(By.css('input[name="username"]'));
  136. el = de.nativeElement;
  137. });
  138.  
  139. }));
  140.  
  141. it('Username field should be empty', () => {
  142. fixture.detectChanges();
  143. expect(el.textContent).toContain('');
  144. });
  145.  
  146. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement