text: #!/bin/env python2
  # -*- py-which-shell: "python2"; -*-
  import os
  import logging
  import shelve
  
  try:
      import unittest.mock as mock
  except ImportError:
      import mock
  import json
  import os
  from unittest import TestCase
  from senpy.models import Response, Entry
  from senpy.plugins import SenpyPlugin, ShelfMixin
  
  
  class ShelfTest(ShelfMixin, SenpyPlugin):
  
      def test(self, key=None, value=None):
          assert isinstance(self.sh, shelve.Shelf)
          assert key in self.sh
          print('Checking: sh[{}] == {}'.format(key, value))
          print('SH[{}]: {}'.format(key, self.sh[key]))
          assert self.sh[key] == value
          
  
  
  class ModelsTest(TestCase):
      shelf_file = 'shelf_test.db'
  
  
      def tearDown(self):
          if os.path.isfile(self.shelf_file):
              os.remove(self.shelf_file)
  
      setUp = tearDown
          
      def test_shelf(self):
          ''' A shelf is created and the value is stored '''
          a = ShelfTest(info={'name': 'shelve',
                              'version': 'test',
                              'shelf_file': self.shelf_file})
          assert a.sh == {}
          assert a.shelf_file == self.shelf_file
  
          a.sh['a'] = 'fromA'
  
          a.test(key='a', value='fromA')
          del(a)
          assert os.path.isfile(self.shelf_file)
          sh = shelve.open(self.shelf_file)
          assert sh['a'] == 'fromA'
  
  
      def test_two(self):
          ''' Reusing the values of a previous shelf '''
          a = ShelfTest(info={'name': 'shelve',
                              'version': 'test',
                              'shelf_file': self.shelf_file})
          print('Shelf file: %s' % a.shelf_file)
          a.sh['a'] = 'fromA'
          a.close()
  
          b = ShelfTest(info={'name': 'shelve',
                              'version': 'test',
                              'shelf_file': self.shelf_file})
          b.test(key='a', value='fromA')
          b.sh['a'] = 'fromB'
          assert b.sh['a'] == 'fromB'
  