diff --git a/app/models/project.rb b/app/models/project.rb index 7c279f3..d25ae43 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -5,6 +5,7 @@ class Project field :name, :type => String field :api_key + embeds_many :watchers references_many :errs before_validation :generate_api_key, :on => :create diff --git a/app/models/watcher.rb b/app/models/watcher.rb new file mode 100644 index 0000000..f45fce9 --- /dev/null +++ b/app/models/watcher.rb @@ -0,0 +1,11 @@ +class Watcher + include Mongoid::Document + include Mongoid::Timestamps + + field :email + + embedded_in :project, :inverse_of => :watchers + + validates_presence_of :email + +end diff --git a/spec/factories/project_factories.rb b/spec/factories/project_factories.rb index d20321b..96be2a4 100644 --- a/spec/factories/project_factories.rb +++ b/spec/factories/project_factories.rb @@ -1,5 +1,11 @@ Factory.sequence(:project_name) {|n| "Project ##{n}"} +Factory.sequence(:email) {|n| "email#{n}@example.com"} Factory.define(:project) do |p| p.name { Factory.next :project_name } +end + +Factory.define(:watcher) do |w| + w.project {|p| p.association :project} + w.email { Factory.next :email } end \ No newline at end of file diff --git a/spec/models/watcher_spec.rb b/spec/models/watcher_spec.rb new file mode 100644 index 0000000..7b507c6 --- /dev/null +++ b/spec/models/watcher_spec.rb @@ -0,0 +1,13 @@ +require 'spec_helper' + +describe Watcher do + + context 'validations' do + it 'requires an email address' do + watcher = Factory.build(:watcher, :email => nil) + watcher.should_not be_valid + watcher.errors[:email].should include("can't be blank") + end + end + +end -- libgit2 0.21.2