I think is because you have not created any FooDAO records in the get context.
Database state is not shared between contexts (unless they're nested inside a top-level context which created records). [image: --] José Antonio Antillón [image: http://]about.me/aantillon <http://about.me/aantillon?promo=email_sig> On Mon, May 18, 2015 at 10:05 AM, <[email protected]> wrote: > I'm working in a project which involves ruby, sequel and sinatra. I read > about which testing framework to use, and RSpec seems to be the most used > by the community. > > The project consists in a CRUD application, using DAO as the persistence > pattern. > > require 'sequel' > > DB = Sequel.sqlite > DB.create_table :foos do > primary_key :id > int :foo_attribute1 > int :foo_attribute2 > end > > class Foo > attr_accessor :id, :foo_attribute1, :foo_attribute2 > end > > module FooDAO > extend self > > def save(f) > DB[:foos].insert(foo_attribute1: f.foo_attribute1, foo_attribute2: > f.foo_attribute2) > end > > def [](id) > DB[:foos].where(id: id).first > end > > def update(f) > DB[:foos].where(id: f.id).update(foo_attribute1: > f.foo_attribute1, foo_attribute2: f.foo_attribute2) > end > > def count > DB[:foos].count > end > end > > describe FooDAO do > context 'save' do > f = Foo.new > f.foo_attribute1 = 1 > f.foo_attribute2 = 2 > FooDAO.save f > it { expect(FooDAO.count).to eq 1 } > end > > context 'get' do > it { expect(FooDAO[1][:foo_attribute1]).to eq 1 } > it { expect(FooDAO[1][:foo_attribute2]).to eq 2 } > end > > context 'update' do > f = Foo.new > f.id = 1 > f.foo_attribute1 = 2 > f.foo_attribute2 = 3 > FooDAO.update f > it { expect(FooDAO[1][:foo_attribute1]).to eq 2 } > it { expect(FooDAO[1][:foo_attribute2]).to eq 3 } > end > end > > In this case, the context `get` won't pass the examples. But if I comment > the context `update`, they will. > > -- > You received this message because you are subscribed to the Google Groups > "rspec" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/rspec/46177435-e16e-4c9a-a3e8-9bcd017a777c%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/46177435-e16e-4c9a-a3e8-9bcd017a777c%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "rspec" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/rspec/CANS3KkJk55whabcjTuZJ02EFhpcWdCY0-y4%2Bz7ptDM8u-36MXQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
