<!DOCTYPE html>
<meta charset="utf-8">
<title>IDBObjectStore.put() - put where an index has unique:true specified </title>
<link rel="author" title="Microsoft" href="http://www.microsoft.com">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="support.js"></script>

<script>
    var db,
      record = { key: 1, property: "data" };

    var open_rq = createdb(async_test());
    open_rq.onupgradeneeded = function(e) {
        db = e.target.result;
        var objStore = db.createObjectStore("store", { autoIncrement: true });
        objStore.createIndex("i1", "property", { unique: true });
        objStore.put(record);

        var rq = objStore.put(record);
        rq.onsuccess = fail(this, "success on putting duplicate indexed record")

        rq.onerror = this.step_func(function(e) {
            assert_equals(rq.error.name, "ConstraintError");
            assert_equals(e.target.error.name, "ConstraintError");

            assert_equals(e.type, "error");

            e.preventDefault();
            e.stopPropagation();
        });
    };

    // Defer done, giving a spurious rq.onsuccess a chance to run
    open_rq.onsuccess = function(e) {
        this.done();
    }
</script>

<div id="log"></div>
