# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

AUTHOR = 'scunningham'
NAME = 'policy_SpellCheckServiceEnabled'
TIME = 'SHORT'
TEST_CATEGORY = 'Functional'
TEST_CLASS = 'enterprise'
TEST_TYPE = 'client'

DOC = '''
Verify effects of SpellCheckServiceEnabled policy on client behavior.

This test verifies the effect of the SpellCheckServiceEnabled user policy on
Chrome OS client behavior and appearance. It exercises all valid policy
values across three test cases: True_Enable, False_Disable, and
NotSet_Disable.

The test shall pass if the chrome://settings page:
1) The Spelling Suggestions check box is checked (or unchecked) when policy
is true (or false).
2) The Spelling Suggestions check box is editable (or is not editable) when
the policy is not set (or is set true or false).
The test shall fail if the above behaviors are not enforced.

Note: The Spelling Suggestions setting check box is labeled, "Use a web
service to help resolve spelling errors."

This control file allows CloudDPC E2E tests to run any test case defined in
this test via command-line.

'''

args_dict = utils.args_to_dict(args)

job.run_test('policy_SpellCheckServiceEnabled', **args_dict)
