Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into fix-empty-spec-record
Browse files Browse the repository at this point in the history
  • Loading branch information
kuceb committed Mar 17, 2021
2 parents f1f74d0 + f2b880c commit b85f6e3
Show file tree
Hide file tree
Showing 38 changed files with 5,083 additions and 3,531 deletions.
3 changes: 2 additions & 1 deletion npm/create-cypress-tests/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"private": false,
"main": "index.js",
"scripts": {
"build": "yarn prepare-example && tsc -p ./tsconfig.json && chmod +x dist/src/index.js && node scripts/example copy-to ./dist/initial-template && copy src/**/*.template.js dist/src",
"build": "yarn prepare-example && tsc -p ./tsconfig.json && shx chmod +x dist/src/index.js && node scripts/example copy-to ./dist/initial-template && shx cp src/**/*.template.js dist/src",
"prepare-example": "node scripts/example copy-to ./initial-template",
"test": "cross-env TS_NODE_PROJECT=./tsconfig.test.json mocha --config .mocharc.json './src/**/*.test.ts'",
"test:watch": "yarn test -w"
Expand Down Expand Up @@ -34,6 +34,7 @@
"copy": "0.3.2",
"mocha": "7.1.1",
"mock-fs": "4.13.0",
"shx": "0.3.3",
"snap-shot-it": "7.9.3",
"typescript": "4.0.3"
},
Expand Down
8 changes: 8 additions & 0 deletions npm/design-system/.mocharc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"watch-ignore": [
"./test/_test-output",
"node_modules"
],
"require": "ts-node/register",
"exit": true
}
3 changes: 1 addition & 2 deletions npm/design-system/cypress.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,5 @@
"componentFolder": "src",
"experimentalComponentTesting": true,
"experimentalFetchPolyfill": true,
"fixturesFolder": false,
"supportFile": false
"fixturesFolder": false
}
2 changes: 2 additions & 0 deletions npm/design-system/cypress/support/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
import 'regenerator-runtime/runtime'
import 'cypress-real-events/support'
4 changes: 4 additions & 0 deletions npm/design-system/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@
"@fortawesome/free-brands-svg-icons": "5.15.2",
"@fortawesome/free-solid-svg-icons": "5.15.2",
"@fortawesome/react-fontawesome": "0.1.14",
"@iconify/icons-vscode-icons": "1.1.1",
"@iconify/react": "2.0.0-rc.8",
"classnames": "2.2.6",
"debug": "4.3.2"
},
Expand All @@ -41,6 +43,8 @@
"babel-loader": "8.0.6",
"css-loader": "2.1.1",
"cypress": "0.0.0-development",
"cypress-real-events": "1.1.0",
"mocha": "^7.0.1",
"react": "16.8.6",
"react-dom": "16.8.6",
"rollup": "^2.38.5",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
@use '../../index.scss' as *;

.nav {
user-select: none;
white-space: nowrap;
}

.ul {
margin-block-start: 0;
margin-block-end: 0;
margin-inline-start: 0;
margin-inline-end: 0;
padding-inline-start: 0;
&:before {
display: none;
}
}

.li.li {
padding-left: 20px;
}


.ul, .li {
position: relative;
list-style: none;
font-size: $text-s;
line-height: 1.6;
}

.a {
position: relative;
color: unset;
text-decoration: none;
display: inline-block;
width: 100%;
&:hover {
cursor: pointer;
}
}

.ul .ul {
margin-inline-start: $text-xs;
}

.isSelected, .isSelected:hover {
text-decoration: underline;
}
130 changes: 130 additions & 0 deletions npm/design-system/src/components/FileExplorer/FileExplorer.spec.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
import { mount } from '@cypress/react'
import React from 'react'
import { FileExplorer, FileComponentProps, FolderComponentProps } from './FileExplorer'
import { FileNode, makeFileHierarchy, TreeNode } from './helpers/makeFileHierarchy'

import styles from './FileExplorer.module.scss'

const specs: Cypress.Cypress['spec'][] = [
{
relative: 'foo/bar/foo.spec.js',
absolute: 'Users/code/foo/bar/foo.spec.js',
name: 'foo/bar/foo.spec.js',
},
{
relative: 'bar/foo.spec.tsx',
absolute: 'bar/foo.spec.tsx',
name: 'bar/foo.spec.tsx',
},
{
relative: 'merp/map.spec.ts',
absolute: 'merp/map.spec.ts',
name: 'merp/map.spec.ts',
},
]

interface FileExplorerTestProps {
clickFileStub: typeof cy.stub
clickFolderStub: typeof cy.stub
}

function createFileExplorer (testProps: FileExplorerTestProps): React.FC {
return () => {
const [selectedFile, setSelectedFile] = React.useState<string>()

const onFileClick = (file: FileNode) => {
setSelectedFile(file.absolute)
}

const files = makeFileHierarchy(specs.map((spec) => spec.relative))

const FileComponent: React.FC<FileComponentProps> = (props) => {
return (
<div onClick={() => {
testProps.clickFileStub(props.item)
props.onClick(props.item)
}}>
{props.item.name}
</div>
)
}

const FolderComponent: React.FC<FolderComponentProps> = (props) => {
return (
<div onClick={() => {
testProps.clickFolderStub()
props.onClick()
}}>
{props.item.name}
</div>
)
}

return (
<FileExplorer
files={files}
cssModule={styles}
selectedFile={selectedFile}
fileComponent={FileComponent}
folderComponent={FolderComponent}
onFileClick={onFileClick}
/>
)
}
}

describe('FileExplorer', () => {
it('basic usage', () => {
const files: TreeNode[] = [
{
type: 'folder',
name: 'foo',
absolute: 'foo',
files: [
{
type: 'file',
name: 'bar.js',
absolute: 'foo/bar.js',
},
],
},
]

const FileComponent: React.FC<FileComponentProps> = (props) => <div>{props.item.name}</div>
const FolderComponent: React.FC<FolderComponentProps> = (props) => <div>{props.item.name}</div>

mount(
<FileExplorer
files={files}
selectedFile={undefined}
fileComponent={FileComponent}
folderComponent={FolderComponent}
onFileClick={() => {}}
/>,
)
})

it('clicks file and folders', () => {
const clickFolderStub = cy.stub()
const clickFileStub = cy.stub()

const Wrapper = createFileExplorer({
clickFolderStub,
clickFileStub,
})

mount(<Wrapper />)

cy.get('div').contains('bar').click().then(() => {
expect(clickFolderStub).to.have.been.calledWith()
})

cy.get('div').contains('map.spec.ts').click().then(() => {
expect(clickFileStub).to.have.been.calledWith({
type: 'file',
absolute: 'merp/map.spec.ts',
name: 'map.spec.ts',
})
})
})
})
Loading

0 comments on commit b85f6e3

Please sign in to comment.