# Documentação Django 5.2.8

# JavaScript code

Embora a maior parte do núcleo do Django seja escrito em Python, alguns apps como o `admin` e `gis` contém código JavaScript.

Por favor siga esses padrões de código quando estiver escrevendo código em JavaScript para inclusão no Django.

## Estilo de código

- Por favor adapte-se ao estilo de identação ditado no arquivo `.editorconfig`. Nós recomendamos usar o editor de textos com suporte a EditorConfig para evitar problemas com identação e espaços em branco. A maioria dos arquivos JavaScript usam 4 espaços para identação, mas existem algumas exceções.

- Quando estiver nomeando variáveis, use `camelCase` ao invés de `underscore_case`. Arquivos JavaScript diferentes algumas vezes usam estilos de código diferentes. Por favor tente se adequar aos padrões de estilo de cada arquivo.

- Use the ESLint code linter to check your code for bugs and style errors. ESLint will be run when you run the JavaScript tests. We also recommended installing a ESLint plugin in your text editor.

- Where possible, write code that will work even if the page structure is later changed with JavaScript. For instance, when binding a click handler, use `$('body').on('click', selector, func)` instead of `$(selector).click(func)`. This makes it easier for projects to extend Django’s default behavior with JavaScript.

## Patches JavaScript

Django’s admin system leverages the jQuery framework to increase the capabilities of the admin interface. In conjunction, there is an emphasis on admin JavaScript performance and minimizing overall admin media file size.

## Testes JavaScript

Django’s JavaScript tests can be run in a browser or from the command line. The tests are located in a top level js_tests directory.

### Escrevendo testes

Os testes em JavaScript do Django utilizam QUnit. Segue um exemplo de teste de um módulo.

    QUnit.module('magicTricks', {
        beforeEach: function() {
            const $ = django.jQuery;
            $('#qunit-fixture').append('<button class="button"></button>');
        }
    });

    QUnit.test('removeOnClick removes button on click', function(assert) {
        const $ = django.jQuery;
        removeOnClick('.button');
        assert.equal($('.button').length, 1);
        $('.button').click();
        assert.equal($('.button').length, 0);
    });

    QUnit.test('copyOnClick adds button on click', function(assert) {
        const $ = django.jQuery;
        copyOnClick('.button');
        assert.equal($('.button').length, 1);
        $('.button').click();
        assert.equal($('.button').length, 2);
    });

Please consult the `QUnit` documentation for information on the types of assertions supported by QUnit.

### Rodando testes

Os testes JavaScript pode ser executados de um browser ou diretamente da linha de comando.

#### Testando a partir de um navegador web

To run the tests from a web browser, open up js_tests/tests.html in your browser.

Para medir a cobertura de código quando estiver executando os testes, você precisará visualizar o arquivo através de um servidor HTTP. Para ver a cobertura de código:

- Execute `python -m http.server` from the root directory (not from inside `js_tests`).

- Acesse o endereço http://localhost:8000/js_tests/tests.html no seu browser.

#### Testando a partir da linha de comando

Para executar os testes da linha de comando, você precisará ter o Node.js instalado.

After installing `Node.js`, install the JavaScript test dependencies by running the following from the root of your Django checkout:

/ 

    $ npm install

    ...\> npm install

E então rode os testes com:

/ 

    $ npm test

    ...\> npm test