0
30/05/2024 4:52 am
Topic starter
How can we cover the test case for the firebase sign up function so that in test cases the state is not blank?
import { getAuth, signInWithPopup, GoogleAuthProvider } from "firebase/auth";
signInWithGooglePopup = () => signInWithPopup(auth, googleProvider);
logGoogleUser = async () => {
const { user } = await this.signInWithGooglePopup();
this.setState({ googleUser: user.providerData[0] });
};
This topic was modified 1 year ago by sakibmemon
1 Answer
0
30/05/2024 4:57 am
Topic starter
You can try the code below to cover the Firebase functions and ensure the state is not blank.
1. Mock the firebase in test file
jest.mock("firebase/auth", () => {
return {
getAuth: jest.fn(),
GoogleAuthProvider: jest.fn(() => ({
setCustomParameters: jest.fn(),
})),
signInWithPopup: jest.fn(),
signInWithGooglePopup: jest.fn(),
logGoogleUser: jest.fn(),
};
});
jest.mock("firebase/app", () => ({ initializeApp: jest.fn() }));
2. And add mock implementation code in test case handler.
when("the user clicks on the Google login button", async () => {
instance = LogInWrapper.instance() as CustomGoogleLogInButton;
const loginBtn = LogInWrapper.findWhere(
(node: any) => node.prop("data-testid") === `loginWithGoogle`
).at(0);
const mockUser = {
providerData: [
{
displayName: "John Doe",
},
],
};
(signInWithPopup as jest.Mock).mockImplementation(() =>
Promise.resolve({ user: mockUser })
);
loginBtn.simulate("click");
await new Promise(setImmediate);
});