CFE-10 testing first page

This commit is contained in:
AmirHossein Mahmoodi
2023-09-25 11:29:30 +03:30
parent 8e736eeb28
commit 866cfddd2c
2 changed files with 55 additions and 23 deletions

View File

@@ -0,0 +1,44 @@
import {render, screen} from "@testing-library/react";
import MockAppWithProviders from "../../../../mocks/AppWithProvider";
import FirstComponent from "@/components/first";
import {server} from "../../../../mocks/server";
import {rest} from "msw";
import {GET_USER_ROUTE} from "@/core/data/apiRoutes";
describe('First page component', () => {
describe('Rendering', () => {
it('Should see app name text', () => {
render(<MockAppWithProviders Component={FirstComponent}/>)
const appNameElement = screen.getByTestId('app-name')
expect(appNameElement).toHaveTextContent('سامانه CRM')
});
});
describe('behavior', () => {
it('Should see login button when is not auth', async () => {
render(<MockAppWithProviders Component={FirstComponent}/>)
const buttonLoginOrDashboard = await screen.findByTestId('button-login-or-dashboard')
expect(buttonLoginOrDashboard).toHaveTextContent('ورود کارشناس')
expect(buttonLoginOrDashboard).not.toHaveTextContent('داشبورد')
});
it('Should see dashboard button when is auth', async () => {
localStorage.setItem("_token", 'token');
render(<MockAppWithProviders Component={FirstComponent}/>)
const buttonLoginOrDashboard = await screen.findByTestId('button-login-or-dashboard')
expect(buttonLoginOrDashboard).not.toHaveTextContent('ورود کارشناس')
expect(buttonLoginOrDashboard).toHaveTextContent('داشبورد')
});
it('Should see login button when token expire', async () => {
localStorage.setItem("_token", 'token');
server.use([
rest.get(GET_USER_ROUTE, (req, res, ctx) => {
return res(ctx.status(403))
})
])
render(<MockAppWithProviders Component={FirstComponent}/>)
const buttonLoginOrDashboard = await screen.findByTestId('button-login-or-dashboard')
expect(buttonLoginOrDashboard).toHaveTextContent('ورود کارشناس')
expect(buttonLoginOrDashboard).not.toHaveTextContent('داشبورد')
});
});
});

View File

@@ -14,31 +14,19 @@ const FirstComponent = () => {
<FullPageLayout sx={{p: 1}}> <FullPageLayout sx={{p: 1}}>
<CenterLayout spacing={3}> <CenterLayout spacing={3}>
<SvgDashboard width={300} height={200}/> <SvgDashboard width={300} height={200}/>
<Typography variant="h5" sx={{textAlign: "center"}}> <Typography variant="h5" data-testid="app-name" sx={{textAlign: "center"}}>
{t("app_name")} {t("app_name")}
</Typography> </Typography>
{isAuth ? ( <Button
<Button data-testid="button-login-or-dashboard"
variant="outlined" variant={isAuth ? "outlined" : "contained"}
component={NextLinkComposed} component={NextLinkComposed}
to={{ to={{
pathname: "/dashboard", pathname: isAuth ? "/dashboard" : "/login-expert",
}} }}
> >
{t("dashboard")} {isAuth ? t("dashboard") : t("login_expert")}
</Button> </Button>
) : (
<Button
sx={{mx: 2}}
variant="contained"
component={NextLinkComposed}
to={{
pathname: "/login-expert",
}}
>
{t("login_expert")}
</Button>
)}
</CenterLayout> </CenterLayout>
<Stack direction="row" alignItems="center" justifyContent="center"> <Stack direction="row" alignItems="center" justifyContent="center">
<Typography variant={"caption"} <Typography variant={"caption"}