Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
50b6c99
fix(TimelineMarkers): Unsubscribing hidden markers correctly
Feb 27, 2019
48546c6
Merge pull request #525 from gaston-niglia/fix/unsubscribing-markers
Ilaiwi Mar 17, 2019
19f3db6
Merge branch 'develop' of https://github.com/namespace-ee/react-calen…
Ilaiwi Mar 18, 2019
a6486e8
Merge branch 'custom-headers' of https://github.com/FoothillSolutions…
Ilaiwi Mar 18, 2019
f8657e0
fix broken tests
Ilaiwi Mar 18, 2019
7703421
refactor to use context and not timeline
Ilaiwi Mar 19, 2019
aa566a0
check tests and add TODOs
Ilaiwi Mar 19, 2019
2069dca
finalize SidebarHeader and TimelineHeader tests
Ilaiwi Mar 20, 2019
44d367f
Custom headers tests
Ilaiwi Mar 24, 2019
db46dd4
DateHeader
Ilaiwi Mar 25, 2019
74ffee4
fix broken tests
Ilaiwi Mar 26, 2019
46e72f9
delete snapshots + fix travis moment errors
Ilaiwi Mar 26, 2019
11662cd
pull code changes from tests
Ilaiwi Mar 26, 2019
1199d66
Merge branch 'custom-headers' of https://github.com/FoothillSolutions…
Ilaiwi Mar 26, 2019
8eb05f2
headerRef + sticky header
Ilaiwi Mar 26, 2019
8fb2a7a
unify left width calculation
Ilaiwi Mar 26, 2019
78a8daa
add documentation for left and right sidebar header
Ilaiwi Mar 26, 2019
8a86071
delete headerLabelHeight + remove extra header classes
Ilaiwi Mar 26, 2019
9abdd45
Merge branch 'custom-headers' of https://github.com/FoothillSolutions…
Ilaiwi Mar 26, 2019
e98aacf
pass primary as unit and remove secondary
Ilaiwi Mar 27, 2019
d727683
primary header
Ilaiwi Mar 27, 2019
4c02b20
Merge branch 'custom-headers' of https://github.com/FoothillSolutions…
Ilaiwi Mar 27, 2019
96e3e47
sidebarheader to accept component as a child
Ilaiwi Mar 27, 2019
f018881
convert DateHeader and CustomHeader to use headerData
Ilaiwi Mar 27, 2019
34f2c28
remove labelFormat object option
Ilaiwi Mar 28, 2019
766220e
remove inline styles and replace them with classnames
Ilaiwi Mar 28, 2019
d5cba6e
update readme
Ilaiwi Mar 28, 2019
9ab5d4e
add height prop
Ilaiwi Apr 1, 2019
6aced20
merge headers
Ilaiwi Apr 3, 2019
ad92d55
fix failing height test
Ilaiwi Apr 3, 2019
b267cb7
Merge branch 'custom-headers-test' of https://github.com/FoothillSolu…
Ilaiwi Apr 3, 2019
527d339
wdith
Ilaiwi Apr 3, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
241 changes: 72 additions & 169 deletions README.md

Large diffs are not rendered by default.

10 changes: 7 additions & 3 deletions __fixtures__/stateAndProps.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,23 @@
import { defaultKeys } from 'lib/default-config'
import {items} from './itemsAndGroups'

export const visibleTimeStart = 1540501200000
export const visibleTimeEnd = 1540587600000

export const props = {
keys: defaultKeys,
lineHeight: 30,
stackItems: 'space',
itemHeightRatio: 0.75
itemHeightRatio: 0.75,
visibleTimeEnd,
visibleTimeStart,
}

export const propsNoStack = {
...props,
stackItems: false,
}

export const visibleTimeStart = 1540501200000
export const visibleTimeEnd = 1540587600000

