| Index: client/tests/client/samples/swarm/swarm_tests.dart
|
| ===================================================================
|
| --- client/tests/client/samples/swarm/swarm_tests.dart (revision 3770)
|
| +++ client/tests/client/samples/swarm/swarm_tests.dart (working copy)
|
| @@ -1,139 +0,0 @@
|
| -// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE file.
|
| -
|
| -#library('swarm_tests');
|
| -
|
| -#import('dart:html');
|
| -#import('../../../../base/base.dart');
|
| -#import('../../../../samples/swarm/swarmlib.dart');
|
| -#import('../../../../testing/unittest/unittest.dart');
|
| -#import('../../../../view/view.dart');
|
| -#import('../../../../util/utilslib.dart');
|
| -
|
| -// TODO(jmesserly): these would probably be easier to debug if they were written
|
| -// in the WebKit layout test style, so we could easy compare that the DOM is
|
| -// what we expect it to be after performing some simulated user actions.
|
| -
|
| -void main() {
|
| - Swarm swarm = new Swarm();
|
| - UIStateProxy state = new UIStateProxy(swarm.sections);
|
| - swarm.state = state;
|
| - swarm.run();
|
| - // TODO(jmesserly): should be adding the full stylesheet here
|
| - Dom.addStyle('''
|
| - .story-content {
|
| - -webkit-column-width: 300px;
|
| - -webkit-column-gap: 26px; /* 2em */
|
| - }''');
|
| -
|
| - getStoryNode() => swarm.frontView.storyView.node;
|
| -
|
| - getView(Section section) {
|
| - return CollectionUtils.find(swarm.frontView.sections.childViews,
|
| - (view) => view.section == section);
|
| - }
|
| -
|
| - getHistory(Article article) {
|
| - final feed = article.dataSource;
|
| - return {
|
| - 'section': CollectionUtils.find(swarm.sections,
|
| - (s) => s.feeds.indexOf(feed, 0) >= 0).id,
|
| - 'feed': feed.id,
|
| - 'article': article.id
|
| - };
|
| - }
|
| -
|
| - asyncTest('BackButton', 1, () {
|
| - serialInvokeAsync([() {
|
| - Expect.equals(null, swarm.frontView.storyView); // verify initial state
|
| -
|
| - // Make sure we've transitioned to the section
|
| - // In the real app, this isn't needed because ConveyorView fires the
|
| - // transition end event before we can click a story.
|
| - SectionView section = getView(swarm.sections[0]);
|
| - section.showSources();
|
| - },
|
| - () {
|
| - final item = swarm.sections[0].feeds[2].articles[1];
|
| - state.loadFromHistory(getHistory(item));
|
| -
|
| - Expect.equals(item, state.currentArticle.value);
|
| -
|
| - Expect.isFalse(getStoryNode().classes.contains(CSS.HIDDEN_STORY));
|
| -
|
| - state.loadFromHistory({});
|
| -
|
| - Expect.equals(null, state.currentArticle.value);
|
| - Expect.isTrue(getStoryNode().classes.contains(CSS.HIDDEN_STORY));
|
| - callbackDone();
|
| - }]);
|
| - });
|
| -
|
| - test('StoryView', () {
|
| - state.clearHistory();
|
| -
|
| - Expect.isTrue(getStoryNode().classes.contains(CSS.HIDDEN_STORY));
|
| -
|
| - final dataSourceView =
|
| - swarm.frontView.currentSection.dataSourceView.getSubview(0);
|
| - final itemView = dataSourceView.itemsView.getSubview(0);
|
| - // TODO(jacobr): remove this null check. This is likely due to tests
|
| - // running without the correct CSS to size the window so that some items
|
| - // are visible.
|
| - if (itemView != null) {
|
| - click(itemView.node);
|
| - state.expectHistory([getHistory(itemView.item)]);
|
| - }
|
| - });
|
| -
|
| - test('SliderMenu', () {
|
| - Expect.equals(getView(swarm.sections[0]), swarm.frontView.currentSection);
|
| -
|
| - // Find the first slider menu item, and click on the one next after it.
|
| - click(document.queryAll('.${CSS.SM_ITEM}')[1]);
|
| -
|
| - Expect.equals(getView(swarm.sections[1]), swarm.frontView.currentSection);
|
| -
|
| - // Find the first menu item again and click on it.
|
| - click(document.query('.${CSS.SM_ITEM}'));
|
| -
|
| - Expect.equals(getView(swarm.sections[0]), swarm.frontView.currentSection);
|
| - });
|
| -}
|
| -
|
| -/** Triggers the click event, like [http://api.jquery.com/click/] */
|
| -click(Element element) {
|
| - // TODO(rnystrom): This should be on the DOM API somewhere.
|
| - MouseEvent event = new MouseEvent('click', window, 1, 0, 0, 0, 0, 0);
|
| - element.on.click.dispatch(event);
|
| -}
|
| -
|
| -
|
| -/** A proxy so we can intercept history calls */
|
| -class UIStateProxy extends SwarmState {
|
| - List<Map<String, String>> history;
|
| -
|
| - UIStateProxy(Sections dataModel) : super(dataModel) {
|
| - clearHistory();
|
| - }
|
| -
|
| - void pushToHistory() {
|
| - history.add(toHistory());
|
| - super.pushToHistory();
|
| - }
|
| -
|
| - void clearHistory() {
|
| - history = new List<Map<String, String>>();
|
| - }
|
| -
|
| - void expectHistory(List<Map<String, String>> entries) {
|
| - Expect.equals(entries.length, history.length);
|
| - for (int i = 0; i < entries.length; i++) {
|
| - Map e = entries[i];
|
| - Map h = history[i];
|
| - Expect.equals(e['article'], h['article']);
|
| - }
|
| - clearHistory();
|
| - }
|
| -}
|
|
|