correct naming of Generalinfos and added tests
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
			
		||||
import React from 'react';
 | 
			
		||||
import HomePage from "./pages/HomePage/HomePage";
 | 
			
		||||
import RandomPage from "./pages/RandomPage/RandomPage";
 | 
			
		||||
import StaticInfos from "./GlobalInfos";
 | 
			
		||||
import GlobalInfos from "./GlobalInfos";
 | 
			
		||||
 | 
			
		||||
// include bootstraps css
 | 
			
		||||
import 'bootstrap/dist/css/bootstrap.min.css';
 | 
			
		||||
@@ -33,7 +33,7 @@ class App extends React.Component {
 | 
			
		||||
            .then((response) => response.json()
 | 
			
		||||
                .then((result) => {
 | 
			
		||||
                    // set theme
 | 
			
		||||
                    StaticInfos.enableDarkTheme(result.DarkMode);
 | 
			
		||||
                    GlobalInfos.enableDarkTheme(result.DarkMode);
 | 
			
		||||
 | 
			
		||||
                    this.setState({
 | 
			
		||||
                        generalSettingsLoaded: true,
 | 
			
		||||
@@ -83,7 +83,7 @@ class App extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        // add the main theme to the page body
 | 
			
		||||
        document.body.className = themeStyle.backgroundcolor;
 | 
			
		||||
        return (
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
import darktheme from "./AppDarkTheme.module.css";
 | 
			
		||||
import lighttheme from "./AppLightTheme.module.css";
 | 
			
		||||
 | 
			
		||||
class GlobalInfos {
 | 
			
		||||
class StaticInfos {
 | 
			
		||||
    #darktheme = true;
 | 
			
		||||
 | 
			
		||||
    isDarkTheme() {
 | 
			
		||||
@@ -17,7 +17,7 @@ class GlobalInfos {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const StaticInfos = new GlobalInfos();
 | 
			
		||||
const GlobalInfos = new StaticInfos();
 | 
			
		||||
//Object.freeze(StaticInfos);
 | 
			
		||||
 | 
			
		||||
export default StaticInfos;
 | 
			
		||||
export default GlobalInfos;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										24
									
								
								src/GlobalInfos.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/GlobalInfos.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import GlobalInfos from "./GlobalInfos";
 | 
			
		||||
 | 
			
		||||
describe('<GlobalInfos/>', function () {
 | 
			
		||||
    it('always same instance ', function () {
 | 
			
		||||
        GlobalInfos.enableDarkTheme(true);
 | 
			
		||||
 | 
			
		||||
        expect(GlobalInfos.isDarkTheme()).toBe(true);
 | 
			
		||||
 | 
			
		||||
        GlobalInfos.enableDarkTheme(false);
 | 
			
		||||
 | 
			
		||||
        expect(GlobalInfos.isDarkTheme()).toBe(false);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test default theme', function () {
 | 
			
		||||
        expect(GlobalInfos.isDarkTheme()).toBe(false);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test receive of stylesheet', function () {
 | 
			
		||||
        const style = GlobalInfos.getThemeStyle();
 | 
			
		||||
 | 
			
		||||
        expect(style.navitem).not.toBeNull();
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import style from "./PageTitle.module.css"
 | 
			
		||||
import StaticInfos from "../../GlobalInfos";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
class PageTitle extends React.Component {
 | 
			
		||||
    constructor(props) {
 | 
			
		||||
@@ -11,7 +11,7 @@ class PageTitle extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div className={style.pageheader + ' ' + themeStyle.backgroundcolor}>
 | 
			
		||||
                <span className={style.pageheadertitle + ' ' + themeStyle.textcolor}>{this.props.title}</span>
 | 
			
		||||
@@ -31,7 +31,7 @@ class PageTitle extends React.Component {
 | 
			
		||||
 */
 | 
			
		||||
export class Line extends React.Component {
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <>
 | 
			
		||||
                <hr className={themeStyle.hrcolor}/>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ import React from "react";
 | 
			
		||||
import style from "./Preview.module.css";
 | 
			
		||||
import Player from "../../pages/Player/Player";
 | 
			
		||||
import {Spinner} from "react-bootstrap";
 | 
			
		||||
import StaticInfos from "../../GlobalInfos";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
class Preview extends React.Component {
 | 
			
		||||
    constructor(props, context) {
 | 
			
		||||
@@ -34,7 +34,7 @@ class Preview extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div className={style.videopreview + ' ' + themeStyle.secbackground + ' '+ themeStyle.preview} onClick={() => this.itemClick()}>
 | 
			
		||||
                <div className={style.previewtitle + ' '+ themeStyle.lighttextcolor}>{this.state.name}</div>
 | 
			
		||||
@@ -65,7 +65,7 @@ class Preview extends React.Component {
 | 
			
		||||
 | 
			
		||||
export class TagPreview extends React.Component {
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div className={style.videopreview + ' ' + style.tagpreview + ' ' + themeStyle.secbackground + ' '+ themeStyle.preview} onClick={() => this.itemClick()}>
 | 
			
		||||
                <div className={style.tagpreviewtitle + ' ' + themeStyle.lighttextcolor}>
 | 
			
		||||
 
 | 
			
		||||
@@ -42,7 +42,6 @@
 | 
			
		||||
 | 
			
		||||
.videopreview:hover {
 | 
			
		||||
    opacity: 1;
 | 
			
		||||
    /*box-shadow: rgba(2, 12, 27, 0.7) 0 0 0 5px;*/
 | 
			
		||||
    transition: all 300ms;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import style from "./SideBar.module.css"
 | 
			
		||||
import StaticInfos from "../../GlobalInfos";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
class SideBar extends React.Component {
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (<div className={style.sideinfo + ' '+ themeStyle.secbackground}>
 | 
			
		||||
            {this.props.children}
 | 
			
		||||
        </div>);
 | 
			
		||||
@@ -13,7 +13,7 @@ class SideBar extends React.Component {
 | 
			
		||||
 | 
			
		||||
export class SideBarTitle extends React.Component {
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div className={style.sidebartitle + ' '+ themeStyle.subtextcolor}>{this.props.children}</div>
 | 
			
		||||
        );
 | 
			
		||||
@@ -22,7 +22,7 @@ export class SideBarTitle extends React.Component {
 | 
			
		||||
 | 
			
		||||
export class SideBarItem extends React.Component {
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div className={style.sidebarinfo + ' ' + themeStyle.thirdbackground + ' ' + themeStyle.lighttextcolor}>{this.props.children}</div>
 | 
			
		||||
        );
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import {Button, Col, Form} from "react-bootstrap";
 | 
			
		||||
import style from "./GeneralSettings.module.css"
 | 
			
		||||
import StaticInfos from "../../GlobalInfos";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
class GeneralSettings extends React.Component {
 | 
			
		||||
    constructor(props) {
 | 
			
		||||
@@ -38,7 +38,7 @@ class GeneralSettings extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        const themeStyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themeStyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <>
 | 
			
		||||
                <div className={style.GeneralForm + ' ' + themeStyle.subtextcolor}>
 | 
			
		||||
@@ -96,9 +96,9 @@ class GeneralSettings extends React.Component {
 | 
			
		||||
                            id="custom-switch-3"
 | 
			
		||||
                            data-testid='darktheme-switch'
 | 
			
		||||
                            label="Enable Dark-Theme"
 | 
			
		||||
                            checked={StaticInfos.isDarkTheme()}
 | 
			
		||||
                            checked={GlobalInfos.isDarkTheme()}
 | 
			
		||||
                            onChange={() => {
 | 
			
		||||
                                StaticInfos.enableDarkTheme(!StaticInfos.isDarkTheme());
 | 
			
		||||
                                GlobalInfos.enableDarkTheme(!GlobalInfos.isDarkTheme());
 | 
			
		||||
                                this.forceUpdate();
 | 
			
		||||
                                // todo initiate rerender
 | 
			
		||||
                            }}
 | 
			
		||||
@@ -128,7 +128,7 @@ class GeneralSettings extends React.Component {
 | 
			
		||||
        updateRequest.append('tvshowpath', this.state.tvshowpath);
 | 
			
		||||
        updateRequest.append('mediacentername', this.state.mediacentername);
 | 
			
		||||
        updateRequest.append("tmdbsupport", this.state.tmdbsupport);
 | 
			
		||||
        updateRequest.append("darkmodeenabled", StaticInfos.isDarkTheme());
 | 
			
		||||
        updateRequest.append("darkmodeenabled", GlobalInfos.isDarkTheme());
 | 
			
		||||
 | 
			
		||||
        fetch('/api/Settings.php', {method: 'POST', body: updateRequest})
 | 
			
		||||
            .then((response) => response.json()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
import {shallow} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import GeneralSettings from "./GeneralSettings";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
@@ -25,6 +26,15 @@ describe('<GeneralSettings/>', function () {
 | 
			
		||||
        expect(wrapper.find("[data-testid='passwordfield']")).toHaveLength(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test theme switchbutton', function () {
 | 
			
		||||
        const wrapper = shallow(<GeneralSettings/>);
 | 
			
		||||
 | 
			
		||||
        GlobalInfos.enableDarkTheme(false);
 | 
			
		||||
        expect(GlobalInfos.isDarkTheme()).toBe(false);
 | 
			
		||||
        wrapper.find("[data-testid='darktheme-switch']").simulate("change");
 | 
			
		||||
        expect(GlobalInfos.isDarkTheme()).toBe(true);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test savesettings', done => {
 | 
			
		||||
        const wrapper = shallow(<GeneralSettings/>);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ import React from "react";
 | 
			
		||||
import MovieSettings from "./MovieSettings";
 | 
			
		||||
import GeneralSettings from "./GeneralSettings";
 | 
			
		||||
import style from "./SettingsPage.module.css"
 | 
			
		||||
import StaticInfos from "../../GlobalInfos";
 | 
			
		||||
import GlobalInfos from "../../GlobalInfos";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SettingsPage extends React.Component {
 | 
			
		||||
@@ -28,7 +28,7 @@ class SettingsPage extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    render() {
 | 
			
		||||
        const themestyle = StaticInfos.getThemeStyle();
 | 
			
		||||
        const themestyle = GlobalInfos.getThemeStyle();
 | 
			
		||||
        return (
 | 
			
		||||
            <div>
 | 
			
		||||
                <div className={style.SettingsSidebar + ' ' + themestyle.secbackground}>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user