53 lines
		
	
	
		
			964 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			964 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| module TesterConnector
 | |
|   class Base
 | |
|     attr_reader :collection
 | |
| 
 | |
|     def initialize
 | |
|       collection_name = self.class.name.demodulize.underscore.pluralize
 | |
|       @collection = SpecSupport.db.collection(collection_name)
 | |
|       @next_id = 1
 | |
|     end
 | |
| 
 | |
|     def create(hash={})
 | |
|       collection.insert(create_params(hash))
 | |
|       if block_given?
 | |
|         yield
 | |
|         cleanup
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def create_list(size=2, hash={})
 | |
|       size.times { create(hash) }
 | |
|       if block_given?
 | |
|         yield
 | |
|         cleanup
 | |
|       end
 | |
|     end
 | |
| 
 | |
|     def list
 | |
|       collection.find().to_a
 | |
|     end
 | |
| 
 | |
|     def show(id)
 | |
|       collection.find({'_id' => id}).to_a.first
 | |
|     end
 | |
| 
 | |
|     def cleanup
 | |
|       collection.remove
 | |
|     end
 | |
| 
 | |
|     private
 | |
| 
 | |
|     def create_params(hash)
 | |
|       params = hash.dup
 | |
|       if params[:id]
 | |
|         params['_id'] = params.delete(:id)
 | |
|       end
 | |
|       unless params['_id']
 | |
|         params['_id'] = @next_id
 | |
|         @next_id += 1
 | |
|       end
 | |
|       params
 | |
|     end
 | |
|   end
 | |
| end | 
