1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "base/strings/stringprintf.h"
6#include "extensions/renderer/module_system_test.h"
7#include "gin/dictionary.h"
8#include "grit/extensions_renderer_resources.h"
9
10namespace extensions {
11namespace {
12
13class UtilsUnittest : public ModuleSystemTest {
14 private:
15  virtual void SetUp() OVERRIDE {
16    ModuleSystemTest::SetUp();
17
18    env()->RegisterModule("utils", IDR_UTILS_JS);
19    env()->RegisterTestFile("utils_unittest", "utils_unittest.js");
20    env()->OverrideNativeHandler("schema_registry",
21                                 "exports.GetSchema = function() {};");
22    env()->OverrideNativeHandler("logging",
23                                 "exports.CHECK = function() {};\n"
24                                 "exports.DCHECK = function() {};\n"
25                                 "exports.WARNING = function() {};");
26    env()->OverrideNativeHandler("v8_context", "");
27    gin::Dictionary chrome(env()->isolate(), env()->CreateGlobal("chrome"));
28    gin::Dictionary chrome_runtime(
29        gin::Dictionary::CreateEmpty(env()->isolate()));
30    chrome.Set("runtime", chrome_runtime);
31  }
32};
33
34TEST_F(UtilsUnittest, TestNothing) {
35  ExpectNoAssertionsMade();
36}
37
38TEST_F(UtilsUnittest, SuperClass) {
39  ModuleSystem::NativesEnabledScope natives_enabled_scope(
40      env()->module_system());
41  env()->module_system()->CallModuleMethod("utils_unittest", "testSuperClass");
42}
43
44TEST_F(UtilsUnittest, PromiseNoResult) {
45  ModuleSystem::NativesEnabledScope natives_enabled_scope(
46      env()->module_system());
47  env()->module_system()->CallModuleMethod("utils_unittest",
48                                           "testPromiseNoResult");
49  RunResolvedPromises();
50}
51
52TEST_F(UtilsUnittest, PromiseOneResult) {
53  ModuleSystem::NativesEnabledScope natives_enabled_scope(
54      env()->module_system());
55  env()->module_system()->CallModuleMethod("utils_unittest",
56                                           "testPromiseOneResult");
57  RunResolvedPromises();
58}
59
60TEST_F(UtilsUnittest, PromiseTwoResults) {
61  ModuleSystem::NativesEnabledScope natives_enabled_scope(
62      env()->module_system());
63  env()->module_system()->CallModuleMethod("utils_unittest",
64                                           "testPromiseTwoResults");
65  RunResolvedPromises();
66}
67
68TEST_F(UtilsUnittest, PromiseError) {
69  ModuleSystem::NativesEnabledScope natives_enabled_scope(
70      env()->module_system());
71  env()->module_system()->CallModuleMethod("utils_unittest",
72                                           "testPromiseError");
73  RunResolvedPromises();
74}
75
76}  // namespace
77}  // namespace extensions
78