diff --git a/plugins/communities_ratings/db/migrate/20150701122801_create_community_ratings.rb b/plugins/communities_ratings/db/migrate/20150701122801_create_community_ratings.rb new file mode 100644 index 0000000..5534983 --- /dev/null +++ b/plugins/communities_ratings/db/migrate/20150701122801_create_community_ratings.rb @@ -0,0 +1,11 @@ +class CreateCommunityRatings < ActiveRecord::Migration + def change + create_table :community_ratings do |t| + t.belongs_to :community + t.belongs_to :person + t.integer :value + + t.timestamps + end + end +end diff --git a/plugins/communities_ratings/lib/communities_ratings_plugin.rb b/plugins/communities_ratings/lib/communities_ratings_plugin.rb new file mode 100644 index 0000000..ef85463 --- /dev/null +++ b/plugins/communities_ratings/lib/communities_ratings_plugin.rb @@ -0,0 +1,12 @@ +class CommunitiesRatingsPlugin < Noosfero::Plugin + + def self.plugin_name + # FIXME + "CommunitiesRatingsPlugin" + end + + def self.plugin_description + # FIXME + _("A plugin that does this and that.") + end +end diff --git a/plugins/communities_ratings/lib/community_rating.rb b/plugins/communities_ratings/lib/community_rating.rb new file mode 100644 index 0000000..a453ca1 --- /dev/null +++ b/plugins/communities_ratings/lib/community_rating.rb @@ -0,0 +1,15 @@ +class CommunityRating < ActiveRecord::Base + belongs_to :person + belongs_to :community + + attr_accessible :value, :person, :community + + validates :value, + :presence => true, :inclusion => { + in: 0..5, message: _("must be between 0 and 5") + } + + validates :community_id, :person_id, + :presence => true + +end diff --git a/plugins/communities_ratings/lib/ext/community.rb b/plugins/communities_ratings/lib/ext/community.rb new file mode 100644 index 0000000..a0e9a3b --- /dev/null +++ b/plugins/communities_ratings/lib/ext/community.rb @@ -0,0 +1,5 @@ +require_dependency 'community' + +Community.class_eval do + has_many :community_ratings +end \ No newline at end of file diff --git a/plugins/communities_ratings/lib/ext/person.rb b/plugins/communities_ratings/lib/ext/person.rb new file mode 100644 index 0000000..f0839f7 --- /dev/null +++ b/plugins/communities_ratings/lib/ext/person.rb @@ -0,0 +1,5 @@ +require_dependency 'person' + +Person.class_eval do + has_many :community_ratings +end diff --git a/plugins/communities_ratings/test/unit/community_rating_test.rb b/plugins/communities_ratings/test/unit/community_rating_test.rb new file mode 100644 index 0000000..b730537 --- /dev/null +++ b/plugins/communities_ratings/test/unit/community_rating_test.rb @@ -0,0 +1,14 @@ +require 'test_helper' + +class CommunityRatingTest < ActiveSupport::TestCase + test "The value must be between 0 and 5" do + cr1 = CommunityRating.new :value => -1 + cr2 = CommunityRating.new :value => 6 + + assert_equal false, cr1.valid? + assert_equal false, cr2.valid? + + assert_equal true, cr1.errors[:value].include?("must be between 0 and 5") + assert_equal true, cr2.errors[:value].include?("must be between 0 and 5") + end +end -- libgit2 0.21.2