export const state = {
draggingItem: undefined,
Expand Down
553 changes: 341 additions & 212 deletions __tests__/components/Headers/CustomHeader.test.js

Large diffs are not rendered by default.

645 changes: 362 additions & 283 deletions __tests__/components/Headers/DateHeader.test.js

Large diffs are not rendered by default.

259 changes: 127 additions & 132 deletions __tests__/components/Headers/SideBarHeader.test.js
Original file line number Diff line number Diff line change
@@ -1,164 +1,159 @@
import React from 'react'
import { render, cleanup, within } from 'react-testing-library'
import Timeline from 'lib/Timeline'
import { render, cleanup } from 'react-testing-library'
import DateHeader from 'lib/headers/DateHeader'
import SidebarHeader from 'lib/headers/SidebarHeader'
import TimelineHeaders from 'lib/headers/TimelineHeaders'
import 'jest-dom/extend-expect'
import { RenderHeadersWrapper } from '../../test-utility/header-renderer'
import {
renderSidebarHeaderWithCustomValues,
renderTwoSidebarHeadersWithCustomValues
} from '../../test-utility/headerRenderers'

import moment from 'moment'
describe('Testing SidebarHeader Component', () => {
afterEach(cleanup)

import { items, groups } from '../../../__fixtures__/itemsAndGroups'
//TODO: rename test
it('Given sidebarHeader When pass style with overridden (width) Then it should not override the default values', () => {
const { getByTestId, debug } = renderSidebarHeaderWithCustomValues({
props: { style: { width: 250 } }
})
const { width } = getComputedStyle(getByTestId('sidebarHeader'))
expect(width).not.toBe('250px')
})

it('Given sidebarHeader When pass style Then it show on the sidebar', () => {
const { getByTestId } = renderSidebarHeaderWithCustomValues({
props: { style: { color: 'white' } }
})
const { color } = getComputedStyle(getByTestId('sidebarHeader'))
expect(color).toBe('white')
})

const defaultProps = {
groups,
items,
defaultTimeStart: moment('1995-12-25').add(-12, 'hour'),
defaultTimeEnd: moment('1995-12-25').add(12, 'hour')
}
it('Given SidebarHeader When a render function Then it will be rendered', () => {
const renderer = jest.fn(({ getRootProps }) => {
return (
<div data-testid="leftSidebarHeader" {...getRootProps()}>
Left
</div>
)
})
const { getByTestId } = render(
<RenderHeadersWrapper>
<TimelineHeaders>
<SidebarHeader>{renderer}</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</RenderHeadersWrapper>
)
expect(renderer).toHaveBeenCalled()
expect(getByTestId('leftSidebarHeader')).toBeInTheDocument()
})

it('Given SidebarHeader When passing props to SidebarHeader it should be passed to the renderProp', () => {
const renderer = jest.fn(({ getRootProps }) => {
return (
<div data-testid="leftSidebarHeader" {...getRootProps()}>
Left
</div>
)
})
const extraProps = {
someData: 'data'
}
const { getByTestId } = render(
<RenderHeadersWrapper>
<TimelineHeaders>
<SidebarHeader headerData={extraProps}>{renderer}</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</RenderHeadersWrapper>
)
expect(renderer).toHaveBeenCalled()
expect(renderer.mock.calls[0][0].data).toBe(extraProps)
})

describe("Testing SidebarHeader Component", () => {
afterEach(cleanup)
// Testing The Example In The Docs
it("Given SidebarHeader When rendered Then it should shown correctly in the timeline", () => {
const { container } = render(
<Timeline
{...defaultProps}
>
it('Given SidebarHeader When rendered Then it should shown correctly in the timeline', () => {
const { getByTestId } = render(
<RenderHeadersWrapper>
<TimelineHeaders>
<SidebarHeader>
{({ getRootProps }) => {
return <div data-testid="leftSidebarHeader" {...getRootProps()}>Left</div>
return (
<div data-testid="leftSidebarHeader" {...getRootProps()}>
Left
</div>
)
}}
</SidebarHeader>
<SidebarHeader variant="right">
{({ getRootProps }) => {
return <div data-testid="rightSidebarHeader" {...getRootProps()}>Right</div>
return (
<div data-testid="rightSidebarHeader" {...getRootProps()}>
Right
</div>
)
}}
</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</Timeline>
</RenderHeadersWrapper>
)

const { getByTestId } = within(container)

expect(getByTestId('leftSidebarHeader')).toBeInTheDocument()
expect(getByTestId('rightSidebarHeader')).toBeInTheDocument()

expect(getByTestId('leftSidebarHeader').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getByTestId('rightSidebarHeader').previousElementSibling).toHaveAttribute('data-testid', 'headerContainer')
})

it("Given SidebarHeader When passing no variant prop Then it should rendered above the left sidebar", () => {
const { getByTestId, getAllByTestId } = renderSidebarHeaderWithCustomValues()
expect(getByTestId('sidebarHeader')).toBeInTheDocument()
expect(getByTestId('sidebarHeader').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getAllByTestId('sidebarHeader')).toHaveLength(1)


})
it("Given SidebarHeader When passing variant prop with left value Then it should rendered above the left sidebar", () => {
const { getByTestId, getAllByTestId } = renderSidebarHeaderWithCustomValues({ variant: "left" })
expect(getByTestId('sidebarHeader')).toBeInTheDocument()
expect(getByTestId('sidebarHeader').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getAllByTestId('sidebarHeader')).toHaveLength(1)
})
it("Given SidebarHeader When passing variant prop with right value Then it should rendered above the right sidebar", () => {
const { getByTestId, getAllByTestId } = renderSidebarHeaderWithCustomValues({ variant: "right" })
expect(getByTestId('sidebarHeader')).toBeInTheDocument()
expect(getByTestId('sidebarHeader').previousElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getAllByTestId('sidebarHeader')).toHaveLength(1)
})

it("Given SidebarHeader When passing variant prop with unusual value Then it should rendered above the left sidebar by default", () => {
const { getByTestId } = renderSidebarHeaderWithCustomValues({ variant: "" })
expect(getByTestId('sidebarHeader')).toBeInTheDocument()
expect(getByTestId('sidebarHeader').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
})

it("Given SidebarHeader When passing props to the props getter Then it should rendered correctly", () => {
const { getByTestId } = renderSidebarHeaderWithCustomValues({ props: { style: { width: 250 } } })
const { width } = getComputedStyle(getByTestId("sidebarHeader"))
expect(width).toBe("250px")
})

it("Given SidebarHeader When passing children to it Then it should rendered correctly", () => {
const { getByText } = renderSidebarHeaderWithCustomValues()
expect(getByText("Should Be Rendred")).toBeInTheDocument()
})

it("Given sidebarheader When pass a variant and props Then it should render both correctly", () => {
const { getByTestId } = renderSidebarHeaderWithCustomValues({ props: { style: { width: 250 }, variant: "left" } })
const { width } = getComputedStyle(getByTestId("sidebarHeader"))
expect(width).toBe("250px")
expect(getByTestId('sidebarHeader').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getByTestId('leftSidebarHeader').nextElementSibling).toHaveAttribute(
'data-testid',
'headerContainer'
)
expect(
getByTestId('rightSidebarHeader').previousElementSibling
).toHaveAttribute('data-testid', 'headerContainer')
})

it("Given two sidebarheaders When pass a variants and props Then it should render both correctly", () => {
const { getByText } = renderTwoSidebarHeadersWithCustomValues({ props: { style: { width: 250 } } })
const { width: leftWidth } = getComputedStyle(getByText('LeftSideBar'))
const { width: rightWidth } = getComputedStyle(getByText('RightSideBar'))
expect(leftWidth).toBe("250px")
expect(rightWidth).toBe("250px")
expect(getByText('LeftSideBar').nextElementSibling).toHaveAttribute('data-testid', 'headerContainer')
expect(getByText('RightSideBar').previousElementSibling).toHaveAttribute('data-testid', 'headerContainer')
it('Given SideBarHeader When passing a react stateless component as a child Then it should render', () => {
const Renderer = ({ getRootProps }) => {
return (
<div data-testid="leftSidebarHeader" {...getRootProps()}>
Left
</div>
)
}
const { getByText } = render(
<RenderHeadersWrapper>
<TimelineHeaders>
<SidebarHeader>{Renderer}</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</RenderHeadersWrapper>
)
expect(getByText('Left')).toBeInTheDocument()
})

it('Given SidebarHeader When Pass an props obj to props renderer Then it should render it correctly', () => {
const { getByTestId } = renderSidebarHeaderWithCustomValues({ props: { 'aria-hidden': false } })
expect(getByTestId("sidebarHeader")).toHaveAttribute('aria-hidden')
it('Given SideBarHeader When passing a react stateful component as a child Then it should render', () => {
class Renderer extends React.Component {
render() {
const { getRootProps } = this.props
return (
<div data-testid="leftSidebarHeader" {...getRootProps()}>
Left
</div>
)
}
}
const { getByText } = render(
<RenderHeadersWrapper>
<TimelineHeaders>
<SidebarHeader>{Renderer}</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</RenderHeadersWrapper>
)
expect(getByText('Left')).toBeInTheDocument()
})

})


function renderSidebarHeaderWithCustomValues({ variant = undefined, props, rightSidebarWidth } = {}) {
return render(<Timeline
{...defaultProps}
rightSidebarWidth={rightSidebarWidth}
>
<TimelineHeaders>
<SidebarHeader variant={variant} props={props}>
{({ getRootProps }, extraProps) => {
return <div data-testid="sidebarHeader" {...getRootProps(props)} {...extraProps}>SidebarHeader
<div>Should Be Rendred</div>
</div>
}}
</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</Timeline>
)
}


function renderTwoSidebarHeadersWithCustomValues({ props, rightSidebarWidth } = {}) {
return render(<Timeline
{...defaultProps}
rightSidebarWidth={rightSidebarWidth}
>
<TimelineHeaders>
<SidebarHeader variant={"left"} props={props}>
{({ getRootProps }) => {
return <div {...getRootProps(props)} >LeftSideBar
<div>Should Be Rendred</div>
</div>
}}
</SidebarHeader>
<SidebarHeader variant={"right"} props={props}>
{({ getRootProps }, props) => {
return <div {...getRootProps(props)}>RightSideBar
</div>
}}
</SidebarHeader>
<DateHeader primaryHeader />
<DateHeader />
</TimelineHeaders>
</Timeline>
)
}

Loading