Skip to content

Commit

Permalink
Implmented not condition for string
Browse files Browse the repository at this point in the history
  • Loading branch information
Makoto Inoue committed Nov 9, 2008
1 parent d6f101a commit 25b5ccf
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 12 deletions.
23 changes: 21 additions & 2 deletions lib/tc_adapter.rb
Expand Up @@ -88,8 +88,27 @@ def read_one(query)
if property.name == :id # Model.get
data = get_item_from_id(query, value)
else # Model.first w argument
item_id = access_data(query.model, property.name) do |item|
item.get(value)
case operator
when :eql
then
item_id = access_data(query.model, property.name) do |item|
item.get(value)
end
when :not # TODO: Think about better way to extract, as this is going through data one by one
then
ruby_operator = "!="
# result = ""
item_id = access_data(query.model, property.name) do |item|
raw_data = BDBCUR::new(item)
raw_data.first
while key = raw_data.key && eval("raw_data.key #{ruby_operator} value")
result = item.get(raw_data.key)
raw_data.next
end
result
end
else
raise NotImplementedError("#{operator} is not implmented yet")
end
data = get_item_from_id(query, item_id)
end
Expand Down
33 changes: 23 additions & 10 deletions spec/tc_adapater_spec.rb
Expand Up @@ -81,23 +81,36 @@
end

describe "Matcher" do
before(:each) do
@four = User.create(:name => 'four', :age => 32)
@three = User.create(:name => 'three', :age => 31)
@one = User.create(:name => 'one', :age => 5)
@two = User.create(:name => 'two', :age => 6)
@five = User.create(:name => 'five', :age => 32)
end
describe "first" do
describe "eql" do
before(:each) do
@tom = User.create(:name => 'tom', :age => 32)
@peter = User.create(:name => 'peter', :age => 32)
end

it "should return a record " do
User.first(:name => 'four').should == @four
User.first(:name => 'tom').should == @tom
end
it "should return first record when searched by an attribute which allows duplicate entry" do
User.first(:age => 32).should == @four
User.first(:age => 32).should == @tom
end
end


describe "not" do
before(:each) do
@tom = User.create(:name => 'tom', :age => 2)
@peter = User.create(:name => 'peter', :age => 3)
@mark = User.create(:name => 'mark', :age => 5)
end
it "should return a record for string" do
User.first(:name.not => 'tom').should == @peter
end
it "should return a record for numeric" do
pending
User.first(:age.not => 2).should == @peter
end

end
it 'should get a record by not matcher'
it 'should get a record by gt matcher'
it 'should get a record by gte matcher'
Expand Down

0 comments on commit 25b5ccf

Please sign in to comment.