Skip to content

Commit

Permalink
Merge pull request #233 from ooni/rebased_tests
Browse files Browse the repository at this point in the history
Week 2 tests
  • Loading branch information
sarathms committed Aug 9, 2021
2 parents db725e6 + 8aa4ea3 commit f4b71c5
Show file tree
Hide file tree
Showing 5 changed files with 149 additions and 6 deletions.
1 change: 0 additions & 1 deletion package.json
Expand Up @@ -25,7 +25,6 @@
"publish:win": "yarn run build:clean && electron-builder --win -p always",
"icon-gen": "icon-gen -i static/Icon-Color.svg -o main/static/icons -r -m ico,icns",
"lint": "eslint --ignore-path .gitignore .",
"test:current": "jest TestGroupInDetail.test.js -c test/lib/unit.config.js",
"test:unit": "jest -c test/lib/unit.config.js",
"test:e2e": "jest -c test/lib/integration.config.js --testRegex 'e2e.js' --runInBand",
"postinstall": "electron-builder install-app-deps",
Expand Down
15 changes: 10 additions & 5 deletions renderer/components/Sidebar.js
Expand Up @@ -7,7 +7,6 @@ import {
Flex,
Box
} from 'ooni-components'
import Link from 'next/link'
import { FormattedMessage } from 'react-intl'
import OONILogo from 'ooni-components/components/svgs/logos/Probe-HorizontalMonochrome.svg'
import { MdWeb, MdHistory } from 'react-icons/md'
Expand Down Expand Up @@ -48,9 +47,15 @@ const ColoredStrip = styled.span`

const NavItem = ({href, icon, label, pathName}) => {
const isActive = pathName === href
const router = useRouter()

const handleLinkClick = () => {
router.push(href)
}

return (
<StyledNavItem isActive={isActive}>
<Link href={href}>
<Flex alignItems='center' onClick={handleLinkClick} data-testid={`sidebar-item-${href.substring(1)}`}>
<Flex alignItems='center'>
<Box>
{icon}
Expand All @@ -59,7 +64,7 @@ const NavItem = ({href, icon, label, pathName}) => {
{label}
</Box>
</Flex>
</Link>
</Flex>
<ColoredStrip active={isActive} />
</StyledNavItem>
)
Expand Down Expand Up @@ -132,7 +137,7 @@ const Sidebar = ({ children }) => {
</Box>
<Box mb={2}>
<NoRTLFlip>
<Text fontSize={12} textAlign='right' color='gray7'>
<Text fontSize={12} textAlign='right' color='gray7' data-testid='sidebar-version-number'>
{version}
</Text>
</NoRTLFlip>
Expand All @@ -154,4 +159,4 @@ Sidebar.propTypes = {
}
export default Sidebar

export { navigationPaths }
export { navigationPaths, NavItem }
74 changes: 74 additions & 0 deletions renderer/components/__tests__/Sidebar.test.js
@@ -0,0 +1,74 @@
/**
* @jest-environment jsdom
*/

import React from 'react'
import { screen, render, cleanup, fireEvent } from '@testing-library/react'
import { theme } from 'ooni-components'
import { ThemeProvider } from 'styled-components'
import { IntlProvider } from 'react-intl'
import English from '../../../lang/en.json'

import Sidebar from '../Sidebar'
import { version } from '../../../package.json'

// Mocking useRouter()
const mockRouterPush = jest.fn()
jest.mock('next/router', () => ({
useRouter() {
return {
route: '/',
pathname: '/dashboard',
push: mockRouterPush,
}
},
}))

const renderComponent = (component, locale = 'en', messages = English) => {
return render(
<IntlProvider locale={locale} messages={messages}>
<ThemeProvider theme={theme}>{component}</ThemeProvider>
</IntlProvider>
)
}

describe('Tests for Sidebar component', () => {
beforeEach(() => {
renderComponent(
<Sidebar>
<></>
</Sidebar>
)
})

afterEach(() => {
cleanup()
jest.clearAllMocks()
})

test('Displays the correct version', async () => {
const versionNumber = screen.getByTestId('sidebar-version-number')
expect(versionNumber.innerHTML).toMatch(version)
})

test('Clicking on Dashboard NavItem calls pushes router to /dashboard', async () => {
const navItemDashboard = screen.getByTestId('sidebar-item-dashboard')
fireEvent.click(navItemDashboard)

expect(mockRouterPush).toHaveBeenLastCalledWith('/dashboard')
})

test('Clicking on Test Results NavItem calls pushes router to /test-results', async () => {
const navItemTestResults = screen.getByTestId('sidebar-item-test-results')
fireEvent.click(navItemTestResults)

expect(mockRouterPush).toHaveBeenLastCalledWith('/test-results')
})

test('Clicking on Settings NavItem calls pushes router to /settings', async () => {
const navItemSettings = screen.getByTestId('sidebar-item-settings')
fireEvent.click(navItemSettings)

expect(mockRouterPush).toHaveBeenLastCalledWith('/settings')
})
})
61 changes: 61 additions & 0 deletions renderer/components/dashboard/__tests__/RunTestCard.test.js
@@ -0,0 +1,61 @@
/**
* @jest-environment jsdom
*/

import React from 'react'
import { screen, render, cleanup, fireEvent } from '@testing-library/react'
import { theme } from 'ooni-components'
import { ThemeProvider } from 'styled-components'
import { IntlProvider } from 'react-intl'
import English from '../../../../lang/en.json'
import { useRouter } from 'next/router'

import RunTestCard from '../RunTestCard'
import { testList } from '../../nettests'

// Mocking useRouter()
const mockPush = jest.fn()
jest.mock('next/router', () => ({
useRouter() {
return {
route: '/',
pathname: '/dashboard',
push: mockPush
}
},
}))

const renderComponent = (component, locale = 'en', messages = English) => {
return render(
<IntlProvider locale={locale} messages={messages}>
<ThemeProvider theme={theme}>{component}</ThemeProvider>
</IntlProvider>
)
}

describe('Tests for RunTestCard component', () => {
const router = useRouter()

afterEach(() => {
cleanup()
jest.clearAllMocks()
})

test('Individual Test Cards work as expected', async () => {
const websiteDetails = testList[0]
renderComponent(
<RunTestCard
onClick={() =>
router.push('/dashboard/[testGroup]', `/dashboard/${websiteDetails.key}`)
}
id={websiteDetails.key}
{...websiteDetails}
/>
)

const testCard = screen.getByTestId('card')
fireEvent.click(testCard)

expect(mockPush).toHaveBeenCalledWith('/dashboard/[testGroup]', `/dashboard/${websiteDetails.key}`)
})
})
4 changes: 4 additions & 0 deletions renderer/components/onboard/__tests__/Stepper.test.js
Expand Up @@ -11,9 +11,11 @@ import renderer from 'react-test-renderer'
import Stepper from '../Stepper'

describe('Tests from Stepper component', () => {

afterEach(() => {
cleanup()
})

test('With active index 0', async () => {
const component = renderer
.create(
Expand All @@ -24,6 +26,7 @@ describe('Tests from Stepper component', () => {
.toJSON()
expect(component).toMatchSnapshot()
})

test('With active index 1', async () => {
const component = renderer
.create(
Expand All @@ -34,6 +37,7 @@ describe('Tests from Stepper component', () => {
.toJSON()
expect(component).toMatchSnapshot()
})

test('With active index 2', async () => {
const component = renderer
.create(
Expand Down

0 comments on commit f4b71c5

Please sign in to comment.