Index: chrome/common/extensions/docs/server2/availability_graph_test.py |
diff --git a/chrome/common/extensions/docs/server2/availability_graph_test.py b/chrome/common/extensions/docs/server2/availability_graph_test.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..bf2a43ee852a51b21720175d7180aa5cb27b0874 |
--- /dev/null |
+++ b/chrome/common/extensions/docs/server2/availability_graph_test.py |
@@ -0,0 +1,417 @@ |
+#!/usr/bin/env python |
+# Copyright 2013 The Chromium Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+import unittest |
+ |
+from availability_graph import AvailabilityGraph |
+from branch_utility import ChannelInfo |
+from test_branch_utility import TestBranchUtility |
+ |
+class AvailabilityGraphTest(unittest.TestCase): |
epeterson
2013/09/06 22:47:46
What do you think of this test?
Terrifying? Wonde
not at google - send to devlin
2013/09/06 23:29:38
A little of both... half way there? Test interface
epeterson
2013/09/12 00:32:01
Done.
|
+ |
+ def setUp(self): |
+ self._branch_util = TestBranchUtility.CreateWithCannedData() |
+ |
+ def testCreateGraph(self): |
+ api_schema = [{ |
not at google - send to devlin
2013/09/06 23:29:38
maybe put the test data at the top of the file so
epeterson
2013/09/12 00:32:01
Done.
|
+ 'namespace': 'tabs', |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': {}, |
+ 'TAB_PROPERTY_TWO': {} |
+ }, |
+ 'types': [ |
+ { |
+ 'id': 'Tab', |
+ 'properties': { |
+ 'id': {}, |
+ 'url': {} |
+ } |
+ } |
+ ], |
+ 'functions': [ |
+ { |
+ 'name': 'get', |
+ 'parameters': [ |
+ { |
+ 'name': 'callback', |
+ 'parameters': [ |
+ { |
+ 'name': 'tab' |
+ } |
+ ] |
+ }, |
+ { |
+ 'name': 'tabId' |
+ } |
+ ] |
+ } |
+ ], |
+ 'events': [ |
+ { |
+ 'name': 'onActivated', |
+ 'parameters': [ |
+ { |
+ 'name': 'activeInfo', |
+ 'properties': { |
+ 'tabId': {}, |
+ 'windowId': {} |
+ } |
+ } |
+ ] |
+ } |
+ ] |
+ }] |
+ expected_graph = { |
not at google - send to devlin
2013/09/06 23:29:38
i.e. this test is not useful
epeterson
2013/09/12 00:32:01
Done.
|
+ 'tabs': { |
+ 'availability': None, |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': None |
+ }, |
+ 'TAB_PROPERTY_TWO': { |
+ 'availability': None |
+ } |
+ }, |
+ 'types': { |
+ 'Tab': { |
+ 'availability': None, |
+ 'properties': { |
+ 'id': { 'availability': None }, |
+ 'url': { 'availability': None } |
+ } |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'tab': { 'availability': None } |
+ } |
+ }, |
+ 'tabId': { 'availability': None } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onActivated': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'activeInfo': { |
+ 'availability': None, |
+ 'properties': { |
+ 'tabId': { 'availability': None }, |
+ 'windowId': { 'availability': None } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ availability_graph = AvailabilityGraph( |
+ api_schema, |
+ self._branch_util.GetChannelInfo('trunk')) |
+ self.assertEqual(availability_graph.graph, expected_graph) |
+ |
+ def testLookup(self): |
+ all_channel_info = self._branch_util.GetAllChannelInfo() |
+ availability_graph = AvailabilityGraph([], all_channel_info[3]) |
+ availability_graph.graph = { |
+ 'tabs': { |
+ 'availability': all_channel_info[0], |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': all_channel_info[3] |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': all_channel_info[2], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[2], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[2] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[1] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ |
+ path = ('tabs',) |
+ self.assertEqual(availability_graph.Lookup(*path), all_channel_info[0]) |
not at google - send to devlin
2013/09/06 23:29:38
but these are. you need these assertions with the
epeterson
2013/09/12 00:32:01
Done.
|
+ |
+ path = ('tabs', 'properties', 'TAB_PROPERTY_ONE') |
+ self.assertEqual(availability_graph.Lookup(*path), all_channel_info[3]) |
not at google - send to devlin
2013/09/06 23:29:38
inline these |path|s though.
epeterson
2013/09/12 00:32:01
Done.
|
+ |
+ path = ('tabs', 'functions', 'get', 'parameters', 'callback', |
+ 'parameters', 'Tab') |
+ self.assertEqual(availability_graph.Lookup(*path), all_channel_info[2]) |
+ |
+ path = ('tabs', 'events', 'onUpdated', 'parameters', 'callback', |
+ 'parameters', 'Tab') |
+ self.assertEqual(availability_graph.Lookup(*path), all_channel_info[1]) |
+ |
+ path = ('events', 'onUpdated', 'parameters', 'callback') |
+ self.assertIsNone(availability_graph.Lookup(*path)) |
+ |
+ path = ('tabs', 'properties', 'TAB_PROPERTY_DEUX') |
+ self.assertIsNone(availability_graph.Lookup(*path)) |
+ |
+ path = ('tabs', 'functions', 'get', 'parameters', 'callback', 'parameters') |
+ self.assertIsNone(availability_graph.Lookup(*path)) |
+ |
+ def testSetPaths(self): |
+ all_channel_info = self._branch_util.GetAllChannelInfo() |
+ other_graph = AvailabilityGraph([], all_channel_info[0]) |
+ other_graph.graph = { |
+ 'tabs': { |
+ 'availability': None |
+ } |
+ } |
+ this_graph = AvailabilityGraph([], all_channel_info[3]) |
+ this_graph.graph = { |
+ 'tabs': { |
+ 'availability': None, |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': None |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': None |
+ } |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': None, |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': None |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ expected_paths = [ |
+ 'tabs/properties/TAB_PROPERTY_ONE', |
+ 'tabs/functions/get', |
+ 'tabs/functions/get/parameters/callback', |
+ 'tabs/functions/get/parameters/callback/parameters/Tab', |
+ 'tabs/events/onUpdated', |
+ 'tabs/events/onUpdated/parameters/callback', |
+ 'tabs/events/onUpdated/parameters/callback/parameters/Tab' |
+ ] |
+ this_graph.SetPaths(other_graph) |
+ self.assertEqual(sorted(this_graph._paths), sorted(expected_paths)) |
+ |
+ expected_graph = { |
+ 'tabs': { |
+ 'availability': all_channel_info[0], |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': all_channel_info[3] |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[3] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[3] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ self.assertEqual(this_graph.graph, expected_graph) |
+ |
+ def testUpdatePaths(self): |
+ all_channel_info = self._branch_util.GetAllChannelInfo() |
+ other_graph = AvailabilityGraph([], all_channel_info[1]) |
+ other_graph.graph = { |
+ 'tabs': { |
+ 'availability': all_channel_info[0], |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[1] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ this_graph = AvailabilityGraph([], all_channel_info[3]) |
+ this_graph.graph = { |
+ 'tabs': { |
+ 'availability': all_channel_info[0], |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': all_channel_info[3] |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[3] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[3] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ this_graph._paths = [ |
+ 'tabs/properties/TAB_PROPERTY_ONE', |
+ 'tabs/functions/get', |
+ 'tabs/functions/get/parameters/callback', |
+ 'tabs/functions/get/parameters/callback/parameters/Tab', |
+ 'tabs/events/onUpdated', |
+ 'tabs/events/onUpdated/parameters/callback', |
+ 'tabs/events/onUpdated/parameters/callback/parameters/Tab' |
+ ] |
+ paths_after_update = [ |
+ 'tabs/properties/TAB_PROPERTY_ONE', |
+ 'tabs/functions/get', |
+ 'tabs/functions/get/parameters/callback', |
+ 'tabs/functions/get/parameters/callback/parameters/Tab', |
+ ] |
+ self.assertTrue(this_graph.UpdatePaths(other_graph)) |
+ self.assertEqual(sorted(this_graph._paths), sorted(paths_after_update)) |
+ |
+ graph_after_update = { |
+ 'tabs': { |
+ 'availability': all_channel_info[0], |
+ 'properties': { |
+ 'TAB_PROPERTY_ONE': { |
+ 'availability': all_channel_info[3] |
+ } |
+ }, |
+ 'functions': { |
+ 'get': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[3], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[3] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ }, |
+ 'events': { |
+ 'onUpdated': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'callback': { |
+ 'availability': all_channel_info[1], |
+ 'parameters': { |
+ 'Tab': { |
+ 'availability': all_channel_info[1] |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ } |
+ self.assertEqual(this_graph.graph, graph_after_update) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |