text: /*****************************************************************************
   * Open MCT, Copyright (c) 2014-2018, United States Government
   * as represented by the Administrator of the National Aeronautics and Space
   * Administration. All rights reserved.
   *
   * Open MCT is licensed under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * http://www.apache.org/licenses/LICENSE-2.0.
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
   * License for the specific language governing permissions and limitations
   * under the License.
   *
   * Open MCT includes source code licensed under additional open source
   * licenses. See the Open Source Licenses file (LICENSES.md) included with
   * this source code distribution or the Licensing information page available
   * at runtime from the About dialog for additional information.
   *****************************************************************************/
  
  define(
      ["../src/FileInputService"],
      function (FileInputService) {
  
          describe("The FileInputService", function () {
              var fileInputService,
                  mockInput;
  
              beforeEach(function () {
                  fileInputService = new FileInputService();
                  mockInput = jasmine.createSpyObj('input',
                      [
                          'on',
                          'trigger',
                          'remove'
                      ]
                  );
                  mockInput.on.andCallFake(function (event, changeHandler) {
                      changeHandler.apply(mockInput);
                  });
                  spyOn(fileInputService, "newInput").andReturn(
                      mockInput
                  );
  
              });
  
              it("can read a file", function () {
                  mockInput.files = [new File(["file content"], "file name")];
                  fileInputService.getInput().then(function (result) {
                      expect(result.name).toBe("file name");
                      expect(result.body).toBe("file content");
                  });
  
                  expect(mockInput.trigger).toHaveBeenCalledWith('click');
                  expect(mockInput.remove).toHaveBeenCalled();
              });
  
              it("catches file read errors", function () {
                  mockInput.files = ["GARBAGE"];
                  fileInputService.getInput().then(
                      function (result) {},
                      function (err) {
                          expect(err).toBe("File read error");
                      }
                  );
  
                  expect(mockInput.trigger).toHaveBeenCalledWith('click');
                  expect(mockInput.remove).toHaveBeenCalled();
              });
          });
      }
  );
  