Add gSheet specific entity write

This commit is contained in:
forceoranj
2021-11-14 23:23:29 +01:00
parent c33b9d8f79
commit b76fbc78ff
22 changed files with 457 additions and 101 deletions

View File

@@ -3,7 +3,7 @@ import { toast } from "react-toastify"
import { AppDispatch } from "../../store"
import { postEnvie } from "../../store/envieAdd"
import { sendAddEnvie } from "../../store/envieAdd"
import styles from "./styles.module.scss"
interface Props {
@@ -29,7 +29,7 @@ const AddEnvie = ({ dispatch }: Props) => {
const onSavePostClicked = () => {
if (domaine && envies) {
dispatch(
postEnvie({
sendAddEnvie({
domaine,
envies,
precisions,

View File

@@ -0,0 +1,37 @@
/**
* @jest-environment jsdom
*/
import { render } from "@testing-library/react"
import { MemoryRouter } from "react-router-dom"
import MembreSet from "../index"
describe("<SetMembre />", () => {
it("renders", () => {
const dispatch = jest.fn()
const tree = render(
<MemoryRouter>
<MembreSet
dispatch={dispatch}
membre={{
id: 1,
nom: "Aupeix",
prenom: "Amélie",
mail: "pakouille.lakouille@yahoo.fr",
telephone: "0675650392",
photo: "images/membres/$taille/amélie_aupeix.jpg",
alimentation: "Végétarien",
majeur: 1,
privilege: 0,
actif: 0,
commentaire: "",
horodatage: "0000-00-00",
passe: "$2y$10$fSxY9AIuxSiEjwF.J3eXGubIxUPlobkyRrNIal8ASimSjNj4SR.9O",
}}
/>
</MemoryRouter>
).container.firstChild
expect(tree).toMatchSnapshot()
})
})

View File

@@ -0,0 +1,51 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`<SetMembre /> renders 1`] = `
<section
class="MembreList"
>
<h2>
Modifier un membre
</h2>
<form>
<label
for="postPrenom"
>
Prenom:
<input
id="postPrenom"
name="postPrenom"
type="text"
value="Amélie"
/>
</label>
<label
for="postNom"
>
Nom:
<input
id="postNom"
name="postNom"
type="text"
value="Aupeix"
/>
</label>
<label
for="postMajeur"
>
Majeur:
<input
id="postMajeur"
name="postMajeur"
type="text"
value="1"
/>
</label>
<button
type="button"
>
Save changes
</button>
</form>
</section>
`;

View File

@@ -0,0 +1,87 @@
import React, { useState, memo } from "react"
import { toast } from "react-toastify"
import { AppDispatch } from "../../store"
import { sendMembreSet } from "../../store/membreSet"
import { Membre } from "../../services/membres"
import styles from "./styles.module.scss"
interface Props {
dispatch: AppDispatch
membre: Membre
}
const MembreSet = ({ dispatch, membre }: Props) => {
const [prenom, setPrenom] = useState(membre.prenom)
const [nom, setNom] = useState(membre.nom)
const [majeur, setMajeur] = useState(membre.majeur)
const onPrenomChanged = (e: React.ChangeEvent<HTMLInputElement>) => setPrenom(e.target.value)
const onNomChanged = (e: React.ChangeEvent<HTMLInputElement>) => setNom(e.target.value)
const onMajeurChanged = (e: React.ChangeEvent<HTMLInputElement>) => setMajeur(+e.target.value)
const onSavePostClicked = () => {
if (prenom && nom) {
dispatch(
sendMembreSet({
...membre,
prenom,
nom,
majeur,
})
)
} else {
toast.warning("Il faut au moins préciser un prenom et un nom", {
position: "top-center",
autoClose: 6000,
hideProgressBar: true,
closeOnClick: true,
pauseOnHover: true,
draggable: true,
progress: undefined,
})
}
}
return (
<section className={styles.MembreList}>
<h2>Modifier un membre</h2>
<form>
<label htmlFor="postPrenom">
Prenom:
<input
type="text"
id="postPrenom"
name="postPrenom"
value={prenom}
onChange={onPrenomChanged}
/>
</label>
<label htmlFor="postNom">
Nom:
<input
type="text"
id="postNom"
name="postNom"
value={nom}
onChange={onNomChanged}
/>
</label>
<label htmlFor="postMajeur">
Majeur:
<input
type="text"
id="postMajeur"
name="postMajeur"
value={majeur}
onChange={onMajeurChanged}
/>
</label>
<button type="button" onClick={onSavePostClicked}>
Save changes
</button>
</form>
</section>
)
}
export default memo(MembreSet)

View File

@@ -0,0 +1,17 @@
@import "../../theme/variables";
.jav-game-list {
color: $color-white;
ul {
padding-left: 17px;
li {
margin-bottom: 0.5em;
}
}
a {
color: $color-white;
}
}

View File

@@ -1,8 +1,9 @@
import MembreList from "./MembreList"
import JeuJavList from "./JeuJavList"
import MembreInfo from "./MembreInfo"
import MembreSet from "./MembreSet"
import ErrorBoundary from "./ErrorBoundary"
import Loading from "./Loading"
import AddEnvie from "./AddEnvie"
export { MembreList, JeuJavList, MembreInfo, ErrorBoundary, Loading, AddEnvie }
export { MembreList, JeuJavList, MembreInfo, MembreSet, ErrorBoundary, Loading, AddEnvie }