CEC-5085: add search on VINs support (#450)
This commit is contained in:
60
src/components/Cars/List/useQuery.test.jsx
Normal file
60
src/components/Cars/List/useQuery.test.jsx
Normal file
@@ -0,0 +1,60 @@
|
||||
import { render, screen, fireEvent } from "@testing-library/react";
|
||||
import useQuery from "./useQuery";
|
||||
|
||||
const MyComponent = () => {
|
||||
const {
|
||||
search,
|
||||
vins,
|
||||
query,
|
||||
setQuery,
|
||||
} = useQuery();
|
||||
|
||||
return (
|
||||
<>
|
||||
<input
|
||||
data-testid="input"
|
||||
value={query}
|
||||
onChange={(e) => setQuery(e.target.value)}
|
||||
/>
|
||||
<ol>
|
||||
<li data-testid="search">{search}</li>
|
||||
<li data-testid="vins">{vins}</li>
|
||||
<li data-testid="query">{query}</li>
|
||||
</ol>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
const template = (desc, data, expected) => {
|
||||
it(desc, () => {
|
||||
render(<MyComponent />);
|
||||
const input = screen.getByTestId("input");
|
||||
const search = screen.getByTestId("search");
|
||||
const vins = screen.getByTestId("vins");
|
||||
const query = screen.getByTestId("query");
|
||||
|
||||
fireEvent.change(input, { target: { value: data } });
|
||||
expect(search.innerHTML).toBe(expected[0]);
|
||||
expect(vins.innerHTML).toBe(expected[1]);
|
||||
expect(query.innerHTML).toBe(data);
|
||||
});
|
||||
}
|
||||
|
||||
describe("useQuery", () => {
|
||||
[
|
||||
["parses a search query", "test", ["test", ""]],
|
||||
["parses a vin query", "VCF1ZBU23PG001209", ["", "VCF1ZBU23PG001209"]],
|
||||
["parses a mixed search and vin query", "test VCF1ZBU23PG001209", ["test", "VCF1ZBU23PG001209"]],
|
||||
|
||||
["parses a comma separated search query", "ocean,pear,alaska,ronin", ["ocean pear alaska ronin", ""]],
|
||||
["parses a comma separated vin query", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162", ["", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162"]],
|
||||
["parses a comma separated mixed search and vin query", "test,VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162", ["test", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162"]],
|
||||
|
||||
["parses a space separated search query", "ocean pear alaska ronin", ["ocean pear alaska ronin", ""]],
|
||||
["parses a space separated vin query", "VCF1EBE2008016235 VCF1EBE20PG001002 VCF1EBE20PG001162", ["", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162"]],
|
||||
["parses a space separated mixed search and vin query", "test VCF1EBE2008016235 VCF1EBE20PG001002 VCF1EBE20PG001162", ["test", "VCF1EBE2008016235,VCF1EBE20PG001002,VCF1EBE20PG001162"]],
|
||||
|
||||
["trims extraneous values from search", "ocean,, , ,,,,pear,,, ", ["ocean pear", ""]],
|
||||
["trims extraneous values from vins", "VCF1EBE2008016235,, , ,,,,VCF1EBE20PG001002,,, ", ["", "VCF1EBE2008016235,VCF1EBE20PG001002"]],
|
||||
].forEach((args) => template(...args))
|
||||
});
|
||||
Reference in New Issue
Block a user