diff --git a/6.130.2.dev0/.bowerrc b/6.130.2.dev0/.bowerrc
deleted file mode 100644
index f2571d7ff..000000000
--- a/6.130.2.dev0/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "registry": "https://registry.bower.io"
-}
diff --git a/6.130.2.dev0/.editorconfig b/6.130.2.dev0/.editorconfig
deleted file mode 100644
index 63bf7a66d..000000000
--- a/6.130.2.dev0/.editorconfig
+++ /dev/null
@@ -1,16 +0,0 @@
-# EditorConfig helps developers define and maintain consistent
-# coding styles between different editors and IDEs
-# editorconfig.org
-
-root = true
-
-# Settings for IETF datatracker
-
-[*]
-indent_style = space
-indent_size = 4
-end_of_line = lf
-charset = utf-8
-# to avoid tripping Henrik's commit hook:
-trim_trailing_whitespace = false
-insert_final_newline = false
diff --git a/6.130.2.dev0/.eslintrc.js b/6.130.2.dev0/.eslintrc.js
deleted file mode 100644
index 349bc61b8..000000000
--- a/6.130.2.dev0/.eslintrc.js
+++ /dev/null
@@ -1,19 +0,0 @@
-module.exports = {
- rules: {
- indent: [2, 4],
- camelcase: 0,
- "require-jsdoc": 0,
- quotes: [2, "double"],
- "no-multiple-empty-lines": [2, {max: 2}],
- "quote-props": [2, "as-needed"],
- "brace-style": [2, "1tbs", {allowSingleLine: true}]
- },
- env: {
- browser: true,
- jquery: true
- },
- globals: {
- d3: true
- },
- extends: "google"
-};
diff --git a/6.130.2.dev0/.gitignore b/6.130.2.dev0/.gitignore
deleted file mode 100644
index e820a8f49..000000000
--- a/6.130.2.dev0/.gitignore
+++ /dev/null
@@ -1,37 +0,0 @@
-/.coverage
-/.mypy_cache
-/.project
-/.pydevproject
-/.Python
-/.settings
-/.tmp
-/.factoryboy_random_state
-/attic
-/bin
-/etc
-/env
-/ghostdriver.log
-/htmlcov
-/include
-/INSTALL.pdf
-/latest-coverage.json
-/lib
-/local
-/media
-/mergelog
-/mergequeue
-/minimum-requirements.txt
-/pip-selfcheck.json
-/selenium
-/settings_local.py
-/share
-/static
-/testresult
-/tmp
-/tmp-nomcom-public-keys-dir
-/trunk27
-/trunk36
-/trunk37
-/unix.tag
-*.pyc
-__pycache__
diff --git a/6.130.2.dev0/.pylintrc b/6.130.2.dev0/.pylintrc
deleted file mode 100644
index c9a33fcec..000000000
--- a/6.130.2.dev0/.pylintrc
+++ /dev/null
@@ -1,408 +0,0 @@
-[MASTER]
-
-# Specify a configuration file.
-#rcfile=
-
-# Python code to execute, usually for sys.path manipulation such as
-# pygtk.require().
-#init-hook=
-
-# Add files or directories to the blacklist. They should be base names, not
-# paths.
-ignore=CVS,migrations
-
-# Add files or directories matching the regex patterns to the blacklist. The
-# regex matches against base names, not paths.
-ignore-patterns=
-
-# Pickle collected data for later comparisons.
-persistent=yes
-
-# List of plugins (as comma separated values of python modules names) to load,
-# usually to register additional checkers.
-load-plugins=pylint_django,pylint_common
-
-# Use multiple processes to speed up Pylint.
-jobs=1
-
-# Allow loading of arbitrary C extensions. Extensions are imported into the
-# active Python interpreter and may run arbitrary code.
-unsafe-load-any-extension=no
-
-# A comma-separated list of package or module names from where C extensions may
-# be loaded. Extensions are loading into the active Python interpreter and may
-# run arbitrary code
-extension-pkg-whitelist=
-
-# Allow optimization of some AST trees. This will activate a peephole AST
-# optimizer, which will apply various small optimizations. For instance, it can
-# be used to obtain the result of joining multiple strings with the addition
-# operator. Joining a lot of strings can lead to a maximum recursion error in
-# Pylint and this flag can prevent that. It has one side effect, the resulting
-# AST will be different than the one from reality. This option is deprecated
-# and it will be removed in Pylint 2.0.
-optimize-ast=no
-
-
-[MESSAGES CONTROL]
-
-# Only show warnings with the listed confidence levels. Leave empty to show
-# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
-confidence=
-
-# Enable the message, report, category or checker with the given id(s). You can
-# either give multiple identifier separated by comma (,) or put this option
-# multiple time (only on the command line, not in the configuration file where
-# it should appear only once). See also the "--disable" option for examples.
-#enable=
-
-# Disable the message, report, category or checker with the given id(s). You
-# can either give multiple identifiers separated by comma (,) or put this
-# option multiple times (only on the command line, not in the configuration
-# file where it should appear only once).You can also use "--disable=all" to
-# disable everything first and then reenable specific checks. For example, if
-# you want to run only the similarities checker, you can use "--disable=all
-# --enable=similarities". If you want to run only the classes checker, but have
-# no Warning level messages displayed, use"--disable=all --enable=classes
-# --disable=W"
-#disable=C,import-star-module-level,old-octal-literal,oct-method,print-statement,unpacking-in-except,parameter-unpacking,backtick,old-raise-syntax,old-ne-operator,long-suffix,dict-view-method,dict-iter-method,metaclass-assignment,next-method-called,raising-string,indexing-exception,raw_input-builtin,long-builtin,file-builtin,execfile-builtin,coerce-builtin,cmp-builtin,buffer-builtin,basestring-builtin,apply-builtin,filter-builtin-not-iterating,using-cmp-argument,useless-suppression,range-builtin-not-iterating,suppressed-message,no-absolute-import,old-division,cmp-method,reload-builtin,zip-builtin-not-iterating,intern-builtin,unichr-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,input-builtin,round-builtin,hex-method,nonzero-method,map-builtin-not-iterating,unused-wildcard-import,locally-disabled,mixed-indentation
-disable=W,C,R,I,no-member
-
-
-[REPORTS]
-
-# Set the output format. Available formats are text, parseable, colorized, msvs
-# (visual studio) and html. You can also give a reporter class, eg
-# mypackage.mymodule.MyReporterClass.
-output-format=parseable
-
-# Put messages in a separate file for each module / package specified on the
-# command line instead of printing them on stdout. Reports (if any) will be
-# written in a file name "pylint_global.[txt|html]". This option is deprecated
-# and it will be removed in Pylint 2.0.
-files-output=no
-
-# Tells whether to display a full report or only the messages
-reports=no
-
-# Python expression which should return a note less than 10 (10 is the highest
-# note). You have access to the variables errors warning, statement which
-# respectively contain the number of errors / warnings messages and the total
-# number of statements analyzed. This is used by the global evaluation report
-# (RP0004).
-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
-
-# Template used to display messages. This is a python new-style format string
-# used to format the message information. See doc for all details
-#msg-template=
-
-
-[SPELLING]
-
-# Spelling dictionary name. Available dictionaries: none. To make it working
-# install python-enchant package.
-spelling-dict=
-
-# List of comma separated words that should not be checked.
-spelling-ignore-words=
-
-# A path to a file that contains private dictionary; one word per line.
-spelling-private-dict-file=
-
-# Tells whether to store unknown words to indicated private dictionary in
-# --spelling-private-dict-file option instead of raising a message.
-spelling-store-unknown-words=no
-
-
-[FORMAT]
-
-# Maximum number of characters on a single line.
-max-line-length=100
-
-# Regexp for a line that is allowed to be longer than the limit.
-ignore-long-lines=^\s*(# )??$
-
-# Allow the body of an if to be on the same line as the test if there is no
-# else.
-single-line-if-stmt=no
-
-# List of optional constructs for which whitespace checking is disabled. `dict-
-# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
-# `trailing-comma` allows a space between comma and closing bracket: (a, ).
-# `empty-line` allows space-only lines.
-no-space-check=trailing-comma,dict-separator
-
-# Maximum number of lines in a module
-max-module-lines=1000
-
-# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
-# tab).
-indent-string=' '
-
-# Number of spaces of indent required inside a hanging or continued line.
-indent-after-paren=4
-
-# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
-expected-line-ending-format=
-
-
-[MISCELLANEOUS]
-
-# List of note tags to take in consideration, separated by a comma.
-notes=FIXME,XXX,TODO
-
-
-[SIMILARITIES]
-
-# Minimum lines number of a similarity.
-min-similarity-lines=4
-
-# Ignore comments when computing similarities.
-ignore-comments=yes
-
-# Ignore docstrings when computing similarities.
-ignore-docstrings=yes
-
-# Ignore imports when computing similarities.
-ignore-imports=no
-
-
-[VARIABLES]
-
-# Tells whether we should check for unused import in __init__ files.
-init-import=no
-
-# A regular expression matching the name of dummy variables (i.e. expectedly
-# not used).
-dummy-variables-rgx=(_+[a-zA-Z0-9]*?$)|dummy
-
-# List of additional names supposed to be defined in builtins. Remember that
-# you should avoid to define new builtins when possible.
-additional-builtins=
-
-# List of strings which can identify a callback function by name. A callback
-# name must start or end with one of those strings.
-callbacks=cb_,_cb
-
-# List of qualified module names which can have objects that can redefine
-# builtins.
-redefining-builtins-modules=six.moves,future.builtins
-
-
-[LOGGING]
-
-# Logging modules to check that the string format arguments are in logging
-# function parameter format
-logging-modules=logging
-
-
-[TYPECHECK]
-
-# Tells whether missing members accessed in mixin class should be ignored. A
-# mixin class is detected if its name ends with "mixin" (case insensitive).
-ignore-mixin-members=yes
-
-# List of module names for which member attributes should not be checked
-# (useful for modules/projects where namespaces are manipulated during runtime
-# and thus existing member attributes cannot be deduced by static analysis. It
-# supports qualified module names, as well as Unix pattern matching.
-ignored-modules=
-
-# List of class names for which member attributes should not be checked (useful
-# for classes with dynamically set attributes). This supports the use of
-# qualified names.
-ignored-classes=optparse.Values,thread._local,_thread._local
-
-# List of members which are set dynamically and missed by pylint inference
-# system, and so shouldn't trigger E1101 when accessed. Python regular
-# expressions are accepted.
-generated-members=
-
-# List of decorators that produce context managers, such as
-# contextlib.contextmanager. Add to this list to register other decorators that
-# produce valid context managers.
-contextmanager-decorators=contextlib.contextmanager
-
-
-[BASIC]
-
-# Good variable names which should always be accepted, separated by a comma
-good-names=i,j,k,ex,Run,_
-
-# Bad variable names which should always be refused, separated by a comma
-bad-names=foo,bar,baz,toto,tutu,tata
-
-# Colon-delimited sets of names that determine each other's naming style when
-# the name regexes allow several styles.
-name-group=
-
-# Include a hint for the correct naming format with invalid-name
-include-naming-hint=no
-
-# List of decorators that produce properties, such as abc.abstractproperty. Add
-# to this list to register other decorators that produce valid properties.
-property-classes=abc.abstractproperty
-
-# Regular expression matching correct function names
-function-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Naming hint for function names
-function-name-hint=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression matching correct variable names
-variable-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Naming hint for variable names
-variable-name-hint=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression matching correct constant names
-const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
-
-# Naming hint for constant names
-const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
-
-# Regular expression matching correct attribute names
-attr-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Naming hint for attribute names
-attr-name-hint=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression matching correct argument names
-argument-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Naming hint for argument names
-argument-name-hint=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression matching correct class attribute names
-class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
-
-# Naming hint for class attribute names
-class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
-
-# Regular expression matching correct inline iteration names
-inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-
-# Naming hint for inline iteration names
-inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
-
-# Regular expression matching correct class names
-class-rgx=[A-Z_][a-zA-Z0-9]+$
-
-# Naming hint for class names
-class-name-hint=[A-Z_][a-zA-Z0-9]+$
-
-# Regular expression matching correct module names
-module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
-# Naming hint for module names
-module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
-# Regular expression matching correct method names
-method-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Naming hint for method names
-method-name-hint=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match function or class names that do
-# not require a docstring.
-no-docstring-rgx=^_
-
-# Minimum line length for functions/classes that require docstrings, shorter
-# ones are exempt.
-docstring-min-length=-1
-
-
-[ELIF]
-
-# Maximum number of nested blocks for function / method body
-max-nested-blocks=5
-
-
-[CLASSES]
-
-# List of method names used to declare (i.e. assign) instance attributes.
-defining-attr-methods=__init__,__new__,setUp
-
-# List of valid names for the first argument in a class method.
-valid-classmethod-first-arg=cls
-
-# List of valid names for the first argument in a metaclass class method.
-valid-metaclass-classmethod-first-arg=mcs
-
-# List of member names, which should be excluded from the protected access
-# warning.
-exclude-protected=_asdict,_fields,_replace,_source,_make
-
-
-[DESIGN]
-
-# Maximum number of arguments for function / method
-max-args=5
-
-# Argument names that match this expression will be ignored. Default to name
-# with leading underscore
-ignored-argument-names=_.*
-
-# Maximum number of locals for function / method body
-max-locals=15
-
-# Maximum number of return / yield for function / method body
-max-returns=6
-
-# Maximum number of branch for function / method body
-max-branches=12
-
-# Maximum number of statements in function / method body
-max-statements=50
-
-# Maximum number of parents for a class (see R0901).
-max-parents=7
-
-# Maximum number of attributes for a class (see R0902).
-max-attributes=7
-
-# Minimum number of public methods for a class (see R0903).
-min-public-methods=2
-
-# Maximum number of public methods for a class (see R0904).
-max-public-methods=20
-
-# Maximum number of boolean expressions in a if statement
-max-bool-expr=5
-
-
-[IMPORTS]
-
-# Deprecated modules which should not be used, separated by a comma
-deprecated-modules=regsub,TERMIOS,Bastion,rexec
-
-# Create a graph of every (i.e. internal and external) dependencies in the
-# given file (report RP0402 must not be disabled)
-import-graph=
-
-# Create a graph of external dependencies in the given file (report RP0402 must
-# not be disabled)
-ext-import-graph=
-
-# Create a graph of internal dependencies in the given file (report RP0402 must
-# not be disabled)
-int-import-graph=
-
-# Force import order to recognize a module as part of the standard
-# compatibility libraries.
-known-standard-library=
-
-# Force import order to recognize a module as part of a third party library.
-known-third-party=enchant
-
-# Analyse import fallback blocks. This can be used to support both Python 2 and
-# 3 compatible code, which means that the block might have code that exists
-# only in one or another interpreter, leading to false positives when analysed.
-analyse-fallback-blocks=no
-
-
-[EXCEPTIONS]
-
-# Exceptions that will emit a warning when being caught. Defaults to
-# "Exception"
-overgeneral-exceptions=Exception
diff --git a/6.130.2.dev0/INSTALL b/6.130.2.dev0/INSTALL
deleted file mode 100644
index 3aad0c1c3..000000000
--- a/6.130.2.dev0/INSTALL
+++ /dev/null
@@ -1,283 +0,0 @@
-==============================================================================
- IETF Datatracker
-==============================================================================
-
-------------------------------------------------------------------------------
- Installation Instructions
-------------------------------------------------------------------------------
-
-
-
-General Instructions for Deployment of a New Release
-====================================================
-
- 1. In order to fetch a new release of the django datatracker code, simply
- check out the appropriate tag from svn::
-
- svn co http://svn.tools.ietf.org/svn/tools/ietfdb/tags/$releasenumber
-
- 2. Don't forget to copy $releasenumber/ietf/settings_local.py from the
- old release to the new one; otherwise things won't work!
- ::
-
- cp $oldreleasenumber/ietf/settings_local.py $releasenumber/ietf/
-
- 3. Change into the directory of the new release::
-
- cd $releasenumber
-
- It is recommended set up a Python virtual environment
- under $releasenumber/env/::
-
- virtualenv env # optional
- source env/bin/activate # optional
-
- 4. Install requirements (make sure your pip is reasonably fresh first).
- The following will install required python modules locally if you
- are using a virtualenv, or globally if you are not::
-
- pip install -r requirements.txt
-
- 5. Move static files to the appropriate direcrory for serving via CDN::
-
- ietf/manage.py collectstatic
-
- 6. Run migrations. Some migrations create files which need to be writeable
- by the web servers, so make sure that you're running as wwwrun when
- doing this::
-
- sudo su wwwrun -s /bin/bash
- source env/bin/activate
- ietf/manage.py migrate
- ^D
-
- 7. Run some basic datatracker system checks::
-
- ietf/manage.py check
-
- 8. Back out one directory level, then re-point the 'web' symlink::
-
- cd ..
- rm ./web
- ln -s $releasenumber web
-
- 9. Reload apache::
-
- sudo service apache2 reload
-
- 10. It's now also a good idea to go to the datatracker front page::
-
- http://datatracker.ietf.org/
-
- and then check that it's alive and kicking, and displaying the new release
- number at the bottom of the left-side menubar :-)
-
- 11. If things **aren't** cool, revert the symlink step, re-pointing the
- symlink to the release that was running before the new release, and restart
- apache again to roll back to that.
-
-
-Installing from Scratch
-=======================
-
-In addition to the new release deployment instructions above, the
-settings_local.py file has to be set up properly, and Apache has to be
-configured. Since the IETF datatracker is only intended to be deployed from
-scratch once, these instructions don't cover this scenario in any more detail.
-The general Django depoloyment instructions are relevant, however.
-
-
-Patching a Production Release
-=============================
-
-Sometimes it can prove necessary to patch an existing release. The following
-process should be used:
-
- 1. Code and test the patch on a development system copy of the production
- release which has no other code changes (or on trunk, with no uncommitted
- code changes, if it's sufficiently close).
-
- 2. Produce a patch file, named with date and subject::
-
- ~/src/ietfdb/working $ svn diff > 2013-03-25-ballot-calculation.patch
-
- 3. Move the patch file to the production server, and place it in
- '/a/www/ietf-datatracker/patches/'
-
- 4. Make a recursive copy of the production code to a new directory, named
- with a patch number. Assuming the production code is in 4.43/, and we
- have web -> 4.43/::
-
- /a/www/ietf-datatracker $ rsync -a web/ 4.43.p1/
-
- (you could use 'cp -rp' instead, but rsync seems to do this faster).
-
- 5. Apply the patch::
-
- /a/www/ietf-datatracker $ cd 4.43.p1/
- /a/www/ietf-datatracker/4.43.p1 $ patch -p0 \
- < ../patches/2013-03-25-ballot-calculation.patch
-
- This should not produce any messages about failing to apply any chunks;
- if it does, you probably should go back to 1. and figure
- out why.
-
- 6. Edit ``.../ietf/__init__.py`` in the new patched release to indicate the patch
- version in the ``__patch__`` string and current date and time in the ``__date__``
- string.
-
- 7. Change the 'web' symlink, reload etc. as described in
- `General Instructions for Deployment of a New Release`_ .
-
-
-Additional Version-Specific Instructions
-========================================
-
-Version 4.50
-------------
-
-Before you run step 3 (migration) of the general instructions, please run some specific
-initial migrations with the a --fake argument:
-
- cd $releasenumber
- PYTHONPATH=$PWD ietf/manage.py migrate group 0001 --fake
- cd ..
-
-
-Version 4.42
-------------
-
- - In order to serve the secretariat tools static pages (such as image, css and js
- files) the exceptions to which urls need to be handled by the python-handler
- must be updated.
-
- In the datatracker test server, the following configuration has been used to
- make apache handle the static files, and Django the dynamic pages. The new
- part is the
' - + 'Ad leggings keytar, brunch id art party dolor labore.' - + '
' - + '' - + 'Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard.' - + '
' - + '' - + 'Hover me' - + '
' - + '' + uid + '
' + uid + '
' + uid + '
' - } - - var $tooltip = $('some text') - .appendTo('#qunit-fixture') - - $tooltip.bootstrapTooltip({ - html: true, - animation: false, - trigger: 'hover', - delay: { show: 0, hide: 500 }, - container: $tooltip, - title: titleHtml - }) - - $('#tt-outer').trigger('mouseenter') - - var currentUid = $('#tt-content').text() - - $('#tt-content').trigger('mouseenter') - assert.strictEqual(currentUid, $('#tt-content').text()) - }) - - QUnit.test('should not reload the tooltip if the mouse leaves and re-enters before hiding', function (assert) { - assert.expect(4) - var titleHtml = function () { - var uid = $.fn.bootstrapTooltip.Constructor.prototype.getUID('tooltip') - return '' + uid + '
' + uid + '
' + uid + '
' - } - - var $tooltip = $('some text') - .appendTo('#qunit-fixture') - - $tooltip.bootstrapTooltip({ - html: true, - animation: false, - trigger: 'hover', - delay: { show: 0, hide: 500 }, - container: $tooltip, - title: titleHtml - }) - - var obj = $tooltip.data('bs.tooltip') - - $('#tt-outer').trigger('mouseenter') - - var currentUid = $('#tt-content').text() - - $('#tt-outer').trigger('mouseleave') - assert.strictEqual(currentUid, $('#tt-content').text()) - - assert.ok(obj.hoverState == 'out', 'the tooltip hoverState should be set to "out"') - - $('#tt-content').trigger('mouseenter') - assert.ok(obj.hoverState == 'in', 'the tooltip hoverState should be set to "in"') - - assert.strictEqual(currentUid, $('#tt-content').text()) - }) - - QUnit.test('should position arrow correctly when tooltip is moved to not appear offscreen', function (assert) { - assert.expect(2) - var done = assert.async() - - var styles = '' - var $styles = $(styles).appendTo('head') - - $('Foobar') - .appendTo('body') - .on('shown.bs.tooltip', function () { - var arrowStyles = $(this).data('bs.tooltip').$tip.find('.tooltip-arrow').attr('style') - assert.ok(/left/i.test(arrowStyles) && !/top/i.test(arrowStyles), 'arrow positioned correctly') - $(this).bootstrapTooltip('hide') - }) - .on('hidden.bs.tooltip', function () { - $styles.remove() - $(this).remove() - assert.strictEqual($('.tooltip').length, 0, 'tooltip removed from dom') - done() - }) - .bootstrapTooltip({ - container: 'body', - placement: 'top', - trigger: 'manual' - }) - .bootstrapTooltip('show') - }) - - QUnit.test('should correctly position tooltips on transformed elements', function (assert) { - var styleProps = document.documentElement.style - if (!('transform' in styleProps) && !('webkitTransform' in styleProps) && !('msTransform' in styleProps)) { - assert.expect(0) - return - } - assert.expect(2) - - var done = assert.async() - - var styles = '' - var $styles = $(styles).appendTo('head') - - var $element = $('').appendTo('#qunit-fixture') - - $element - .on('shown.bs.tooltip', function () { - var offset = $('.tooltip').offset() - $styles.remove() - assert.ok(Math.abs(offset.left - 88) <= 1, 'tooltip has correct horizontal location') - assert.ok(Math.abs(offset.top - 126) <= 1, 'tooltip has correct vertical location') - $element.bootstrapTooltip('hide') - done() - }) - .bootstrapTooltip({ - container: 'body', - placement: 'top', - trigger: 'manual' - }) - - $element.bootstrapTooltip('show') - }) - - QUnit.test('should throw an error when initializing tooltip on the document object without specifying a delegation selector', function (assert) { - assert.expect(1) - assert.throws(function () { - $(document).bootstrapTooltip({ title: 'What am I on?' }) - }, new Error('`selector` option must be specified when initializing tooltip on the window.document object!')) - }) - - QUnit.test('should do nothing when an attempt is made to hide an uninitialized tooltip', function (assert) { - assert.expect(1) - - var $tooltip = $('some text') - .appendTo('#qunit-fixture') - .on('hidden.bs.tooltip shown.bs.tooltip', function () { - assert.ok(false, 'should not fire any tooltip events') - }) - .bootstrapTooltip('hide') - assert.strictEqual($tooltip.data('bs.tooltip'), undefined, 'should not initialize the tooltip') - }) - - QUnit.test('should throw an error when template contains multiple top-level elements', function (assert) { - assert.expect(1) - assert.throws(function () { - $('') - .appendTo('#qunit-fixture') - .bootstrapTooltip({ template: '