unidata 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -90,6 +90,19 @@ Or, you can just check if a record exists:
90
90
  Product.exists?(12345)
91
91
  ```
92
92
 
93
+ ### Deleting records:
94
+
95
+ ```ruby
96
+ product = Product.find(12345)
97
+ product.destroy
98
+ ```
99
+
100
+ Or, you can delete without retrieving first:
101
+
102
+ ```ruby
103
+ Product.delete(12345)
104
+ ```
105
+
93
106
  Contributing
94
107
  ------------
95
108
 
@@ -121,4 +134,4 @@ Please use GitHub's [issue tracker](http://github.com/jisraelsen/unidata/issues)
121
134
  Author
122
135
  ------
123
136
 
124
- [Jeremy Israelsen](http://github.com/jisraelsen)
137
+ [Jeremy Israelsen](http://github.com/jisraelsen)
@@ -107,6 +107,12 @@ module Unidata
107
107
  end
108
108
  end
109
109
 
110
+ def delete_record(filename, record_id)
111
+ open_file(filename) do |file|
112
+ file.delete_record(record_id)
113
+ end
114
+ end
115
+
110
116
  private
111
117
  def open_file(filename)
112
118
  begin
data/lib/unidata/model.rb CHANGED
@@ -82,6 +82,10 @@ module Unidata
82
82
  end
83
83
  end
84
84
 
85
+ def delete(id)
86
+ connection.delete_record(filename, id)
87
+ end
88
+
85
89
  private
86
90
  def define_attribute_accessor(attribute_name)
87
91
  class_eval <<-end_eval
@@ -118,6 +122,10 @@ module Unidata
118
122
  self.class.connection.write(self.class.filename, id, record)
119
123
  end
120
124
 
125
+ def destroy
126
+ self.class.connection.delete_record(self.class.filename, id)
127
+ end
128
+
121
129
  private
122
130
  def initialize_attributes
123
131
  @attributes = {}
@@ -1,3 +1,3 @@
1
1
  module Unidata
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -273,4 +273,28 @@ describe Unidata::Connection do
273
273
  connection.write_field('TEST', 123, 'value', 5)
274
274
  end
275
275
  end
276
+
277
+ describe '#delete_record' do
278
+ before(:each) do
279
+ @file = double('UniFile', :close => nil, :delete_record => nil)
280
+ @session.stub(:open).and_return(@file)
281
+
282
+ connection.open
283
+ end
284
+
285
+ it 'opens file with filename' do
286
+ @session.should_receive(:open).with('TEST')
287
+ connection.delete_record('TEST', 123)
288
+ end
289
+
290
+ it 'deletes record from file' do
291
+ @file.should_receive(:delete_record).with(123)
292
+ connection.delete_record('TEST', 123)
293
+ end
294
+
295
+ it 'closes file' do
296
+ @file.should_receive(:close)
297
+ connection.delete_record('TEST', 123)
298
+ end
299
+ end
276
300
  end
@@ -230,6 +230,16 @@ describe Unidata::Model do
230
230
  end
231
231
  end
232
232
 
233
+ describe '.delete' do
234
+ it 'deletes record from file' do
235
+ connection = double('connection', :delete_record => nil)
236
+ Unidata.stub(:connection).and_return(connection)
237
+
238
+ connection.should_receive(:delete_record).with('TEST', '1234')
239
+ Record.delete('1234')
240
+ end
241
+ end
242
+
233
243
  describe '#initialize' do
234
244
  it 'captures provied attributes' do
235
245
  instance = Record.new(:id => '123', :name => 'John Doe', :status => 'inactive')
@@ -289,5 +299,26 @@ describe Unidata::Model do
289
299
  obj.save
290
300
  end
291
301
  end
302
+
303
+ describe '#destroy' do
304
+ it 'deletes record from file' do
305
+ connection = double('connection', :delete_record => nil)
306
+ Unidata.stub(:connection).and_return(connection)
307
+
308
+ obj = Record.new(
309
+ :id => '1234',
310
+ :name => 'John Doe',
311
+ :age => 25,
312
+ :birth_date => Date.today,
313
+ :employer => 'Awesome Company',
314
+ :job_title => 'Manager',
315
+ :salary => BigDecimal.new('60_000.00'),
316
+ :status => 'inactive'
317
+ )
318
+
319
+ connection.should_receive(:delete_record).with('TEST', '1234')
320
+ obj.destroy
321
+ end
322
+ end
292
323
  end
293
324
 
metadata CHANGED
@@ -2,14 +2,14 @@
2
2
  name: unidata
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.7
5
+ version: 0.0.8
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jeremy Israelsen
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-25 00:00:00.000000000 Z
12
+ date: 2012-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake