Skip to content
This repository was archived by the owner on Apr 9, 2019. It is now read-only.

Commit 3ec421a

Browse files
committed
Merge pull request #4 from programmarchy/more-event-tests
Test lifecycle events for popToRootView
2 parents aec8b6e + 3ca8b19 commit 3ec421a

File tree

1 file changed

+54
-24
lines changed

1 file changed

+54
-24
lines changed

spec/navigation-controller.spec.jsx

Lines changed: 54 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,18 @@ describe('NavigationController', () => {
834834
});
835835
return e;
836836
};
837+
let expectCallsBeforeTransition = (e) => {
838+
expect(e.prevView.willHide.calledOnce).to.be.true;
839+
expect(e.nextView.willShow.calledOnce).to.be.true;
840+
expect(e.prevView.didHide.calledOnce).to.be.false;
841+
expect(e.nextView.didShow.calledOnce).to.be.false;
842+
expect(e.prevView.willHide.calledBefore(e.nextView.willShow)).to.be.true;
843+
};
844+
let expectCallsAfterTransition = (e) => {
845+
expect(e.prevView.didHide.calledOnce).to.be.true;
846+
expect(e.nextView.didShow.calledOnce).to.be.true;
847+
expect(e.prevView.didHide.calledBefore(e.nextView.didShow)).to.be.true;
848+
};
837849
describe('#__pushView', () => {
838850
beforeEach(done => {
839851
requestAnimationFrame(() => {
@@ -842,32 +854,24 @@ describe('NavigationController', () => {
842854
});
843855
it('calls events with a "none" transition', (done) => {
844856
const e = stubLifecycleEvents(() => {
845-
expect(e.prevView.willHide.calledOnce).to.be.true;
846-
expect(e.nextView.willShow.calledOnce).to.be.true;
847-
expect(e.prevView.didHide.calledOnce).to.be.false;
848-
expect(e.nextView.didShow.calledOnce).to.be.false;
857+
expectCallsBeforeTransition(e);
849858
});
850859
controller.__pushView(<ViewB />, {
851860
transition: Transition.type.NONE,
852861
onComplete() {
853-
expect(e.prevView.didHide.calledOnce).to.be.true;
854-
expect(e.nextView.didShow.calledOnce).to.be.true;
862+
expectCallsAfterTransition(e);
855863
done();
856864
}
857865
});
858866
});
859867
it('calls events with a built-in spring animation', (done) => {
860868
const e = stubLifecycleEvents(() => {
861-
expect(e.prevView.willHide.calledOnce).to.be.true;
862-
expect(e.nextView.willShow.calledOnce).to.be.true;
863-
expect(e.prevView.didHide.calledOnce).to.be.false;
864-
expect(e.nextView.didShow.calledOnce).to.be.false;
869+
expectCallsBeforeTransition(e);
865870
});
866871
controller.__pushView(<ViewB />, {
867872
transition: Transition.type.PUSH_LEFT,
868873
onComplete() {
869-
expect(e.prevView.didHide.calledOnce).to.be.true;
870-
expect(e.nextView.didShow.calledOnce).to.be.true;
874+
expectCallsAfterTransition(e);
871875
done();
872876
}
873877
});
@@ -884,32 +888,58 @@ describe('NavigationController', () => {
884888
});
885889
it('calls events with a "none" transition', (done) => {
886890
const e = stubLifecycleEvents(() => {
887-
expect(e.prevView.willHide.calledOnce).to.be.true;
888-
expect(e.nextView.willShow.calledOnce).to.be.true;
889-
expect(e.prevView.didHide.calledOnce).to.be.false;
890-
expect(e.nextView.didShow.calledOnce).to.be.false;
891+
expectCallsBeforeTransition(e);
891892
});
892893
controller.__popView({
893894
transition: Transition.type.NONE,
894895
onComplete() {
895-
expect(e.prevView.didHide.calledOnce).to.be.true;
896-
expect(e.nextView.didShow.calledOnce).to.be.true;
896+
expectCallsAfterTransition(e);
897897
done();
898898
}
899899
});
900900
});
901901
it('calls events with a built-in spring animation', (done) => {
902902
const e = stubLifecycleEvents(() => {
903-
expect(e.prevView.willHide.calledOnce).to.be.true;
904-
expect(e.nextView.willShow.calledOnce).to.be.true;
905-
expect(e.prevView.didHide.calledOnce).to.be.false;
906-
expect(e.nextView.didShow.calledOnce).to.be.false;
903+
expectCallsBeforeTransition(e);
907904
});
908905
controller.__popView({
909906
transition: Transition.type.PUSH_LEFT,
910907
onComplete() {
911-
expect(e.prevView.didHide.calledOnce).to.be.true;
912-
expect(e.nextView.didShow.calledOnce).to.be.true;
908+
expectCallsAfterTransition(e);
909+
done();
910+
}
911+
});
912+
});
913+
});
914+
describe('#__popToRootView', () => {
915+
beforeEach(done => {
916+
controller = renderIntoDocument(
917+
<NavigationController views={[<ViewA />,<ViewB />,<ViewC />]} />
918+
);
919+
requestAnimationFrame(() => {
920+
done();
921+
});
922+
});
923+
it('calls events with a "none" transition', (done) => {
924+
const e = stubLifecycleEvents(() => {
925+
expectCallsBeforeTransition(e);
926+
});
927+
controller.__popToRootView({
928+
transition: Transition.type.NONE,
929+
onComplete() {
930+
expectCallsAfterTransition(e);
931+
done();
932+
}
933+
});
934+
});
935+
it('calls events with a built-in spring animation', (done) => {
936+
const e = stubLifecycleEvents(() => {
937+
expectCallsBeforeTransition(e);
938+
});
939+
controller.__popToRootView({
940+
transition: Transition.type.PUSH_LEFT,
941+
onComplete() {
942+
expectCallsAfterTransition(e);
913943
done();
914944
}
915945
});

0 commit comments

Comments
 (0)