Hi, Perhaps more than the library alone, I would love a general answer as on how to go about testing such methods. Basically, I have a method that simply returns details of a google user - as seen below.
export class GoogleLoginComponent implements OnInit { @Output() userDetails = new EventEmitter<any>(); //else false or user details spin = false; signInWithGoogle() { /* user clicked the Google Login button. Here we just obtain the user data as part of the login attempt and pass it to the parent component, assuming it is OAF email or send */ let vm: any = this; vm.spin = true; this.authService.signIn(GoogleLoginProvider.PROVIDER_ID).then( userData => { const email = userData.email.toLocaleLowerCase(); console.log(`email is ${email}`) //is it from our company? if (email.includes("@abc.net")) { // cool. So we got the email. Now we emit the details of the user vm.userDetails.emit(userData); vm.spin = false; } else { vm.spin = false; vm.userDetails.emit(false); } }, error => { vm.spin = false; vm.userDetails.emit(false); } ); } } The component is is used in parent components as <app-google-login (userDetails)="emittedGoogleUserInformation($event)"></app-google-login> and I am indeed getting correct details of the google login . Now the test is simply for the spin at least (if possible userDetails as well). import { TestBed, async, inject, getTestBed } from "@angular/core/testing"; import { GoogleLoginComponent } from "./google-login.component"; import { SocialLoginModule, AuthServiceConfig , AuthService , GoogleLoginProvider, SocialUser } from "angularx-social-login"; var sinon = require("sinon"); let config = new AuthServiceConfig([ { id: GoogleLoginProvider.PROVIDER_ID, provider: new GoogleLoginProvider("google id goes here") } ]); export function provideConfig() { return config; } describe("Component: Login to Google", () => { let originalTimeout; beforeEach(async(() => { originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL; jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; TestBed.configureTestingModule({ imports:[], declarations: [GoogleLoginComponent], providers: [AuthService, SocialLoginModule , { provide: AuthServiceConfig, useFactory: provideConfig } ] }).compileComponents(); })); afterEach(function() { jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout; }); afterAll(function() { console.log('Done: Component Login to Google') }); describe(":", () => { const badUser = new SocialUser() badUser.email = 'a...@gmail.com' badUser.id = 'id' function setupTestBed() { const injector = getTestBed(); return injector.get(AuthService); } function setup() { const component = TestBed.createComponent(GoogleLoginComponent); return component; } it('User selected a non-company email', done => { const component = setup(); const app = component.debugElement.componentInstance; const authService = setupTestBed(); var post = sinon.stub(authService, "signIn").resolves(badUser); app.signInWithGoogle(); expect(app.spin).toEqual(false); post.restore(); }); }); }); The assertion fails because app.spin is true. However, console.log(userData) in signInWithGoogle() method does show incorrect email. It appears app.signInWithGoogle() don't go far enough or wait? Second failure is Uncaught Error: Uncaught (in promise): Object: {"error": "idpiframe_initialization_failed","details":"Not a valid origin for the client: http://localhost:9876 has not been whitelisted for client ID google id goes here. Please go to https://console.developers.google.com/ and whitelist this origin for your project's client ID."} thrown which is obvious and meaning I need to mock the social login/module somehow but I don't know where to begin. My bigger question for future is how does one go about mocking such libraries that are hard to test with little documentation online. -- You received this message because you are subscribed to the Google Groups "Angular and AngularJS discussion" group. To unsubscribe from this group and stop receiving emails from it, send an email to angular+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/angular/729c2961-1afa-4d7b-bc56-bbedc3eacea5%40googlegroups.com.