defineSuite([
        'Widgets/FullscreenButton/FullscreenButtonViewModel',
        'Core/Fullscreen'
    ], function(
        FullscreenButtonViewModel,
        Fullscreen) {
    'use strict';

    it('constructor sets default values', function() {
        var viewModel = new FullscreenButtonViewModel();
        expect(viewModel.fullscreenElement).toBe(document.body);
        expect(viewModel.isDestroyed()).toEqual(false);
        viewModel.destroy();
        expect(viewModel.isDestroyed()).toEqual(true);
    });

    it('constructor sets expected values', function() {
        var testElement = document.createElement('span');
        var viewModel = new FullscreenButtonViewModel(testElement);
        expect(viewModel.fullscreenElement).toBe(testElement);
        viewModel.destroy();
    });

    it('constructor can take an element id', function() {
        var testElement = document.createElement('span');
        testElement.id = 'testElement';
        document.body.appendChild(testElement);
        var viewModel = new FullscreenButtonViewModel('testElement');
        expect(viewModel.fullscreenElement).toBe(testElement);
        viewModel.destroy();
        document.body.removeChild(testElement);
    });

    it('isFullscreenEnabled work as expected', function() {
        var viewModel = new FullscreenButtonViewModel();
        expect(viewModel.isFullscreenEnabled).toEqual(Fullscreen.enabled);
        viewModel.isFullscreenEnabled = false;
        expect(viewModel.isFullscreenEnabled).toEqual(false);
        viewModel.destroy();
    });

    it('can get and set fullscreenElement', function() {
        var testElement = document.createElement('span');
        var viewModel = new FullscreenButtonViewModel();
        expect(viewModel.fullscreenElement).not.toBe(testElement);
        viewModel.fullscreenElement = testElement;
        expect(viewModel.fullscreenElement).toBe(testElement);
    });

    it('throws is setting fullscreenElement is not an Element', function() {
        var viewModel = new FullscreenButtonViewModel();
        expect(function() {
            viewModel.fullscreenElement = {};
        }).toThrowDeveloperError();
    });
});
