Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Commit

Permalink
added test to test all the components together
Browse files Browse the repository at this point in the history
  • Loading branch information
fisshy committed Oct 17, 2015
1 parent 7e87c12 commit 53e26e2
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 36 deletions.
4 changes: 4 additions & 0 deletions examples/basic/app.css
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
.body {
margin: 0 !important;
padding: 0 !important;
}
.element {
height:1000px;
background-color: #ededed;
Expand Down
3 changes: 2 additions & 1 deletion karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ module.exports = function (config) {
reporters: [ 'mocha' ],

files: [
'tests.webpack.js'
'tests.webpack.js',
'examples/basic/app.css'
],

preprocessors: {
Expand Down
92 changes: 58 additions & 34 deletions modules/__tests__/page-test.js
Original file line number Diff line number Diff line change
@@ -1,49 +1,46 @@
/* React */
import { render, unmountComponentAtNode } from 'react-dom'
import Rtu from 'react-addons-test-utils'
import expect from 'expect'
import React from 'react'
/* Components to test */
import Element from '../components/Element.js';
import Link from '../components/Link.js';
/* Test */
import expect from 'expect'
import assert from 'assert';

describe('Page', function() {

describe('Page', () => {

let node
let component
beforeEach(function () {
node = document.createElement('div')
component =
<div>
<nav className="navbar navbar-default navbar-fixed-top">
<div className="container-fluid">
<div className="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul className="nav navbar-nav">
<li><Link to="test1" spy={true} smooth={true} duration={500}>Test 1</Link></li>
<li><Link to="test2" spy={true} smooth={true} duration={500}>Test 2</Link></li>
<li><Link to="test3" spy={true} smooth={true} duration={500}>Test 3</Link></li>
<li><Link to="test4" spy={true} smooth={true} duration={500}>Test 4</Link></li>
<li><Link to="test5" spy={true} smooth={true} duration={500}>Test 5</Link></li>
</ul>
</div>
</div>
</nav>
let node = document.createElement('div');

document.body.appendChild(node)

let scrollDuration = 10;

let component =
<div>
<ul>
<li><Link to="test1" spy={true} smooth={true} duration={scrollDuration}>Test 1</Link></li>
<li><Link to="test2" spy={true} smooth={true} duration={scrollDuration}>Test 2</Link></li>
<li><Link to="test3" spy={true} smooth={true} duration={scrollDuration}>Test 3</Link></li>
<li><Link to="test4" spy={true} smooth={true} duration={scrollDuration}>Test 4</Link></li>
<li><Link to="test5" spy={true} smooth={true} duration={scrollDuration}>Test 5</Link></li>
</ul>
<Element name="test1" className="element">test 1</Element>
<Element name="test2" className="element">test 2</Element>
<Element name="test3" className="element">test 3</Element>
<Element name="test4" className="element">test 4</Element>
<Element name="test5" className="element">test 5</Element>

</div>
})

afterEach(function () {
unmountComponentAtNode(node)
})
});

it('renders five elements of link/element', function (done) {
it('renders five elements of link/element', (done) => {

render(component, node, function() {
render(component, node, () => {

var allLinks = node.querySelectorAll('a');
var allTargets = node.querySelectorAll('.element');
Expand All @@ -57,19 +54,46 @@ describe('Page', function() {

})

it('is active when clicked', function(done) {
render(component, node, function() {
it('all targets has name and class', (done) => {

render(component, node, () => {

var allLinks = node.querySelectorAll('a');
var allTargets = node.querySelectorAll('.element');

[].forEach.call(allTargets, (element, i) => {
expect(element.className).toEqual('element');
expect(element.getAttribute('name')).toEqual('test' + ( i + 1 ));
});

done();

});

})

it('is active when clicked', (done) => {

render(component, node, () => {

var link = node.querySelectorAll('a')[4];

var target = node.querySelectorAll('.element')[4];

var expectedScrollTo = target.getBoundingClientRect().top;

Rtu.Simulate.click(link);

/* Let it scroll, duration is based on param sent to Link */

expect(allLinks.length).toEqual(5);
expect(allTargets.length).toEqual(5);
setTimeout(() => {

console.log(allLinks[3]);
expect(expectedScrollTo).toEqual(window.scrollY);

done();
expect(link.className).toEqual('active');

done();

}, scrollDuration + 50);

});

Expand Down
2 changes: 1 addition & 1 deletion modules/mixins/scroller.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ var __activeLink;
module.exports = {

unmount: function() {
__mapped = [];
__mapped = {};
},

register: function(name, element){
Expand Down

0 comments on commit 53e26e2

Please sign in to comment.