AR = "ActiveRecord" My comment was more simply just a personal style preference. There is no one correct way to write specs.
Personally, I do not like specs which modify variables or helpers defined in different scopes via before blocks. This leads to very confusing, "where was this defined? where was it modified?" questions and debugging sessions. This is just my 2cents and take it with several grains of salt, but I would consider writing the spec this way: https://gist.github.com/cupakromer/fc5ccd67714c878dd5d8 On Thu, Jul 24, 2014 at 8:52 AM, Roelof Wobben <[email protected]> wrote: > thanks, > > problem solved, > > Another question: > > Aaron have said he do not like this sort of spec files. > What is a better style hen and what are AR's > > Roelof > > Op woensdag 23 juli 2014 22:03:47 UTC+2 schreef Aaron Kromer: >> >> That's still missing an end: >> >> describe "when password doesn't match confirmation" do >> before { @user.password_confirmation = "mismatch" } >> it { should_not be_valid }# <---- No `end` >> >> describe "with a password that's too short" do >> before { @user.password = @user.password_confirmation = "a" * 5 } >> it { should be_invalid }end >> >> >> >> On Wed, Jul 23, 2014 at 2:02 PM, Roelof Wobben <[email protected]> >> wrote: >> >>> >>> When I change it to : >>> >>> describe "when password doesn't match confirmation" do >>> before { @user.password_confirmation = "mismatch" } >>> it { should_not be_valid } >>> >>> describe "with a password that's too short" do >>> before { @user.password = @user.password_confirmation = "a" * 5 } >>> it { should be_invalid } >>> end >>> >>> I still see the old error >>> Also when I change the indention so it matches the second it. >>> >>> Roelof >>> Op woensdag 23 juli 2014 17:28:23 UTC+2 schreef Aaron Kromer: >>>> >>>> You'll need to provide more details. Fixing that end worked for me. >>>> >>>> >>>> On Wed, Jul 23, 2014 at 8:08 AM, Roelof Wobben <[email protected]> >>>> wrote: >>>> >>>>> hello, >>>>> >>>>> I did add a end on rule 80 but still the test fail. Im now on holidays >>>>> for 2 weeks and will look at this topic after my holidays, >>>>> >>>>> Op dinsdag 22 juli 2014 22:57:45 UTC+2 schreef Javix: >>>>>> >>>>>> >>>>>> On 22 Jul 2014, at 19:05, Aaron Kromer <[email protected]> wrote: >>>>>> >>>>>> This is one reason I personally dislike this style of specs combined >>>>>> with AR hooks. It makes more difficult than necessary to troubleshoot. >>>>>> >>>>>> As @javix pointed out, line 20 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L20> >>>>>> has: >>>>>> >>>>>> it { should be_valid } >>>>>> >>>>>> At this point the subject is what is defined on line 11 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L11> >>>>>> : >>>>>> >>>>>> subject { @user } >>>>>> >>>>>> The ivar @user is defined in the before block on line 5 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L5-L9> >>>>>> : >>>>>> >>>>>> before do >>>>>> @user = User.new(name: "Example User", email: "[email protected]", >>>>>> password: "foobar", password_confirmation: "foobar") >>>>>> end >>>>>> >>>>>> However, when the spec on line 91 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L91> >>>>>> runs it calls save in the before block on line 87 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L87> >>>>>> : >>>>>> >>>>>> before { @user.save } >>>>>> >>>>>> By using save! it raises an error and confirms that the model was >>>>>> invalid. Here's the error: >>>>>> >>>>>> Failure/Error: before { @user.save! } >>>>>> ActiveRecord::RecordInvalid: >>>>>> Validation failed: Password confirmation doesn't match Password >>>>>> >>>>>> Dumping the attributes of @user shows there is a mismatch in the >>>>>> password: >>>>>> >>>>>> { >>>>>> password: "foobar", >>>>>> password_confirmation: "mismatch", >>>>>> } >>>>>> >>>>>> This is happening because there is an additional before hook that >>>>>> runs defined on line 87 >>>>>> <https://github.com/roelof1967/sample_app_nutrious/blob/90dcb47/spec/models/user_spec.rb#L78>. >>>>>> On a visual inspection, it doesn't appear that it is initially related >>>>>> because the indenting is out of sync. The end on line 84 really >>>>>> applies to the describe on line 81. >>>>>> >>>>>> >>>>>> On Tue, Jul 22, 2014 at 10:13 AM, Javix <[email protected]> wrote: >>>>>> >>>>>>> >>>>>>> >>>>>>> On Tuesday, July 22, 2014 8:23:07 AM UTC+2, Roelof Wobben wrote: >>>>>>>> >>>>>>>> Hello, >>>>>>>> >>>>>>>> I do still follow the Hartl tutorial. >>>>>>>> Am at chapter 6 and according to the manual the test schould be >>>>>>>> successfull but I see these error messages: >>>>>>>> >>>>>>>> Failures: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> 1) User when password doesn't match confirmation return va >>>>>>>> lue of authenticate method with valid password >>>>>>>> >>>>>>>> >>>>>>>> Failure/Error: it { should eq found_user.authenticate(@ >>>>>>>> user.password) } >>>>>>>> >>>>>>>> >>>>>>>> NoMethodError: >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> undefined method `authenticate' for nil:NilClass >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> # ./spec/models/user_spec.rb:91:in `block (5 levels) in >>>>>>>> <top (required)>' >>>>>>>> >>>>>>>> You can find my code here : https://github.com/roelof1967/ >>>>>>>> sample_app_nutrious/tree/chapter_six >>>>>>>> >>>>>>>> Roelof >>>>>>>> >>>>>>> >>>>>>> @Aaron: as of his gemfile he uses 4.1.4. I don't think save! could >>>>>>> solve that because the previous example pass (line 20): >>>>>>> >>>>>>> it { should be_valid } >>>>>>> >>>>>>> The problem is that he is callilng authenticate on Nil. >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> 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/09a1007d-9811-4548-8 >>>>>>> 0f9-e5b0f3f33a17%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/rspec/09a1007d-9811-4548-80f9-e5b0f3f33a17%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> >>>>>> @Aaron: Well done ! I haven't pick up the indention of do-end block. >>>>>> >>>>>> -- >>>>>> You received this message because you are subscribed to a topic in >>>>>> the Google Groups "rspec" group. >>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to >>>>>> pic/rspec/3j266FPKVy4/unsubscribe. >>>>>> To unsubscribe from this group and all its topics, 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/CAKCESdi5aX6_4_8Fguvd0WNA3K%3DrCZy622EoiTHz9G6kK%2 >>>>>> BAG%2BA%40mail.gmail.com >>>>>> <https://groups.google.com/d/msgid/rspec/CAKCESdi5aX6_4_8Fguvd0WNA3K%3DrCZy622EoiTHz9G6kK%2BAG%2BA%40mail.gmail.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/513a7aec-cca3-4f22-9ec7-d4889b4d0b59%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/rspec/513a7aec-cca3-4f22-9ec7-d4889b4d0b59%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/8da7033b-95a4-4e61-88a8-bb2ea4a94748%40googlegroups.com >>> <https://groups.google.com/d/msgid/rspec/8da7033b-95a4-4e61-88a8-bb2ea4a94748%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/f2c96d10-026a-4fda-ab6d-9eb586d43824%40googlegroups.com > <https://groups.google.com/d/msgid/rspec/f2c96d10-026a-4fda-ab6d-9eb586d43824%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/CAKCESdjbJ8n%2B4aq_TSwu3uuhiK1LAM-%2BZq%3DQ6ArhnHYSw9%2BiPA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
