Commit aeef9a08cadfe496281ec3a94c5c0c5adbfc5406

Authored by João M. M. da Silva + Alessandro Palmeira
Committed by Paulo Meireles
1 parent 10f47566

[Mezuro] Readings in reading_group.

plugins/mezuro/controllers/myprofile/mezuro_plugin_reading_controller.rb
... ... @@ -12,10 +12,9 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController
12 12 def create
13 13 reading_group_content = profile.articles.find(params[:id])
14 14  
15   - reading = Kalibro::Reading.new( params[:reading] )
16   - reading.save(reading_group_content.reading_group_id)
17   -
18   - if( reading.errors.empty? )
  15 + reading = Kalibro::Reading.new params[:reading]
  16 +
  17 + if( reading.save(reading_group_content.reading_group_id) )
19 18 redirect_to "/#{profile.identifier}/#{reading_group_content.name.downcase.gsub(/\s/, '-').gsub(/[^0-9A-Za-z\-]/, '')}"
20 19 else
21 20 redirect_to_error_page reading.errors[0].message
... ... @@ -28,43 +27,23 @@ class MezuroPluginReadingController < MezuroPluginMyprofileController
28 27 @data_profile = reading_group_content.profile.identifier
29 28 @reading_group_content_id = reading_group_content.id
30 29  
31   - @reading_types = Kalibro::Reading.reading_types
32   -
33   - configurations = Kalibro::Configuration.all
34   - configurations = [] if (configurations.nil?)
35   - @configuration_select = configurations.map do |configuration|
36   - [configuration.name,configuration.id]
37   - end
38   -
39   - @reading = reading_group_content.repositories.select{ |reading| reading.id.to_s == params[:reading_id] }.first
  30 + @reading = Kalibro::Reading.find params[:reading_id]
40 31 end
41 32  
42 33 def update
43 34 reading_group_content = profile.articles.find(params[:id])
44   -
45   - reading = Kalibro::Reading.new( params[:reading] )
46   - reading.save(reading_group_content.reading_group_id)
  35 + reading = Kalibro::Reading.new params[:reading]
47 36  
48   - if( reading.errors.empty? )
49   - reading.process
  37 + if( reading.save(reading_group_content.reading_group_id) )
50 38 redirect_to "/profile/#{profile.identifier}/plugin/mezuro/reading/show/#{reading_group_content.id}?reading_id=#{reading.id}"
51 39 else
52 40 redirect_to_error_page reading.errors[0].message
53 41 end
54 42 end
55 43  
56   - def show
57   - reading_group_content = profile.articles.find(params[:id])
58   - @reading_group_name = reading_group_content.name
59   - @reading = reading_group_content.repositories.select{ |reading| reading.id.to_s == params[:reading_id] }.first
60   - @configuration_name = Kalibro::Configuration.configuration_of(@reading.id).name
61   - @data_profile = reading_group_content.profile.identifier
62   - @data_content = reading_group_content.id
63   - end
64   -
65 44 def destroy
66 45 reading_group_content = profile.articles.find(params[:id])
67   - reading = reading_group_content.repositories.select{ |reading| reading.id.to_s == params[:reading_id] }.first
  46 + reading = Kalibro::Reading.find params[:reading_id]
68 47 reading.destroy
69 48 if( reading.errors.empty? )
70 49 redirect_to "/#{profile.identifier}/#{reading_group_content.name.downcase.gsub(/\s/, '-')}"
... ...
plugins/mezuro/lib/kalibro/reading.rb
... ... @@ -7,7 +7,10 @@ class Kalibro::Reading < Kalibro::Model
7 7 end
8 8  
9 9 def self.readings_of( group_id )
10   - request(:readings_of, {:group_id => group_id})[:reading].to_a.map { |reading| new reading }
  10 + response = request(:readings_of, {:group_id => group_id})[:reading]
  11 + response = [] if response.nil?
  12 + response = [response] if response.is_a?(Hash)
  13 + response.map { |reading| new reading }
