From df11cdc3326a9496a7917456730bf14245dd74eb Mon Sep 17 00:00:00 2001 From: Philipp Czora Date: Thu, 2 Aug 2018 09:29:28 +0200 Subject: [PATCH] Added EditGroupNavLink --- scm-ui/public/locales/en/groups.json | 3 ++ .../components/navLinks/EditGroupNavLink.js | 31 +++++++++++++++++++ .../navLinks/editGroupNavLink.test.js | 29 +++++++++++++++++ scm-ui/src/groups/containers/SingleGroup.js | 2 ++ 4 files changed, 65 insertions(+) create mode 100644 scm-ui/src/groups/components/navLinks/EditGroupNavLink.js create mode 100644 scm-ui/src/groups/components/navLinks/editGroupNavLink.test.js diff --git a/scm-ui/public/locales/en/groups.json b/scm-ui/public/locales/en/groups.json index 247ba59f81..16c8dae0ec 100644 --- a/scm-ui/public/locales/en/groups.json +++ b/scm-ui/public/locales/en/groups.json @@ -26,6 +26,9 @@ "create-group-button": { "label": "Create group" }, + "edit-group-button": { + "label": "Edit" + }, "group-form": { "submit": "Submit" } diff --git a/scm-ui/src/groups/components/navLinks/EditGroupNavLink.js b/scm-ui/src/groups/components/navLinks/EditGroupNavLink.js new file mode 100644 index 0000000000..1cba7c761f --- /dev/null +++ b/scm-ui/src/groups/components/navLinks/EditGroupNavLink.js @@ -0,0 +1,31 @@ +//@flow +import React from 'react'; +import NavLink from "../../../components/navigation/NavLink"; +import { translate } from "react-i18next"; +import type { Group } from "../../types/Group"; + +type Props = { + t: string => string, + editUrl: string, + group: Group +} + +type State = { +} + +class EditGroupNavLink extends React.Component { + + render() { + const { t, editUrl } = this.props; + if (!this.isEditable()) { + return null; + } + return ; + } + + isEditable = () => { + return this.props.group._links.update; + } +} + +export default translate("groups")(EditGroupNavLink); \ No newline at end of file diff --git a/scm-ui/src/groups/components/navLinks/editGroupNavLink.test.js b/scm-ui/src/groups/components/navLinks/editGroupNavLink.test.js new file mode 100644 index 0000000000..7399f4f714 --- /dev/null +++ b/scm-ui/src/groups/components/navLinks/editGroupNavLink.test.js @@ -0,0 +1,29 @@ +//@flow + +import React from "react"; +import { shallow } from "enzyme"; +import "../../../tests/enzyme"; +import "../../../tests/i18n"; +import EditGroupNavLink from "./EditGroupNavLink"; + +it("should render nothing, if the edit link is missing", () => { + const group = { + _links: {} + }; + + const navLink = shallow(); + expect(navLink.text()).toBe(""); +}); + +it("should render the navLink", () => { + const group = { + _links: { + update: { + href: "/groups" + } + } + }; + + const navLink = shallow(); + expect(navLink.text()).not.toBe(""); +}); diff --git a/scm-ui/src/groups/containers/SingleGroup.js b/scm-ui/src/groups/containers/SingleGroup.js index c4b81395fb..2319801cf8 100644 --- a/scm-ui/src/groups/containers/SingleGroup.js +++ b/scm-ui/src/groups/containers/SingleGroup.js @@ -17,6 +17,7 @@ import Loading from "../../components/Loading"; import { Navigation, Section, NavLink } from "../../components/navigation"; import ErrorPage from "../../components/ErrorPage"; import { translate } from "react-i18next"; +import EditGroupNavLink from "../components/navLinks/EditGroupNavLink"; type Props = { name: string, @@ -83,6 +84,7 @@ class SingleGroup extends React.Component { />
+