* Fix unrelated bug, settings button in the home sidebar
doesn't go to the home settings after my previous fixes to routes
* Turn on "Replay Onboarding" button in home settings
* Add icons
* Add Tooltip component
* Rough-in of sidebar styling and add initial File Tree
* Polish basic styling
* Show nested files and directories
* Add tests
* use camelCase for entrypointMetadata
* Add ability to switch files via links
* Revert "Improve Prop Typings for Modals. Remove instances of `any`. (… (#813)
Revert "Improve Prop Typings for Modals. Remove instances of `any`. (#792)"
This reverts commit 629f326f4c
.
* ffmpeg instructions (#814)
* Formatting
* Remove folder names from display in app header
* Highlight current file, open folders it's within
* Navigate on double click, delete on Cmd + Esc
+ highlight focused folders
* Migrate to an XState machine, add create new file
* Add ability to create folders (with naive names)
+ remove command bar stuff for now
* Use route loader data to instantiate the kcl code
* Clean up some unused things
* Add ability to rename files
* Add ability to rename folders
* Add keyboard shortcuts for creating files/folders
* Tooltip style tweaks
* Polish + re-execute when switching files with a connection
* Reset code before navigating via file tree
* Don't invoke `readProject` if you're in a browser
* Show files and folders for projects on home page
* Don't highlight folders further down the file tree
* @jgomez720 and @jessfraz feedback:
+ indentation markers
+ proper file icon
+ bump down font size
+ touch up colors
* Tune down spacing, allow scroll overflow
* Fix formatting
* Update src/lib/tauriFS.ts
* Add a confirmation dialog when deleting
Signed-off-by: Frank Noirot <frank@kittycad.io>
---------
Signed-off-by: Frank Noirot <frank@kittycad.io>
Co-authored-by: Kurt Hutten <k.hutten@protonmail.ch>
99 lines
2.5 KiB
TypeScript
99 lines
2.5 KiB
TypeScript
import { fireEvent, render, screen } from '@testing-library/react'
|
|
import { BrowserRouter } from 'react-router-dom'
|
|
import ProjectSidebarMenu from './ProjectSidebarMenu'
|
|
import { ProjectWithEntryPointMetadata } from '../Router'
|
|
import { GlobalStateProvider } from './GlobalStateProvider'
|
|
import CommandBarProvider from './CommandBar'
|
|
|
|
const now = new Date()
|
|
const projectWellFormed = {
|
|
name: 'Simple Box',
|
|
path: '/some/path/Simple Box',
|
|
children: [
|
|
{
|
|
name: 'main.kcl',
|
|
path: '/some/path/Simple Box/main.kcl',
|
|
},
|
|
],
|
|
entrypointMetadata: {
|
|
accessedAt: now,
|
|
blksize: 32,
|
|
blocks: 32,
|
|
createdAt: now,
|
|
dev: 1,
|
|
gid: 1,
|
|
ino: 1,
|
|
isDir: false,
|
|
isFile: true,
|
|
isSymlink: false,
|
|
mode: 1,
|
|
modifiedAt: now,
|
|
nlink: 1,
|
|
permissions: { readonly: false, mode: 1 },
|
|
rdev: 1,
|
|
size: 32,
|
|
uid: 1,
|
|
},
|
|
} satisfies ProjectWithEntryPointMetadata
|
|
|
|
describe('ProjectSidebarMenu tests', () => {
|
|
test('Renders the project name', () => {
|
|
render(
|
|
<BrowserRouter>
|
|
<CommandBarProvider>
|
|
<GlobalStateProvider>
|
|
<ProjectSidebarMenu project={projectWellFormed} />
|
|
</GlobalStateProvider>
|
|
</CommandBarProvider>
|
|
</BrowserRouter>
|
|
)
|
|
|
|
fireEvent.click(screen.getByTestId('project-sidebar-toggle'))
|
|
|
|
expect(screen.getByTestId('projectName')).toHaveTextContent(
|
|
projectWellFormed.name
|
|
)
|
|
expect(screen.getByTestId('createdAt')).toHaveTextContent(
|
|
`Created ${now.toLocaleDateString()}`
|
|
)
|
|
})
|
|
|
|
test('Renders app name if given no project', () => {
|
|
render(
|
|
<BrowserRouter>
|
|
<CommandBarProvider>
|
|
<GlobalStateProvider>
|
|
<ProjectSidebarMenu />
|
|
</GlobalStateProvider>
|
|
</CommandBarProvider>
|
|
</BrowserRouter>
|
|
)
|
|
|
|
fireEvent.click(screen.getByTestId('project-sidebar-toggle'))
|
|
|
|
expect(screen.getByTestId('projectName')).toHaveTextContent(
|
|
'KittyCAD Modeling App'
|
|
)
|
|
})
|
|
|
|
test('Renders as a link if set to do so', () => {
|
|
render(
|
|
<BrowserRouter>
|
|
<CommandBarProvider>
|
|
<GlobalStateProvider>
|
|
<ProjectSidebarMenu
|
|
project={projectWellFormed}
|
|
renderAsLink={true}
|
|
/>
|
|
</GlobalStateProvider>
|
|
</CommandBarProvider>
|
|
</BrowserRouter>
|
|
)
|
|
|
|
expect(screen.getByTestId('project-sidebar-link')).toBeInTheDocument()
|
|
expect(screen.getByTestId('project-sidebar-link-name')).toHaveTextContent(
|
|
projectWellFormed.name
|
|
)
|
|
})
|
|
})
|