witam
jak w tytule, w tabelach users i folders zostają wpisy i test za pierwszym razem przechodzi a za drugim się wywala
[code=ruby]require ‘spec_helper’
describe Folder do
it { should belong_to(:user) }
it { should belong_to(:project) }
it { should validate_presence_of(:name) }
it { should validate_length_of(:name, :within => Folder::NAME_LENGTH) }
it { should validate_uniqueness_of(:name) }
before(:all) do
@project = Factory(:project)
@user = Factory(:user)
@project.add_user(@user)
@folder = Factory(:folder, :project => @project, :user => @user)
end
describe “a new root folder” do
it “should have no parent” do
@folder.has_parent?.should be_false
end
end
describe “any folder” do
before(:all) do
@name = @folder.name
end
it "should not allow create a neighbour folder with the same name" do
@neighbour_folder = Folder.create(:name => @name, :project => @project, :user => @user)
@neighbour_folder.should_not be_valid
end
it "should allow create a folder with the same name but in different path" do
@child_folder = Factory(:folder, :project => @project, :user => @user, :parent_folder_id => @folder.id)
@same_name_folder = Factory(:folder, :name => @name, :project => @project, :user => @user, :parent_folder_id => @child_folder.id)
@same_name_folder.should be_valid
end
end
end[/code]
pomaga usunięcie :all ale wtedy to jest odpalane przed każdym przypadkiem, a nie ma takiej potrzeby
Drugie pytanie jest takie, nazwa folderu musi być unikalna, chciałem przetestować czy w przypadku podania takiej samej model jest invalid. Jeśli tworzę go za pomocą Factory to wywala mi:
[quote]Failures:
- Folder any folder should not allow create a neighbour folder with the same name
Failure/Error: @neighbour_folder = Factory.create(:folder, :name => @name, :project => @project, :user => @user)
ActiveRecord::RecordInvalid:
Validation failed: Name has already been taken./spec/models/folder_spec.rb:48[/quote]
Dlatego zamiast factory musiałem użyć poprostu Folder.create, nie wiem czy to dobre podejście w takim przypadku
@neighbour_folder = Folder.create(:name => @name, :project => @project, :user => @user)