mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-03-05 20:00:55 +01:00
Remove replaceSpacesInTestId and normalize test id in createAttributesFroTesting
This commit is contained in:
85
scm-ui/ui-components/src/devBuild.test.ts
Normal file
85
scm-ui/ui-components/src/devBuild.test.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* MIT License
|
||||
*
|
||||
* Copyright (c) 2020-present Cloudogu GmbH and Contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
import { createAttributesForTesting, isDevBuild } from "./devBuild";
|
||||
|
||||
describe("devbuild tests", () => {
|
||||
let env: string | undefined;
|
||||
|
||||
beforeAll(() => {
|
||||
env = process.env.NODE_ENV;
|
||||
});
|
||||
|
||||
afterAll(() => {
|
||||
process.env.NODE_ENV = env;
|
||||
});
|
||||
|
||||
describe("isDevBuild tests", () => {
|
||||
it("should return true for development", () => {
|
||||
process.env.NODE_ENV = "development";
|
||||
expect(isDevBuild()).toBe(true);
|
||||
});
|
||||
|
||||
it("should return false for production", () => {
|
||||
process.env.NODE_ENV = "production";
|
||||
expect(isDevBuild()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
describe("createAttributesForTesting in non development mode", () => {
|
||||
beforeAll(() => {
|
||||
process.env.NODE_ENV = "production";
|
||||
});
|
||||
|
||||
it("should return undefined for non development", () => {
|
||||
const attributes = createAttributesForTesting("123");
|
||||
expect(attributes).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
describe("createAttributesForTesting in development mode", () => {
|
||||
beforeAll(() => {
|
||||
process.env.NODE_ENV = "development";
|
||||
});
|
||||
|
||||
it("should return undefined for non development", () => {
|
||||
const attributes = createAttributesForTesting("123");
|
||||
expect(attributes).toBeDefined();
|
||||
});
|
||||
|
||||
it("should return undefined for undefined testid", () => {
|
||||
const attributes = createAttributesForTesting();
|
||||
expect(attributes).toBeUndefined();
|
||||
});
|
||||
|
||||
it("should normalize testid testid", () => {
|
||||
const attributes = createAttributesForTesting("heart of gold");
|
||||
if (attributes) {
|
||||
expect(attributes["data-testid"]).toBe("heart-of-gold");
|
||||
} else {
|
||||
throw new Error("attributes should be defined");
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -22,22 +22,18 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
export const isDevBuild = () => (process.env.NODE_ENV === "development")
|
||||
export const isDevBuild = () => process.env.NODE_ENV === "development";
|
||||
|
||||
export const createAttributesForTesting = (testId?: string) => {
|
||||
if (!testId || !isDevBuild()) {
|
||||
return undefined;
|
||||
}
|
||||
return {
|
||||
"data-testid": testId
|
||||
}
|
||||
"data-testid": normalizeTestId(testId)
|
||||
};
|
||||
};
|
||||
|
||||
export const replaceSpacesInTestId = (testId?: string) => {
|
||||
if (!testId) {
|
||||
return testId;
|
||||
}
|
||||
|
||||
const normalizeTestId = (testId: string) => {
|
||||
let id = testId;
|
||||
while (id.includes(" ")) {
|
||||
id = id.replace(" ", "-");
|
||||
|
||||
@@ -85,7 +85,7 @@ export { default as comparators } from "./comparators";
|
||||
|
||||
export { apiClient } from "./apiclient";
|
||||
export * from "./errors";
|
||||
export { isDevBuild, createAttributesForTesting, replaceSpacesInTestId } from "./devBuild";
|
||||
export { isDevBuild, createAttributesForTesting } from "./devBuild";
|
||||
|
||||
export * from "./avatar";
|
||||
export * from "./buttons";
|
||||
|
||||
@@ -31,7 +31,7 @@ import styled from "styled-components";
|
||||
import { EXTENSION_POINT } from "../avatar/Avatar";
|
||||
import ExternalNavLink from "../navigation/ExternalNavLink";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { createAttributesForTesting, replaceSpacesInTestId } from "../devBuild";
|
||||
import { createAttributesForTesting } from "../devBuild";
|
||||
|
||||
type Props = {
|
||||
me?: Me;
|
||||
@@ -47,7 +47,7 @@ type TitleWithIconsProps = {
|
||||
const TitleWithIcon: FC<TitleWithIconsProps> = ({ icon, title }) => {
|
||||
return (
|
||||
<>
|
||||
<i className={`fas fa-${icon} fa-fw`} {...createAttributesForTesting(replaceSpacesInTestId(title))} /> {title}
|
||||
<i className={`fas fa-${icon} fa-fw`} {...createAttributesForTesting(title)} /> {title}
|
||||
</>
|
||||
);
|
||||
};
|
||||
@@ -69,7 +69,7 @@ const AvatarContainer = styled.span`
|
||||
`;
|
||||
|
||||
const TitleWithAvatar: FC<TitleWithAvatarProps> = ({ me }) => (
|
||||
<div {...createAttributesForTesting(replaceSpacesInTestId(me.displayName))}>
|
||||
<div {...createAttributesForTesting(me.displayName)}>
|
||||
<AvatarContainer className="image is-rounded">
|
||||
<VCenteredAvatar person={me} representation="rounded" />
|
||||
</AvatarContainer>
|
||||
|
||||
@@ -28,8 +28,7 @@ import {
|
||||
AvatarImage,
|
||||
AvatarWrapper,
|
||||
MailLink,
|
||||
createAttributesForTesting,
|
||||
replaceSpacesInTestId
|
||||
createAttributesForTesting
|
||||
} from "@scm-manager/ui-components";
|
||||
|
||||
type Props = WithTranslation & {
|
||||
@@ -53,11 +52,11 @@ class ProfileInfo extends React.Component<Props> {
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{t("profile.username")}</th>
|
||||
<td {...createAttributesForTesting(replaceSpacesInTestId(me.name))}>{me.name}</td>
|
||||
<td {...createAttributesForTesting(me.name)}>{me.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{t("profile.displayName")}</th>
|
||||
<td {...createAttributesForTesting(replaceSpacesInTestId(me.displayName))}>{me.displayName}</td>
|
||||
<td {...createAttributesForTesting(me.displayName)}>{me.displayName}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{t("profile.mail")}</th>
|
||||
|
||||
@@ -28,8 +28,7 @@ import {
|
||||
Checkbox,
|
||||
DateFromNow,
|
||||
MailLink,
|
||||
createAttributesForTesting,
|
||||
replaceSpacesInTestId
|
||||
createAttributesForTesting
|
||||
} from "@scm-manager/ui-components";
|
||||
|
||||
type Props = WithTranslation & {
|
||||
@@ -44,11 +43,11 @@ class Details extends React.Component<Props> {
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>{t("user.name")}</th>
|
||||
<td {...createAttributesForTesting(replaceSpacesInTestId(user.name))}>{user.name}</td>
|
||||
<td {...createAttributesForTesting(user.name)}>{user.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{t("user.displayName")}</th>
|
||||
<td {...createAttributesForTesting(replaceSpacesInTestId(user.displayName))}>{user.displayName}</td>
|
||||
<td {...createAttributesForTesting(user.displayName)}>{user.displayName}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>{t("user.mail")}</th>
|
||||
|
||||
Reference in New Issue
Block a user