11 14 end
12 15  
13 16 def self.reading_of( range_id )
... ...
plugins/mezuro/test/functional/myprofile/mezuro_plugin_reading_controller_test.rb 0 → 100644
... ... @@ -0,0 +1,95 @@
  1 +require 'test_helper'
  2 +
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_fixtures"
  4 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_group_content_fixtures"
  5 +
  6 +class MezuroPluginReadingControllerTest < ActionController::TestCase
  7 +
  8 + def setup
  9 + @controller = MezuroPluginReadingController.new
  10 + @request = ActionController::TestRequest.new
  11 + @response = ActionController::TestResponse.new
  12 + @profile = fast_create(Community)
  13 +
  14 + @reading = ReadingFixtures.reading
  15 + @created_reading = ReadingFixtures.created_reading
  16 + @reading_hash = ReadingFixtures.hash
  17 + @content = MezuroPlugin::ReadingGroupContent.new(:profile => @profile, :name => name)
  18 + @content.expects(:send_reading_group_to_service).returns(nil)
  19 + @content.stubs(:solr_save)
  20 + @content.save
  21 + end
  22 +
  23 + should 'set variables to create a new reading' do
  24 + get :new, :profile => @profile.identifier, :id => @content.id
  25 +
  26 + assert_equal @content.id, assigns(:reading_group_content_id)
  27 + assert_equal @content.name, assigns(:reading_group_name)
  28 + assert_equal @content.profile.identifier, assigns(:data_profile)
  29 + end
  30 +
  31 + should 'create a reading' do
  32 + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@created_reading)
  33 + @created_reading.expects(:save).with(@content.reading_group_id).returns(true)
  34 + get :create, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash
  35 + assert @created_reading.errors.empty?
  36 + assert_response :redirect
  37 + end
  38 +
  39 + should 'put an Exception in reading when an error occurs in create action' do
  40 + @created_reading.errors = [Exception.new]
  41 + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@created_reading)
  42 + @created_reading.expects(:save).with(@content.reading_group_id).returns(false)
  43 + get :create, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash
  44 + assert !@created_reading.errors.empty?
  45 + assert_response :redirect
  46 + end
  47 +
  48 + should 'set variables to edit a reading' do
  49 + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading)
  50 +
  51 + get :edit, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id
  52 +
  53 + assert_equal @content.id, assigns(:reading_group_content_id)
  54 + assert_equal @content.name, assigns(:reading_group_name)
  55 + assert_equal @content.profile.identifier, assigns(:data_profile)
  56 + assert_equal @reading, assigns(:reading)
  57 + end
  58 +
  59 + should 'update a reading' do
  60 + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@reading)
  61 + @reading.expects(:save).with(@content.reading_group_id).returns(true)
  62 + get :update, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash
  63 + assert @reading.errors.empty?
  64 + assert_response :redirect
  65 + end
  66 +
  67 + should 'put an Exception in reading when an error occurs in update action' do
  68 + @reading.errors = [Exception.new]
  69 + Kalibro::Reading.expects(:new).with(@reading_hash.to_s).returns(@reading)
  70 + @reading.expects(:save).with(@content.reading_group_id).returns(false)
  71 + get :update, :profile => @profile.identifier, :id => @content.id, :reading => @reading_hash
  72 + assert_response :redirect
  73 + end
  74 +
  75 + should 'destroy a reading' do
  76 + @reading.expects(:destroy)
  77 + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading)
  78 +
  79 + get :destroy, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id
  80 +
  81 + assert @reading.errors.empty?
  82 + assert_response :redirect
  83 + end
  84 +
  85 + should 'put an Exception in reading when an error occurs in destroy action' do
  86 + @reading.errors = [Exception.new]
  87 + @reading.expects(:destroy)
  88 + Kalibro::Reading.expects(:find).with(@reading.id.to_s).returns(@reading)
  89 +
  90 + get :destroy, :profile => @profile.identifier, :id => @content.id, :reading_id => @reading.id
  91 +
  92 + assert !@reading.errors.empty?
  93 + assert_response :redirect
  94 + end
  95 +end
... ...
plugins/mezuro/views/cms/mezuro_plugin/_reading_group_content.html.erb
... ... @@ -8,7 +8,7 @@
8 8  
9 9 <%= hidden_field_tag 'reading_group_content[profile_id]', profile.id %>
10 10 <%= hidden_field_tag 'id', @article.id %>
11   -<%= hidden_field_tag 'reading_group_id', reading_group.id %>
  11 +<%= hidden_field_tag 'reading_group_id', (reading_group.id unless reading_group.nil?) %>
12 12  
13 13 <%= required_fields_message %>
14 14  
... ...
plugins/mezuro/views/mezuro_plugin_reading/edit.html.erb 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<script src="/javascripts/colorpicker.js" type="text/javascript"></script>
  2 +<script src="/javascripts/colorpicker-noosfero.js" type="text/javascript"></script>
  3 +<h3> <%= link_to( @reading_group_name, homepage_url(@data_profile, @reading_group_name.downcase.gsub(/[^0-9A-Za-z\-]/, '')) ) %></h3>
  4 +
  5 +<% form_for :reading, :url => {:action =>"create", :controller => "mezuro_plugin_reading"}, :method => :get do |f| %>
  6 + <%= hidden_field_tag :id, @reading_group_content_id %>
  7 +
  8 + <%= f.hidden_field :id %>
  9 + <%= required labelled_form_field _('label:'), f.text_field(:label) %>
  10 +
  11 + <%= required labelled_form_field _('grade:'),
  12 + f.text_field(:grade) %>
  13 +
  14 + <%= required labelled_form_field _('color:'),
  15 + colorpicker_field(:reading, :color) %>Click in the field to change Color
  16 +
  17 + <p>
  18 + <%= f.submit "Add" %>
  19 + </p>
  20 +
  21 +<% end %>
... ...