Tests for all Components
This commit is contained in:
		@@ -1,9 +1,9 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import SideBar from "../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../elements/Tag/Tag";
 | 
			
		||||
import SideBar from "../../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../../elements/Tag/Tag";
 | 
			
		||||
 | 
			
		||||
import {TagPreview} from "../elements/Preview";
 | 
			
		||||
import NewTagPopup from "../elements/NewTagPopup";
 | 
			
		||||
import {TagPreview} from "../../elements/Preview/Preview";
 | 
			
		||||
import NewTagPopup from "../../elements/NewTagPopup/NewTagPopup";
 | 
			
		||||
 | 
			
		||||
class CategoryPage extends React.Component {
 | 
			
		||||
    constructor(props, context) {
 | 
			
		||||
@@ -37,7 +37,7 @@ class CategoryPage extends React.Component {
 | 
			
		||||
                    <Tag>LowQuality</Tag>
 | 
			
		||||
                    <Tag>HD</Tag>
 | 
			
		||||
                    <hr/>
 | 
			
		||||
                    <button className='btn btn-success' onClick={() => {
 | 
			
		||||
                    <button data-testid='btnaddtag' className='btn btn-success' onClick={() => {
 | 
			
		||||
                        this.setState({popupvisible: true})
 | 
			
		||||
                    }}>Add a new Tag!
 | 
			
		||||
                    </button>
 | 
			
		||||
@@ -58,7 +58,9 @@ class CategoryPage extends React.Component {
 | 
			
		||||
                    </div>) :
 | 
			
		||||
                    <>
 | 
			
		||||
                        {this.selectionelements}
 | 
			
		||||
                        <button className="btn btn-success" onClick={this.loadCategoryPageDefault}>Back</button>
 | 
			
		||||
                        <button data-testid='backbtn' className="btn btn-success"
 | 
			
		||||
                                onClick={this.loadCategoryPageDefault}>Back
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </>
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										107
									
								
								src/pages/CategoryPage/CategoryPage.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/pages/CategoryPage/CategoryPage.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,107 @@
 | 
			
		||||
import {shallow, mount} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import CategoryPage from "./CategoryPage";
 | 
			
		||||
import VideoContainer from "../../elements/VideoContainer/VideoContainer";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
    const mockFetchPromise = Promise.resolve({
 | 
			
		||||
        json: () => mockJsonPromise,
 | 
			
		||||
    });
 | 
			
		||||
    return (jest.fn().mockImplementation(() => mockFetchPromise));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
describe('<CategoryPage/>', function () {
 | 
			
		||||
    it('renders without crashing ', function () {
 | 
			
		||||
        const wrapper = shallow(<CategoryPage/>);
 | 
			
		||||
        wrapper.unmount();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test tag fetch call', done => {
 | 
			
		||||
        global.fetch = prepareFetchApi(["first", "second"]);
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<CategoryPage/>);
 | 
			
		||||
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(1);
 | 
			
		||||
 | 
			
		||||
        process.nextTick(() => {
 | 
			
		||||
            //callback to close window should have called
 | 
			
		||||
            expect(wrapper.state().loadedtags.length).toBe(2);
 | 
			
		||||
 | 
			
		||||
            global.fetch.mockClear();
 | 
			
		||||
            done();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test errored fetch call', done => {
 | 
			
		||||
        global.fetch = prepareFetchApi({});
 | 
			
		||||
 | 
			
		||||
        let message;
 | 
			
		||||
        global.console.log = jest.fn((m) => {
 | 
			
		||||
            message = m;
 | 
			
		||||
        })
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<CategoryPage/>);
 | 
			
		||||
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(1);
 | 
			
		||||
 | 
			
		||||
        process.nextTick(() => {
 | 
			
		||||
            //callback to close window should have called
 | 
			
		||||
            expect(message).toBe("no connection to backend");
 | 
			
		||||
 | 
			
		||||
            global.fetch.mockClear();
 | 
			
		||||
            done();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test new tag popup', function () {
 | 
			
		||||
        const wrapper = mount(<CategoryPage/>);
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("NewTagPopup")).toHaveLength(0);
 | 
			
		||||
        wrapper.find('[data-testid="btnaddtag"]').simulate('click');
 | 
			
		||||
        // newtagpopup should be showing now
 | 
			
		||||
        expect(wrapper.find("NewTagPopup")).toHaveLength(1);
 | 
			
		||||
 | 
			
		||||
        // click close button in modal
 | 
			
		||||
        wrapper.find(".modal-header").find("button").simulate("click");
 | 
			
		||||
        expect(wrapper.find("NewTagPopup")).toHaveLength(0);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test setpage callback', done => {
 | 
			
		||||
        global.fetch = prepareFetchApi([{}, {}]);
 | 
			
		||||
 | 
			
		||||
        const wrapper = mount(<CategoryPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            loadedtags: [
 | 
			
		||||
                {
 | 
			
		||||
                    tag_name: "testname",
 | 
			
		||||
                    tag_id: 42
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        wrapper.find("TagPreview").find("div").first().simulate("click");
 | 
			
		||||
 | 
			
		||||
        process.nextTick(() => {
 | 
			
		||||
            // expect callback to have loaded correct tag
 | 
			
		||||
            expect(wrapper.state().selected).toBe("testname");
 | 
			
		||||
            // expect to receive a videocontainer with simulated data
 | 
			
		||||
            expect(wrapper.instance().selectionelements).toMatchObject(<VideoContainer data={[{}, {}]}/>);
 | 
			
		||||
 | 
			
		||||
            global.fetch.mockClear();
 | 
			
		||||
            done();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test back to category view callback', function () {
 | 
			
		||||
        const wrapper = shallow(<CategoryPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            selected: "test"
 | 
			
		||||
        });
 | 
			
		||||
        expect(wrapper.state().selected).not.toBeNull();
 | 
			
		||||
        wrapper.find('[data-testid="backbtn"]').simulate("click");
 | 
			
		||||
        expect(wrapper.state().selected).toBeNull();
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										9
									
								
								src/pages/HomePage/HomePage.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/pages/HomePage/HomePage.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
.maincontent {
 | 
			
		||||
    float: left;
 | 
			
		||||
    width: 70%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.rightinfo {
 | 
			
		||||
    float: left;
 | 
			
		||||
    width: 10%;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,10 +1,10 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import SideBar from "../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../elements/Tag/Tag";
 | 
			
		||||
import VideoContainer from "../elements/VideoContainer";
 | 
			
		||||
import SideBar from "../../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../../elements/Tag/Tag";
 | 
			
		||||
import VideoContainer from "../../elements/VideoContainer/VideoContainer";
 | 
			
		||||
 | 
			
		||||
import "../css/HomePage.css"
 | 
			
		||||
import "../css/DefaultPage.css"
 | 
			
		||||
import "./HomePage.css"
 | 
			
		||||
import "../../css/DefaultPage.css"
 | 
			
		||||
 | 
			
		||||
class HomePage extends React.Component {
 | 
			
		||||
    constructor(props, context) {
 | 
			
		||||
@@ -25,7 +25,6 @@ class HomePage extends React.Component {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    componentDidMount() {
 | 
			
		||||
        // document.addEventListener('scroll', this.trackScrolling);
 | 
			
		||||
        // initial get of all videos
 | 
			
		||||
        this.fetchVideoData("all");
 | 
			
		||||
        this.fetchStartData();
 | 
			
		||||
@@ -129,7 +128,8 @@ class HomePage extends React.Component {
 | 
			
		||||
                {this.state.data.length !== 0 ?
 | 
			
		||||
                    <VideoContainer
 | 
			
		||||
                        data={this.state.data}
 | 
			
		||||
                        viewbinding={this.props.viewbinding}/> : null}
 | 
			
		||||
                        viewbinding={this.props.viewbinding}/> :
 | 
			
		||||
                    <div>No Data found!</div>}
 | 
			
		||||
                <div className='rightinfo'>
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
							
								
								
									
										58
									
								
								src/pages/HomePage/HomePage.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/pages/HomePage/HomePage.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
import {shallow} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import HomePage from "./HomePage";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
    const mockFetchPromise = Promise.resolve({
 | 
			
		||||
        json: () => mockJsonPromise,
 | 
			
		||||
    });
 | 
			
		||||
    return (jest.fn().mockImplementation(() => mockFetchPromise));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
describe('<HomePage/>', function () {
 | 
			
		||||
    it('renders without crashing ', function () {
 | 
			
		||||
        const wrapper = shallow(<HomePage/>);
 | 
			
		||||
        wrapper.unmount();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('ckeck default tag click events', function () {
 | 
			
		||||
        const wrapper = shallow(<HomePage/>);
 | 
			
		||||
        global.fetch = prepareFetchApi({});
 | 
			
		||||
 | 
			
		||||
        expect(global.fetch).toBeCalledTimes(0);
 | 
			
		||||
        // click every tag button
 | 
			
		||||
        wrapper.find("Tag").map((i) => {
 | 
			
		||||
            i.simulate("click");
 | 
			
		||||
        });
 | 
			
		||||
        expect(global.fetch).toBeCalledTimes(4);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test data insertion', function () {
 | 
			
		||||
        const wrapper = shallow(<HomePage/>);
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("VideoContainer")).toHaveLength(0);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            data: [
 | 
			
		||||
                {}, {}
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // there shoud be loaded the Videocontainer element into dom after fetching videos correctly
 | 
			
		||||
        expect(wrapper.find("VideoContainer")).toHaveLength(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test title and nr insertions', function () {
 | 
			
		||||
        const wrapper = shallow(<HomePage/>);
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find(".pageheadersubtitle").text()).toBe("All Videos - 0");
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            tag: "testtag",
 | 
			
		||||
            selectionnr: 42
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find(".pageheadersubtitle").text()).toBe("testtag Videos - 42");
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										32
									
								
								src/pages/Player/Player.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								src/pages/Player/Player.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
.closebutton {
 | 
			
		||||
    color: white;
 | 
			
		||||
    border: none;
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
    padding: 5px 15px 5px 15px;
 | 
			
		||||
    background-color: #FF0000;
 | 
			
		||||
    margin-top: 25px;
 | 
			
		||||
    margin-left: 25px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.likefield {
 | 
			
		||||
    margin-top: 15px;
 | 
			
		||||
    margin-left: 15px;
 | 
			
		||||
    margin-right: 15px;
 | 
			
		||||
    height: 30px;
 | 
			
		||||
    background-color: #9e5353;
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    color: white;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.videowrapper {
 | 
			
		||||
    margin-left: 20px;
 | 
			
		||||
    display: block;
 | 
			
		||||
    float: left;
 | 
			
		||||
    width: 60%;
 | 
			
		||||
    margin-top: 25px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.videoactions {
 | 
			
		||||
    margin-top: 15px;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,9 +1,9 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import "../css/Player.css"
 | 
			
		||||
import "./Player.css"
 | 
			
		||||
import {PlyrComponent} from 'plyr-react';
 | 
			
		||||
import SideBar from "../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../elements/Tag/Tag";
 | 
			
		||||
import AddTagPopup from "../elements/AddTagPopup/AddTagPopup";
 | 
			
		||||
import SideBar from "../../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../../elements/Tag/Tag";
 | 
			
		||||
import AddTagPopup from "../../elements/AddTagPopup/AddTagPopup";
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Player extends React.Component {
 | 
			
		||||
@@ -137,15 +137,15 @@ class Player extends React.Component {
 | 
			
		||||
        updateRequest.append('movieid', this.props.movie_id);
 | 
			
		||||
 | 
			
		||||
        fetch('/api/videoload.php', {method: 'POST', body: updateRequest})
 | 
			
		||||
            .then((response) => response.json())
 | 
			
		||||
            .then((result) => {
 | 
			
		||||
                if (result.result === "success") {
 | 
			
		||||
                    this.fetchMovieData();
 | 
			
		||||
                } else {
 | 
			
		||||
                    console.log("an error occured while liking");
 | 
			
		||||
                    console.log(result);
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            .then((response) => response.json()
 | 
			
		||||
                .then((result) => {
 | 
			
		||||
                    if (result.result === "success") {
 | 
			
		||||
                        this.fetchMovieData();
 | 
			
		||||
                    } else {
 | 
			
		||||
                        console.log("an error occured while liking");
 | 
			
		||||
                        console.log(result);
 | 
			
		||||
                    }
 | 
			
		||||
                }));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    closebtn() {
 | 
			
		||||
							
								
								
									
										128
									
								
								src/pages/Player/Player.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										128
									
								
								src/pages/Player/Player.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,128 @@
 | 
			
		||||
import {shallow} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import Player from "./Player";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
    const mockFetchPromise = Promise.resolve({
 | 
			
		||||
        json: () => mockJsonPromise,
 | 
			
		||||
    });
 | 
			
		||||
    return (jest.fn().mockImplementation(() => mockFetchPromise));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
describe('<Player/>', function () {
 | 
			
		||||
    it('renders without crashing ', function () {
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
        wrapper.unmount();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('plyr insertion', function () {
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            sources: [
 | 
			
		||||
                {
 | 
			
		||||
                    src: '/tstvid.mp4',
 | 
			
		||||
                    type: 'video/mp4',
 | 
			
		||||
                    size: 1080,
 | 
			
		||||
                }
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
        expect(wrapper.find("r")).toHaveLength(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('likebtn click', done => {
 | 
			
		||||
        global.fetch = prepareFetchApi({result: 'success'});
 | 
			
		||||
 | 
			
		||||
        const func = jest.fn();
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
        wrapper.setProps({
 | 
			
		||||
            onHide: () => {
 | 
			
		||||
                func()
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // initial fetch for getting movie data
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(1);
 | 
			
		||||
        wrapper.find('.videoactions').find("button").first().simulate('click');
 | 
			
		||||
        // fetch for liking
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(2);
 | 
			
		||||
 | 
			
		||||
        process.nextTick(() => {
 | 
			
		||||
            // refetch is called so fetch called 3 times
 | 
			
		||||
            expect(global.fetch).toHaveBeenCalledTimes(3);
 | 
			
		||||
 | 
			
		||||
            global.fetch.mockClear();
 | 
			
		||||
            done();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('errored likebtn click', done => {
 | 
			
		||||
        global.fetch = prepareFetchApi({result: 'nosuccess'});
 | 
			
		||||
        const func = jest.fn();
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
        wrapper.setProps({
 | 
			
		||||
            onHide: () => {
 | 
			
		||||
                func()
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // initial fetch for getting movie data
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(1);
 | 
			
		||||
        wrapper.find('.videoactions').find("button").first().simulate('click');
 | 
			
		||||
        // fetch for liking
 | 
			
		||||
        expect(global.fetch).toHaveBeenCalledTimes(2);
 | 
			
		||||
 | 
			
		||||
        process.nextTick(() => {
 | 
			
		||||
            // refetch is called so fetch called 3 times
 | 
			
		||||
            expect(global.fetch).toHaveBeenCalledTimes(2);
 | 
			
		||||
 | 
			
		||||
            global.fetch.mockClear();
 | 
			
		||||
            done();
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('show tag popup', function () {
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("AddTagPopup")).toHaveLength(0);
 | 
			
		||||
        wrapper.find('.videoactions').find("button").last().simulate('click');
 | 
			
		||||
        // addtagpopup should be showing now
 | 
			
		||||
        expect(wrapper.find("AddTagPopup")).toHaveLength(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('hide click ', function () {
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
        const func = jest.fn();
 | 
			
		||||
 | 
			
		||||
        wrapper.setProps({
 | 
			
		||||
            viewbinding: {
 | 
			
		||||
                hideVideo: () => {
 | 
			
		||||
                    func()
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        expect(func).toHaveBeenCalledTimes(0);
 | 
			
		||||
        wrapper.find('.closebutton').simulate('click');
 | 
			
		||||
        // addtagpopup should be showing now
 | 
			
		||||
        expect(func).toHaveBeenCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('inserts Tags correctly', function () {
 | 
			
		||||
        const wrapper = shallow(<Player/>);
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("Tag")).toHaveLength(0);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            tags: [
 | 
			
		||||
                {tag_name: 'first'},
 | 
			
		||||
                {tag_name: 'second'}
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("Tag")).toHaveLength(2);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
							
								
								
									
										21
									
								
								src/pages/RandomPage/RandomPage.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/pages/RandomPage/RandomPage.css
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
.Shufflebutton {
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    align-content: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.btnshuffle {
 | 
			
		||||
    background-color: #39a945;
 | 
			
		||||
 | 
			
		||||
    color: white;
 | 
			
		||||
    margin-top: 20px;
 | 
			
		||||
    margin-left: 45%;
 | 
			
		||||
    border: none;
 | 
			
		||||
    border-radius: 10px;
 | 
			
		||||
    padding: 15px 25px 15px 25px;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    font-size: larger;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.btnshuffle:focus {
 | 
			
		||||
    outline: none;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,8 +1,8 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import Preview from "../elements/Preview";
 | 
			
		||||
import "../css/RandomPage.css"
 | 
			
		||||
import SideBar from "../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../elements/Tag/Tag";
 | 
			
		||||
import Preview from "../../elements/Preview/Preview";
 | 
			
		||||
import "./RandomPage.css"
 | 
			
		||||
import SideBar from "../../elements/SideBar/SideBar";
 | 
			
		||||
import Tag from "../../elements/Tag/Tag";
 | 
			
		||||
 | 
			
		||||
class RandomPage extends React.Component {
 | 
			
		||||
    constructor(props, context) {
 | 
			
		||||
							
								
								
									
										49
									
								
								src/pages/RandomPage/RandomPage.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								src/pages/RandomPage/RandomPage.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
import {shallow} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import RandomPage from "./RandomPage";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
    const mockFetchPromise = Promise.resolve({
 | 
			
		||||
        json: () => mockJsonPromise,
 | 
			
		||||
    });
 | 
			
		||||
    return (jest.fn().mockImplementation(() => mockFetchPromise));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
describe('<RandomPage/>', function () {
 | 
			
		||||
    it('renders without crashing ', function () {
 | 
			
		||||
        const wrapper = shallow(<RandomPage/>);
 | 
			
		||||
        wrapper.unmount();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test shuffleload fetch', function () {
 | 
			
		||||
        global.fetch = prepareFetchApi({});
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<RandomPage/>);
 | 
			
		||||
 | 
			
		||||
        expect(global.fetch).toBeCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('btnshuffle click test', function () {
 | 
			
		||||
        global.fetch = prepareFetchApi({});
 | 
			
		||||
 | 
			
		||||
        const wrapper = shallow(<RandomPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.find(".btnshuffle").simulate("click");
 | 
			
		||||
 | 
			
		||||
        expect(global.fetch).toBeCalledTimes(2);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test tags in random selection', function () {
 | 
			
		||||
        const wrapper = shallow(<RandomPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            tags: [
 | 
			
		||||
                {tag_name: "test1"},
 | 
			
		||||
                {tag_name: "test2"}
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find("Tag")).toHaveLength(2);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
@@ -1,5 +1,5 @@
 | 
			
		||||
import React from "react";
 | 
			
		||||
import "../css/DefaultPage.css"
 | 
			
		||||
import "../../css/DefaultPage.css"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class SettingsPage extends React.Component {
 | 
			
		||||
@@ -31,7 +31,7 @@ class SettingsPage extends React.Component {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    componentDidMount() {
 | 
			
		||||
        if(this.myinterval){
 | 
			
		||||
        if (this.myinterval) {
 | 
			
		||||
            clearInterval(this.myinterval);
 | 
			
		||||
        }
 | 
			
		||||
        this.myinterval = setInterval(this.updateStatus, 1000);
 | 
			
		||||
@@ -50,12 +50,12 @@ class SettingsPage extends React.Component {
 | 
			
		||||
                    <hr/>
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
                <button className='btn btn-success' onClick={() => {
 | 
			
		||||
                <button className='reindexbtn btn btn-success' onClick={() => {
 | 
			
		||||
                    this.startReindex()
 | 
			
		||||
                }}>Reindex Movies
 | 
			
		||||
                </button>
 | 
			
		||||
                <div>{this.state.text.map(m => (
 | 
			
		||||
                    <div>{m}</div>
 | 
			
		||||
                <div className='indextextarea'>{this.state.text.map(m => (
 | 
			
		||||
                    <div className='textarea-element'>{m}</div>
 | 
			
		||||
                ))}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
        );
 | 
			
		||||
@@ -73,7 +73,7 @@ class SettingsPage extends React.Component {
 | 
			
		||||
            .catch(() => {
 | 
			
		||||
                console.log("no connection to backend");
 | 
			
		||||
            });
 | 
			
		||||
        if(this.myinterval){
 | 
			
		||||
        if (this.myinterval) {
 | 
			
		||||
            clearInterval(this.myinterval);
 | 
			
		||||
        }
 | 
			
		||||
        this.myinterval = setInterval(this.updateStatus, 1000);
 | 
			
		||||
							
								
								
									
										41
									
								
								src/pages/SettingsPage/SettingsPage.test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								src/pages/SettingsPage/SettingsPage.test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,41 @@
 | 
			
		||||
import {shallow} from "enzyme";
 | 
			
		||||
import React from "react";
 | 
			
		||||
import SettingsPage from "./SettingsPage";
 | 
			
		||||
 | 
			
		||||
function prepareFetchApi(response) {
 | 
			
		||||
    const mockJsonPromise = Promise.resolve(response);
 | 
			
		||||
    const mockFetchPromise = Promise.resolve({
 | 
			
		||||
        json: () => mockJsonPromise,
 | 
			
		||||
    });
 | 
			
		||||
    return (jest.fn().mockImplementation(() => mockFetchPromise));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
describe('<RandomPage/>', function () {
 | 
			
		||||
    it('renders without crashing ', function () {
 | 
			
		||||
        const wrapper = shallow(<SettingsPage/>);
 | 
			
		||||
        wrapper.unmount();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('received text renders into dom', function () {
 | 
			
		||||
        const wrapper = shallow(<SettingsPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.setState({
 | 
			
		||||
            text: [
 | 
			
		||||
                "firstline",
 | 
			
		||||
                "secline"
 | 
			
		||||
            ]
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        expect(wrapper.find(".indextextarea").find(".textarea-element")).toHaveLength(2);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('test simulate reindex', function () {
 | 
			
		||||
        global.fetch = prepareFetchApi({});
 | 
			
		||||
        const wrapper = shallow(<SettingsPage/>);
 | 
			
		||||
 | 
			
		||||
        wrapper.find(".reindexbtn").simulate("click");
 | 
			
		||||
 | 
			
		||||
        // initial send of reindex request to server
 | 
			
		||||
        expect(global.fetch).toBeCalledTimes(1);
 | 
			
		||||
    });
 | 
			
		||||
});
 | 
			
		||||
		Reference in New Issue
	
	Block a user