// Porting tests from Apache CouchDB bulk docs tests
// https://github.com/apache/couchdb/blob/master/share/www/script/test/bulk_docs.js

// Note: writing sync tests over an async api sucks, havent found a decent
// dataflow type library I like yet

module('conflicts', {
  setup : function () {
    this.name = 'idb://test_suite_db';
  }
});

asyncTest('Testing conflicts', function() {
  initTestDB(this.name, function(err, db) {
    var doc = {_id: 'foo', a:1, b: 1};
    db.put(doc, function(err, res) {
      doc._rev = res.rev;
      ok(res.ok);
      db.get('foo', function(err, doc2) {
        ok(doc._id === doc2._id && doc._rev && doc2._rev);
        doc.a = 2;
        doc2.a = 3;
        db.put(doc, function(err, res) {
          ok(res.ok);
          db.put(doc2, function(err) {
            ok(err.error === 'conflict');
            db.changes(function(err, results) {
              ok(results.results.length === 1);
              doc2._rev = undefined;
              db.put(doc2, function(err) {
                ok(err.error === 'conflict');
                start();
              });
            });
          });
        });
      });
    });
  });
});

asyncTest('Testing conflicts', function() {
  var doc = {_id: 'fubar', a:1, b: 1};
  Pouch(this.name, function(err, db) {
    db.put(doc, function(err, ndoc) {
      doc._rev = ndoc.rev;
      db.remove(doc, function() {
        delete doc._rev;
        db.put(doc, function(err, ndoc) {
          if (err) {
            ok(false);
            start();
            return;
          }
          ok(ndoc.ok, 'written previously deleted doc without rev');
          start();
        });
      });
    });
  });
});
@@ -1,254 +1,51 @@
-// Porting tests from Apache CouchDB bulk docs tests%0A// https://github.com/apache/couchdb/blob/master/share/www/script/test/bulk_docs.js%0A%0A// Note: writing sync tests over an async api sucks, havent found a decent%0A// dataflow type library I like yet%0A%0A
+%5B'idb-1', 'http-1'%5D.map(function(adapter) %7B%0A%0A  
 modu
@@ -61,13 +61,27 @@
 icts
-'
+: ' + adapter
 , %7B%0A
+  
   se
@@ -104,16 +104,18 @@
 ) %7B%0A    
+  
 this.nam
@@ -122,40 +122,52 @@
 e = 
-'idb://test_suite_db'
+generateAdapterUrl(adapter)
 ;%0A  
+ 
+ 
 %7D%0A
+  
 %7D);%0A%0A
+  
 asyn
@@ -206,16 +206,18 @@
 ion() %7B%0A
+  
   initTe
@@ -256,16 +256,18 @@
 ) %7B%0A    
+  
 var doc 
@@ -293,24 +293,26 @@
  b: 1%7D;%0A    
+ 
+ 
 db.put(doc, 
@@ -328,24 +328,26 @@
 err, res) %7B%0A
+  
       doc._r
@@ -362,24 +362,26 @@
 .rev;%0A      
+  
 ok(res.ok);%0A
@@ -386,16 +386,18 @@
 ;%0A      
+ 
+ 
 db.get('
@@ -420,24 +420,26 @@
 rr, doc2) %7B%0A
+  
         ok(d
@@ -489,24 +489,26 @@
 v);%0A        
+  
 doc.a = 2;%0A 
@@ -510,24 +510,26 @@
  2;%0A        
+ 
+ 
 doc2.a = 3;%0A
@@ -528,16 +528,18 @@
 .a = 3;%0A
+  
         
@@ -573,32 +573,34 @@
 es) %7B%0A          
+  
 ok(res.ok);%0A    
@@ -597,32 +597,34 @@
 .ok);%0A          
+ 
+ 
 db.put(doc2, fun
@@ -628,32 +628,34 @@
 function(err) %7B%0A
+  
             ok(e
@@ -692,16 +692,18 @@
         
+ 
+ 
 db.chang
@@ -726,24 +726,26 @@
  results) %7B%0A
+  
             
@@ -790,24 +790,26 @@
             
+  
 doc2._rev = 
@@ -819,16 +819,18 @@
 efined;%0A
+  
         
@@ -856,32 +856,34 @@
 function(err) %7B%0A
+  
                 
@@ -920,32 +920,34 @@
                 
+  
 start();%0A       
@@ -931,32 +931,52 @@
        start();%0A
+                %7D);%0A
               %7D)
@@ -1027,33 +1027,31 @@
     
-  %7D);%0A  
   
+
 %7D);%0A
+  
   %7D);%0A
+  
 %7D);%0A%0A
+  
 asyn
@@ -1090,16 +1090,18 @@
 ion() %7B%0A
+  
   var do
@@ -1131,16 +1131,18 @@
  b: 1%7D;%0A
+  
   Pouch(
@@ -1172,24 +1172,26 @@
 , db) %7B%0A    
+ 
+ 
 db.put(doc, 
@@ -1208,24 +1208,26 @@
 rr, ndoc) %7B%0A
+  
       doc._r
@@ -1247,16 +1247,18 @@
 ;%0A      
+  
 db.remov
@@ -1285,16 +1285,18 @@
         
+ 
+ 
 delete d
@@ -1300,24 +1300,26 @@
 e doc._rev;%0A
+  
         db.p
@@ -1358,16 +1358,18 @@
         
+  
 if (err)
@@ -1383,16 +1383,18 @@
         
+ 
+ 
 ok(false
@@ -1396,16 +1396,18 @@
 false);%0A
+  
         
@@ -1435,16 +1435,18 @@
     
+  
 return;%0A
     
@@ -1441,16 +1441,18 @@
 return;%0A
+  
         
@@ -1465,16 +1465,18 @@
         
+  
 ok(ndoc.
@@ -1528,32 +1528,34 @@
 ev');%0A          
+  
 start();%0A       
@@ -1539,32 +1539,46 @@
        start();%0A
+          %7D);%0A
         %7D);%0A    
@@ -1597,11 +1597,12 @@
 ;%0A  %7D);%0A
+%0A
 %7D);

Test conflicts over both idb + http adapters