Commit aeef9a08cadfe496281ec3a94c5c0c5adbfc5406
Committed by
Paulo Meireles
1 parent
10f47566
Exists in
staging
and in
42 other branches
[Mezuro] Readings in reading_group.
Showing
5 changed files
with
128 additions
and
30 deletions
Show diff stats
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 %> | ... | ... |