| Index: samples/tests/samples/swarm/swarm_test.dart
|
| diff --git a/samples/tests/samples/swarm/swarm_test.dart b/samples/tests/samples/swarm/swarm_test.dart
|
| deleted file mode 100644
|
| index ac2074d5b6e176cb42d518ef1eddd310cc5e3834..0000000000000000000000000000000000000000
|
| --- a/samples/tests/samples/swarm/swarm_test.dart
|
| +++ /dev/null
|
| @@ -1,159 +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 "package:expect/expect.dart";
|
| -import 'dart:html';
|
| -import 'dart:async';
|
| -import '../../../swarm/swarmlib.dart';
|
| -import '../../../swarm/swarm_ui_lib/base/base.dart';
|
| -import '../../../swarm/swarm_ui_lib/view/view.dart';
|
| -import '../../../swarm/swarm_ui_lib/util/utilslib.dart';
|
| -import '../../../../pkg/unittest/lib/unittest.dart';
|
| -import '../../../../pkg/unittest/lib/html_config.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() {
|
| - useHtmlConfiguration();
|
| - Swarm swarm = new Swarm(useCannedData: true);
|
| - 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
|
| - };
|
| - }
|
| -
|
| - test('BackButton', () {
|
| - _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));
|
| - }
|
| - ]);
|
| - });
|
| -
|
| - 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');
|
| - element.dispatchEvent(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();
|
| - }
|
| -}
|
| -
|
| -void _serialInvokeAsync(List closures) {
|
| - final length = closures.length;
|
| - if (length > 0) {
|
| - int i = 0;
|
| - void invokeNext() {
|
| - closures[i]();
|
| - i++;
|
| - if (i < length) {
|
| - Timer.run(expectAsync0(invokeNext));
|
| - }
|
| - }
|
| - Timer.run(expectAsync0(invokeNext));
|
| - }
|
| -}
|
|
|