anchor.diff:            expect(diff['version'], equals(2));
             expect(diff['author'], equals('Michael Smith'));
           });
  +    });
  +
  +    test('remove non-existing data. (T08)', () {
  +      // when
  +      Future shouldNotThrow =ready.then((_) => months.remove('january', 'Michael Smith'));
  +
  +      // then
  +        expect(shouldNotThrow, completion(isTrue));
       });
   
       test('can reconstruct changes form diff. (T09)', () {
  
positive.code:         expect(shouldThrow, throws);
      });
  
  
      test('change data with bad _id. (T06)', () {
        // given
        Future shouldThrow = ready.then((_) => months.add(new Map.from(january), 'John Doe'))
  
        // when
          .then((_) => months.change('january', new Map.from(february), 'Michael Smith'));
  
  
        // then
          expect(shouldThrow, throws);
  
negative.code:   });
  }
  
  Map _stripPrivateFields(Map<String, dynamic> data){
    Map newData = {};
    data.forEach((key,value) {
      if (!key.startsWith('__')) newData[key] = value;
    });
    return newData;
  }
  
  List _stripPrivateFieldsList(List<Map<String, dynamic>> data){
    List newData = [];
    data.forEach((oldMap) {
      newData.add(_stripPrivateFields(oldMap));
    });
    return newData;
  }
  
  void main() {
    group('MongoProvider', () {
      MongoProvider months;
      Future ready;
      MongoDatabase mongodb;
      Map january, february, march, april, may, june, july,
          august, september, october, november, december;
  
       setUp(() {
        january = {'name': 'January', 'days': 31, 'number': 1, '_id': 'january'};
        february = {'name': 'February', 'days': 28, 'number': 2, '_id': 'february'};
        march =  {'name': 'March', 'days': 31, 'number': 3, '_id': 'march'};
  