Am Mittwoch, 5. Dezember 2012 22:32:41 UTC+1 schrieb [email protected]: > On Wed, Dec 5, 2012 at 3:23 PM, netzfisch <[email protected] <javascript:>> > wrote: > > I have model (event.rb) method, that retrieves a list of all recurrence > > dates for the named period > > > > def self.dates_between(start_date, end_date) > > dates = (start_date..end_date).step(7).to_a > > end > > > > than I specify the following in event_spec.rb > > > > before(:each) do > > @event = FactoryGirl.create(:event) > > end > > subject { @event } > > Side note: recommend using this instead: > > subject(:event) { FactoryGirl.create(:event) } >
thanks for the feedback: ist that statement also executed before every describe/it statement, because there are further test: see https://github.com/netzfisch/teamorga/blob/master/spec/models/event_spec.rb > > > > > ... other working tests ... > > > > describe '#dates_between' do > > context 'finds recurrences dates of a event' do > > start_date = "2012-12-01 18:25:25" > > end_date = "2012-12-15 18:25:25" > > output_dates = ["2012-12-01 18:25:25", "2012-12-08 18:25:25", > > "2012-12-15 18:25:25"] > > > > it 'should call Event with method dates_between' do > > @event.should_receive(:dates_between).with(start_date, > end_date) > > @event.dates_between(start_date, end_date) > > end > > This ^^ will pass regardless of whether the method is defined in the > right place because the should_receive statement defines the > dates_between method if it's not there. In other words, this example > is not actually testing anything besides how rspec-mocks works. > ok, the intention was, to test that the class method get called (I read that this the main difference between 'stub' and 'should_receive' with the two attributes? How should I change that? > > > > > it 'should find and return the RIGHT recurrences dates' do > > @event.dates_between(start_date, end_date).should > > eq(output_dates) > > This is probably the one that's failing because you're defining a > class method but you're calling an instance method. > right, but how do I ask for a class-method. Beside that I could change the behaviour in the modell and controller, but that is not really intended: https://github.com/netzfisch/teamorga/blob/master/app/models/event.rb https://github.com/netzfisch/teamorga/blob/master/app/controllers/events_controller.rb > > > end > > end > > end > > > > and get this failure: > > > > 1) Event#dates_between finds recurrences dates of a event should > find > > and return the RIGHT recurrences dates > > Failure/Error: @event.dates_between(start_date, end_date).should > > eq(output_dates) > > NoMethodError: > > undefined method `dates_between' for #<Event:0xb99e9f8> > > # ./spec/models/event_spec.rb:52:in `block (4 levels) in <top > > (required)>' > > > > when I change in the model from a class method to an instance method > > (removing "self.") the console just prints out "wild data": > > > >> 22:93:55", "2012-12-01 22:93:62", "2012-12-01 22:93:69", "2012-12-01 > >> 22:93:76", "2012-12-01 22:93:83", "2012-12-01 22:93:90", "2012-12-01 > >> 22:93:97", "2012-12-01 22:94:04", "2012-12-01 22:94:11", "2012-12-01 > >> 22:94:18", "2012-12-01 22:94:25", "2012-12-01 22:94:32", ... > > What is wild about that data? Looks like what you're defining in the > example. What data are you expecting here? > ok, you are right, I expect ["2012-12-01 18:25:25", "2012-12-08 18:25:25", "2012-12-15 18:25:25"] but probably should expext without time, which screws my console by iterating through every second - minute - hour for the three expected days ["2012-12-01", "2012-12-08", "2012-12-15"] although it works in production? Probably I should define in the model a date-format without time - not sure there is one? Anyway, it is not really intended: https://github.com/netzfisch/teamorga/blob/master/db/schema.rb -- You received this message because you are subscribed to the Google Groups "rspec" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msg/rspec/-/0aCxIo5ti9UJ. For more options, visit https://groups.google.com/groups/opt_out.
