sofa_gallery 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.document +5 -0
- data/Gemfile +9 -0
- data/Gemfile.lock +106 -0
- data/LICENSE +20 -0
- data/README.md +30 -0
- data/Rakefile +21 -0
- data/VERSION +1 -0
- data/app/assets/images/sofa_gallery/jcrop.gif +0 -0
- data/app/assets/javascripts/sofa_gallery/application.js +15 -0
- data/app/assets/javascripts/sofa_gallery/jquery.jcrop.js +246 -0
- data/app/assets/javascripts/sofa_gallery/jquery.js +18 -0
- data/app/assets/javascripts/sofa_gallery/jquery_ui.js +248 -0
- data/app/assets/javascripts/sofa_gallery/rails.js +315 -0
- data/app/assets/stylesheets/sofa_gallery/application.css +68 -0
- data/app/assets/stylesheets/sofa_gallery/jquery.jcrop.css +32 -0
- data/app/assets/stylesheets/sofa_gallery/reset.css +1 -0
- data/app/controllers/application_controller.rb +6 -0
- data/app/controllers/gallery_admin/base_controller.rb +3 -0
- data/app/controllers/gallery_admin/galleries_controller.rb +59 -0
- data/app/controllers/gallery_admin/photos_controller.rb +76 -0
- data/app/helpers/sofa_gallery_helper.rb +11 -0
- data/app/models/sofa/gallery.rb +17 -0
- data/app/models/sofa/photo.rb +64 -0
- data/app/views/gallery_admin/_navigation.html.erb +1 -0
- data/app/views/gallery_admin/galleries/_form.html.erb +11 -0
- data/app/views/gallery_admin/galleries/edit.html.erb +5 -0
- data/app/views/gallery_admin/galleries/index.html.erb +28 -0
- data/app/views/gallery_admin/galleries/new.html.erb +5 -0
- data/app/views/gallery_admin/photos/_form.html.erb +13 -0
- data/app/views/gallery_admin/photos/crop.html.erb +32 -0
- data/app/views/gallery_admin/photos/edit.html.erb +5 -0
- data/app/views/gallery_admin/photos/index.html.erb +24 -0
- data/app/views/gallery_admin/photos/new.html.erb +5 -0
- data/app/views/layouts/gallery_admin/application.html.erb +16 -0
- data/config.ru +4 -0
- data/config/application.rb +51 -0
- data/config/boot.rb +13 -0
- data/config/database.yml +16 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +25 -0
- data/config/environments/production.rb +52 -0
- data/config/environments/test.rb +39 -0
- data/config/initializers/paperclip.rb +3 -0
- data/config/initializers/sofa_gallery.rb +15 -0
- data/config/routes.rb +12 -0
- data/db/migrate/01_create_sofa_gallery.rb +35 -0
- data/lib/generators/README +10 -0
- data/lib/generators/sofa_gallery_generator.rb +33 -0
- data/lib/paperclip_processors/cropper.rb +18 -0
- data/lib/sofa_gallery.rb +23 -0
- data/lib/sofa_gallery/configuration.rb +26 -0
- data/lib/sofa_gallery/engine.rb +21 -0
- data/lib/sofa_gallery/form_builder.rb +50 -0
- data/script/rails +6 -0
- data/sofa_gallery.gemspec +113 -0
- data/test/fixtures/files/default.jpg +0 -0
- data/test/fixtures/files/default.txt +1 -0
- data/test/fixtures/sofa/galleries.yml +10 -0
- data/test/fixtures/sofa/photos.yml +9 -0
- data/test/functional/galleries_controller_test.rb +87 -0
- data/test/functional/photos_controller_test.rb +123 -0
- data/test/test_helper.rb +36 -0
- data/test/unit/configuration_test.rb +18 -0
- data/test/unit/gallery_test.rb +33 -0
- data/test/unit/photo_test.rb +29 -0
- metadata +167 -0
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            require 'sofa_gallery'
         | 
| 2 | 
            +
            require 'rails'
         | 
| 3 | 
            +
            require 'paperclip'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module CmsGallery
         | 
| 6 | 
            +
              class Engine < Rails::Engine
         | 
| 7 | 
            +
                initializer 'sofa_gallery.helper' do |app|
         | 
| 8 | 
            +
                  if defined?(ComfortableMexicanSofa)
         | 
| 9 | 
            +
                    # applying configuraion
         | 
| 10 | 
            +
                    SofaGallery.configure do |conf|
         | 
| 11 | 
            +
                      conf.admin_route_prefix = ComfortableMexicanSofa.config.admin_route_prefix
         | 
| 12 | 
            +
                      conf.upload_options     = ComfortableMexicanSofa.config.upload_file_options
         | 
| 13 | 
            +
                      conf.admin_controller   = 'CmsAdmin::BaseController'
         | 
| 14 | 
            +
                      conf.form_builder       = 'ComfortableMexicanSofa::FormBuilder'
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
                    # applying nav elements
         | 
| 17 | 
            +
                    ComfortableMexicanSofa::ViewHooks.add(:navigation, '/gallery_admin/navigation')
         | 
| 18 | 
            +
                  end
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
              end
         | 
| 21 | 
            +
            end
         | 
| @@ -0,0 +1,50 @@ | |
| 1 | 
            +
            class SofaGallery::FormBuilder < ActionView::Helpers::FormBuilder
         | 
| 2 | 
            +
              
         | 
| 3 | 
            +
              helpers = field_helpers -
         | 
| 4 | 
            +
                %w(hidden_field fields_for) +
         | 
| 5 | 
            +
                %w(select)
         | 
| 6 | 
            +
                
         | 
| 7 | 
            +
              helpers.each do |name|
         | 
| 8 | 
            +
                class_eval %Q^
         | 
| 9 | 
            +
                  def #{name}(field, *args)
         | 
| 10 | 
            +
                    options = args.extract_options!
         | 
| 11 | 
            +
                    args << options
         | 
| 12 | 
            +
                    return super if options.delete(:disable_builder)
         | 
| 13 | 
            +
                    default_field('#{name}', field, options){ super }
         | 
| 14 | 
            +
                  end
         | 
| 15 | 
            +
                ^
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
              
         | 
| 18 | 
            +
              def default_field(type, field, options = {}, &block)
         | 
| 19 | 
            +
                errors = if object.respond_to?(:errors) && object.errors[field].present?
         | 
| 20 | 
            +
                  "<div class='errors'>#{[object.errors[field]].flatten.first}</div>"
         | 
| 21 | 
            +
                end
         | 
| 22 | 
            +
                if desc = options.delete(:desc)
         | 
| 23 | 
            +
                  desc = "<div class='desc'>#{desc}</div>"
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
                %(
         | 
| 26 | 
            +
                  <div class='form_element #{type}_element #{'errors' if errors}'>
         | 
| 27 | 
            +
                    <div class='label'>#{label_for(field, options)}</div>
         | 
| 28 | 
            +
                    <div class='value'>#{yield}</div>
         | 
| 29 | 
            +
                    #{desc}
         | 
| 30 | 
            +
                    #{errors}
         | 
| 31 | 
            +
                  </div>
         | 
| 32 | 
            +
                ).html_safe
         | 
| 33 | 
            +
              end
         | 
| 34 | 
            +
              
         | 
| 35 | 
            +
              def label_for(field, options)
         | 
| 36 | 
            +
                label = options.delete(:label) || field.to_s.titleize.capitalize
         | 
| 37 | 
            +
                "<label for=\"#{object_name}_#{field}\">#{label}</label>".html_safe
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              def simple_field(label = nil, content = nil, options = {}, &block)
         | 
| 41 | 
            +
                content ||= @template.capture(&block) if block_given?
         | 
| 42 | 
            +
                %(
         | 
| 43 | 
            +
                  <div class='form_element #{options.delete(:class)}'>
         | 
| 44 | 
            +
                    <div class='label'>#{label}</div>
         | 
| 45 | 
            +
                    <div class='value'>#{content}</div>
         | 
| 46 | 
            +
                  </div>
         | 
| 47 | 
            +
                ).html_safe
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
            end
         | 
    
        data/script/rails
    ADDED
    
    | @@ -0,0 +1,6 @@ | |
| 1 | 
            +
            #!/usr/bin/env ruby
         | 
| 2 | 
            +
            # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            APP_PATH = File.expand_path('../../config/application',  __FILE__)
         | 
| 5 | 
            +
            require File.expand_path('../../config/boot',  __FILE__)
         | 
| 6 | 
            +
            require 'rails/commands'
         | 
| @@ -0,0 +1,113 @@ | |
| 1 | 
            +
            # Generated by jeweler
         | 
| 2 | 
            +
            # DO NOT EDIT THIS FILE DIRECTLY
         | 
| 3 | 
            +
            # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
         | 
| 4 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            Gem::Specification.new do |s|
         | 
| 7 | 
            +
              s.name = %q{sofa_gallery}
         | 
| 8 | 
            +
              s.version = "0.0.0"
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 | 
            +
              s.authors = ["Oleg Khabarov", "Stephen McLeod", "The Working Group Inc."]
         | 
| 12 | 
            +
              s.date = %q{2011-06-16}
         | 
| 13 | 
            +
              s.description = %q{}
         | 
| 14 | 
            +
              s.email = %q{stephen@theworkinggroup.ca}
         | 
| 15 | 
            +
              s.extra_rdoc_files = [
         | 
| 16 | 
            +
                "LICENSE",
         | 
| 17 | 
            +
                "README.md"
         | 
| 18 | 
            +
              ]
         | 
| 19 | 
            +
              s.files = [
         | 
| 20 | 
            +
                ".document",
         | 
| 21 | 
            +
                "Gemfile",
         | 
| 22 | 
            +
                "Gemfile.lock",
         | 
| 23 | 
            +
                "LICENSE",
         | 
| 24 | 
            +
                "README.md",
         | 
| 25 | 
            +
                "Rakefile",
         | 
| 26 | 
            +
                "VERSION",
         | 
| 27 | 
            +
                "app/assets/images/sofa_gallery/jcrop.gif",
         | 
| 28 | 
            +
                "app/assets/javascripts/sofa_gallery/application.js",
         | 
| 29 | 
            +
                "app/assets/javascripts/sofa_gallery/jquery.jcrop.js",
         | 
| 30 | 
            +
                "app/assets/javascripts/sofa_gallery/jquery.js",
         | 
| 31 | 
            +
                "app/assets/javascripts/sofa_gallery/jquery_ui.js",
         | 
| 32 | 
            +
                "app/assets/javascripts/sofa_gallery/rails.js",
         | 
| 33 | 
            +
                "app/assets/stylesheets/sofa_gallery/application.css",
         | 
| 34 | 
            +
                "app/assets/stylesheets/sofa_gallery/jquery.jcrop.css",
         | 
| 35 | 
            +
                "app/assets/stylesheets/sofa_gallery/reset.css",
         | 
| 36 | 
            +
                "app/controllers/application_controller.rb",
         | 
| 37 | 
            +
                "app/controllers/gallery_admin/base_controller.rb",
         | 
| 38 | 
            +
                "app/controllers/gallery_admin/galleries_controller.rb",
         | 
| 39 | 
            +
                "app/controllers/gallery_admin/photos_controller.rb",
         | 
| 40 | 
            +
                "app/helpers/sofa_gallery_helper.rb",
         | 
| 41 | 
            +
                "app/models/sofa/gallery.rb",
         | 
| 42 | 
            +
                "app/models/sofa/photo.rb",
         | 
| 43 | 
            +
                "app/views/gallery_admin/_navigation.html.erb",
         | 
| 44 | 
            +
                "app/views/gallery_admin/galleries/_form.html.erb",
         | 
| 45 | 
            +
                "app/views/gallery_admin/galleries/edit.html.erb",
         | 
| 46 | 
            +
                "app/views/gallery_admin/galleries/index.html.erb",
         | 
| 47 | 
            +
                "app/views/gallery_admin/galleries/new.html.erb",
         | 
| 48 | 
            +
                "app/views/gallery_admin/photos/_form.html.erb",
         | 
| 49 | 
            +
                "app/views/gallery_admin/photos/crop.html.erb",
         | 
| 50 | 
            +
                "app/views/gallery_admin/photos/edit.html.erb",
         | 
| 51 | 
            +
                "app/views/gallery_admin/photos/index.html.erb",
         | 
| 52 | 
            +
                "app/views/gallery_admin/photos/new.html.erb",
         | 
| 53 | 
            +
                "app/views/layouts/gallery_admin/application.html.erb",
         | 
| 54 | 
            +
                "config.ru",
         | 
| 55 | 
            +
                "config/application.rb",
         | 
| 56 | 
            +
                "config/boot.rb",
         | 
| 57 | 
            +
                "config/database.yml",
         | 
| 58 | 
            +
                "config/environment.rb",
         | 
| 59 | 
            +
                "config/environments/development.rb",
         | 
| 60 | 
            +
                "config/environments/production.rb",
         | 
| 61 | 
            +
                "config/environments/test.rb",
         | 
| 62 | 
            +
                "config/initializers/paperclip.rb",
         | 
| 63 | 
            +
                "config/initializers/sofa_gallery.rb",
         | 
| 64 | 
            +
                "config/routes.rb",
         | 
| 65 | 
            +
                "db/migrate/01_create_sofa_gallery.rb",
         | 
| 66 | 
            +
                "lib/generators/README",
         | 
| 67 | 
            +
                "lib/generators/sofa_gallery_generator.rb",
         | 
| 68 | 
            +
                "lib/paperclip_processors/cropper.rb",
         | 
| 69 | 
            +
                "lib/sofa_gallery.rb",
         | 
| 70 | 
            +
                "lib/sofa_gallery/configuration.rb",
         | 
| 71 | 
            +
                "lib/sofa_gallery/engine.rb",
         | 
| 72 | 
            +
                "lib/sofa_gallery/form_builder.rb",
         | 
| 73 | 
            +
                "script/rails",
         | 
| 74 | 
            +
                "sofa_gallery.gemspec",
         | 
| 75 | 
            +
                "test/fixtures/files/default.jpg",
         | 
| 76 | 
            +
                "test/fixtures/files/default.txt",
         | 
| 77 | 
            +
                "test/fixtures/sofa/galleries.yml",
         | 
| 78 | 
            +
                "test/fixtures/sofa/photos.yml",
         | 
| 79 | 
            +
                "test/functional/galleries_controller_test.rb",
         | 
| 80 | 
            +
                "test/functional/photos_controller_test.rb",
         | 
| 81 | 
            +
                "test/test_helper.rb",
         | 
| 82 | 
            +
                "test/unit/configuration_test.rb",
         | 
| 83 | 
            +
                "test/unit/gallery_test.rb",
         | 
| 84 | 
            +
                "test/unit/photo_test.rb"
         | 
| 85 | 
            +
              ]
         | 
| 86 | 
            +
              s.homepage = %q{http://github.com/twg/sofa-gallery}
         | 
| 87 | 
            +
              s.licenses = ["MIT"]
         | 
| 88 | 
            +
              s.require_paths = ["lib"]
         | 
| 89 | 
            +
              s.rubygems_version = %q{1.7.2}
         | 
| 90 | 
            +
              s.summary = %q{SofaGallery is an image gallery engine for Rails 3.1 apps (and ComfortableMexicanSofa)}
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              if s.respond_to? :specification_version then
         | 
| 93 | 
            +
                s.specification_version = 3
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
         | 
| 96 | 
            +
                  s.add_runtime_dependency(%q<rails>, [">= 3.1.0.rc4"])
         | 
| 97 | 
            +
                  s.add_runtime_dependency(%q<paperclip>, [">= 0"])
         | 
| 98 | 
            +
                  s.add_development_dependency(%q<sqlite3>, [">= 0"])
         | 
| 99 | 
            +
                  s.add_development_dependency(%q<jeweler>, [">= 0"])
         | 
| 100 | 
            +
                else
         | 
| 101 | 
            +
                  s.add_dependency(%q<rails>, [">= 3.1.0.rc4"])
         | 
| 102 | 
            +
                  s.add_dependency(%q<paperclip>, [">= 0"])
         | 
| 103 | 
            +
                  s.add_dependency(%q<sqlite3>, [">= 0"])
         | 
| 104 | 
            +
                  s.add_dependency(%q<jeweler>, [">= 0"])
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
              else
         | 
| 107 | 
            +
                s.add_dependency(%q<rails>, [">= 3.1.0.rc4"])
         | 
| 108 | 
            +
                s.add_dependency(%q<paperclip>, [">= 0"])
         | 
| 109 | 
            +
                s.add_dependency(%q<sqlite3>, [">= 0"])
         | 
| 110 | 
            +
                s.add_dependency(%q<jeweler>, [">= 0"])
         | 
| 111 | 
            +
              end
         | 
| 112 | 
            +
            end
         | 
| 113 | 
            +
             | 
| Binary file | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            text file
         | 
| @@ -0,0 +1,87 @@ | |
| 1 | 
            +
            require File.expand_path('../test_helper', File.dirname(__FILE__))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class GalleryAdmin::GalleriesControllerTest < ActionController::TestCase
         | 
| 4 | 
            +
              
         | 
| 5 | 
            +
              def test_get_index
         | 
| 6 | 
            +
                get :index
         | 
| 7 | 
            +
                assert_response :success
         | 
| 8 | 
            +
                assert_template 'index'
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
              
         | 
| 11 | 
            +
              def test_get_new
         | 
| 12 | 
            +
                get :new
         | 
| 13 | 
            +
                assert_response :success
         | 
| 14 | 
            +
                assert_template 'new'
         | 
| 15 | 
            +
                assert assigns(:gallery)
         | 
| 16 | 
            +
                assert_select "form[action='/cms-admin/galleries']"
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              def test_creation
         | 
| 20 | 
            +
                assert_difference 'Sofa::Gallery.count', 1 do
         | 
| 21 | 
            +
                  post :create, :gallery => {
         | 
| 22 | 
            +
                    :title        => 'Test Gallery',
         | 
| 23 | 
            +
                    :slug         => 'test-gallery',
         | 
| 24 | 
            +
                    :description  => 'Test Description'
         | 
| 25 | 
            +
                  }
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
                assert_equal 'Gallery created', flash[:notice]
         | 
| 28 | 
            +
                assert_redirected_to :action => :index
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
              
         | 
| 31 | 
            +
              def test_creation_failure
         | 
| 32 | 
            +
                assert_no_difference 'Sofa::Gallery.count' do
         | 
| 33 | 
            +
                  post :create, :gallery => { }
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
                assert_response :success
         | 
| 36 | 
            +
                assert_template 'new'
         | 
| 37 | 
            +
                assert_equal 'Failed to create Gallery', flash[:error]
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              def test_get_edit
         | 
| 41 | 
            +
                gallery = sofa_galleries(:default)
         | 
| 42 | 
            +
                get :edit, :id => gallery
         | 
| 43 | 
            +
                assert_response :success
         | 
| 44 | 
            +
                assert_template 'edit'
         | 
| 45 | 
            +
                assert assigns(:gallery)
         | 
| 46 | 
            +
                assert_select "form[action='/cms-admin/galleries/#{gallery.id}']"
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
              
         | 
| 49 | 
            +
              def test_get_edit_failure
         | 
| 50 | 
            +
                get :edit, :id => 'invalid'
         | 
| 51 | 
            +
                assert_response :redirect
         | 
| 52 | 
            +
                assert_redirected_to :action => :index
         | 
| 53 | 
            +
                assert_equal 'Gallery not found', flash[:error]
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
              
         | 
| 56 | 
            +
              def test_update
         | 
| 57 | 
            +
                gallery = sofa_galleries(:default)
         | 
| 58 | 
            +
                put :update, :id => gallery, :gallery => {
         | 
| 59 | 
            +
                  :title => 'New Title'
         | 
| 60 | 
            +
                }
         | 
| 61 | 
            +
                gallery.reload
         | 
| 62 | 
            +
                assert_equal 'New Title', gallery.title
         | 
| 63 | 
            +
                assert_equal 'Gallery updated', flash[:notice]
         | 
| 64 | 
            +
                assert_redirected_to :action => :index
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def test_update_failure
         | 
| 68 | 
            +
                gallery = sofa_galleries(:default)
         | 
| 69 | 
            +
                put :update, :id => gallery, :gallery => {
         | 
| 70 | 
            +
                  :title => ''
         | 
| 71 | 
            +
                }
         | 
| 72 | 
            +
                assert_response :success
         | 
| 73 | 
            +
                assert_template 'edit'
         | 
| 74 | 
            +
                assert_equal 'Failed to update Gallery', flash[:error]
         | 
| 75 | 
            +
                gallery.reload
         | 
| 76 | 
            +
                assert_not_equal '', gallery.title
         | 
| 77 | 
            +
              end
         | 
| 78 | 
            +
             | 
| 79 | 
            +
              def test_destroy
         | 
| 80 | 
            +
                assert_difference 'Sofa::Gallery.count', -1 do
         | 
| 81 | 
            +
                  delete :destroy, :id => sofa_galleries(:default)
         | 
| 82 | 
            +
                end
         | 
| 83 | 
            +
                assert_equal 'Gallery deleted', flash[:notice]
         | 
| 84 | 
            +
                assert_redirected_to :action => :index
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
              
         | 
| 87 | 
            +
            end
         | 
| @@ -0,0 +1,123 @@ | |
| 1 | 
            +
            require File.expand_path('../test_helper', File.dirname(__FILE__))
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class GalleryAdmin::PhotosControllerTest < ActionController::TestCase
         | 
| 4 | 
            +
              
         | 
| 5 | 
            +
              def test_get_index
         | 
| 6 | 
            +
                get :index, :gallery_id => sofa_galleries(:default)
         | 
| 7 | 
            +
                assert_response :success
         | 
| 8 | 
            +
                assert_template 'index'
         | 
| 9 | 
            +
                assert assigns(:photos)
         | 
| 10 | 
            +
              end
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              def test_get_index_failure
         | 
| 13 | 
            +
                get :index, :gallery_id => 'invalid'
         | 
| 14 | 
            +
                assert_response :redirect
         | 
| 15 | 
            +
                assert_redirected_to gallery_admin_galleries_path
         | 
| 16 | 
            +
                assert_equal 'Gallery not found', flash[:error]
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
              
         | 
| 19 | 
            +
              def test_new
         | 
| 20 | 
            +
                gallery = sofa_galleries(:default)
         | 
| 21 | 
            +
                get :new, :gallery_id => gallery
         | 
| 22 | 
            +
                assert_response :success
         | 
| 23 | 
            +
                assert_template 'new'
         | 
| 24 | 
            +
                assert assigns(:photo)
         | 
| 25 | 
            +
                assert_select "form[action='/cms-admin/galleries/#{gallery.id}/photos']"
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              def test_creation
         | 
| 29 | 
            +
                assert_difference 'Sofa::Photo.count' do
         | 
| 30 | 
            +
                  post :create, :gallery_id => sofa_galleries(:default), :photo => {
         | 
| 31 | 
            +
                    :title  => 'Test Photo',
         | 
| 32 | 
            +
                    :slug   => 'test-photo',
         | 
| 33 | 
            +
                    :image  => fixture_file_upload('/files/default.jpg', 'image/jpeg')
         | 
| 34 | 
            +
                  }
         | 
| 35 | 
            +
                  assert_response :redirect
         | 
| 36 | 
            +
                  assert_redirected_to :action => :index
         | 
| 37 | 
            +
                  assert_equal 'Photo created', flash[:notice]
         | 
| 38 | 
            +
                end
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              def test_creation_fail
         | 
| 42 | 
            +
                assert_no_difference 'Sofa::Photo.count' do
         | 
| 43 | 
            +
                  post :create, :gallery_id => sofa_galleries(:default), :photo => { }
         | 
| 44 | 
            +
                  assert_response :success
         | 
| 45 | 
            +
                  assert_template 'new'
         | 
| 46 | 
            +
                  assert_equal 'Failed to create Photo', flash[:error]
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
              
         | 
| 50 | 
            +
              def test_get_edit
         | 
| 51 | 
            +
                photo = sofa_photos(:default)
         | 
| 52 | 
            +
                get :edit, :gallery_id => photo.gallery, :id => photo
         | 
| 53 | 
            +
                assert_response :success
         | 
| 54 | 
            +
                assert_template 'edit'
         | 
| 55 | 
            +
                assert_select "form[action='/cms-admin/galleries/#{photo.gallery.id}/photos/#{photo.id}']"
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
              
         | 
| 58 | 
            +
              def test_get_edit_failure
         | 
| 59 | 
            +
                get :edit, :gallery_id => sofa_galleries(:default), :id => 'invalid'
         | 
| 60 | 
            +
                assert_response :redirect
         | 
| 61 | 
            +
                assert_redirected_to :action => :index
         | 
| 62 | 
            +
                assert_equal 'Photo not found', flash[:error]
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
              
         | 
| 65 | 
            +
              def test_update
         | 
| 66 | 
            +
                photo = sofa_photos(:default)
         | 
| 67 | 
            +
                put :update, :gallery_id => photo.gallery, :id => photo, :photo => {
         | 
| 68 | 
            +
                  :title => 'Updated Title'
         | 
| 69 | 
            +
                }
         | 
| 70 | 
            +
                assert_response :redirect
         | 
| 71 | 
            +
                assert_redirected_to :action => :index
         | 
| 72 | 
            +
                assert_equal 'Photo updated', flash[:notice]
         | 
| 73 | 
            +
                
         | 
| 74 | 
            +
                photo.reload
         | 
| 75 | 
            +
                assert_equal 'Updated Title', photo.title
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
              
         | 
| 78 | 
            +
              def test_update_failure
         | 
| 79 | 
            +
                photo = sofa_photos(:default)
         | 
| 80 | 
            +
                put :update, :gallery_id => photo.gallery, :id => photo, :photo => {
         | 
| 81 | 
            +
                  :title => 'Updated Title',
         | 
| 82 | 
            +
                  :image => fixture_file_upload('/files/default.txt', 'text/plain')
         | 
| 83 | 
            +
                }
         | 
| 84 | 
            +
                assert_response :success
         | 
| 85 | 
            +
                assert_template :edit
         | 
| 86 | 
            +
                assert_equal 'Failed to updated Photo', flash[:error]
         | 
| 87 | 
            +
                
         | 
| 88 | 
            +
                photo.reload
         | 
| 89 | 
            +
                assert_not_equal 'Updated Title', photo.description
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
              
         | 
| 92 | 
            +
              def test_destroy
         | 
| 93 | 
            +
                photo = sofa_photos(:default)
         | 
| 94 | 
            +
                assert_difference 'Sofa::Photo.count', -1 do
         | 
| 95 | 
            +
                  delete :destroy, :gallery_id => photo.gallery, :id => photo
         | 
| 96 | 
            +
                  assert_response :redirect
         | 
| 97 | 
            +
                  assert_redirected_to :action => :index
         | 
| 98 | 
            +
                  assert_equal 'Photo deleted', flash[:notice]
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
              
         | 
| 102 | 
            +
              def test_reorder
         | 
| 103 | 
            +
                photo = sofa_photos(:default)
         | 
| 104 | 
            +
                assert_equal 0, photo.position
         | 
| 105 | 
            +
                xhr :post, :reorder, :gallery_id => photo.gallery, :sofa_photo => ['dummy', photo.id]
         | 
| 106 | 
            +
                assert_response :success
         | 
| 107 | 
            +
                
         | 
| 108 | 
            +
                photo.reload
         | 
| 109 | 
            +
                assert_equal 1, photo.position
         | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
              
         | 
| 112 | 
            +
              def test_get_crop
         | 
| 113 | 
            +
                photo = sofa_photos(:default)
         | 
| 114 | 
            +
                photo.image = fixture_file_upload('/files/default.jpg', 'image/jpeg')
         | 
| 115 | 
            +
                photo.save!
         | 
| 116 | 
            +
                
         | 
| 117 | 
            +
                get :crop, :gallery_id => photo.gallery, :id => photo
         | 
| 118 | 
            +
                assert_response :success
         | 
| 119 | 
            +
                assert_template 'crop'
         | 
| 120 | 
            +
                assert assigns(:photo)
         | 
| 121 | 
            +
              end
         | 
| 122 | 
            +
              
         | 
| 123 | 
            +
            end
         | 
    
        data/test/test_helper.rb
    ADDED
    
    | @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            ENV["RAILS_ENV"] = "test"
         | 
| 2 | 
            +
            require File.expand_path('../../config/environment', __FILE__)
         | 
| 3 | 
            +
            require 'rails/test_help'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            class ActiveSupport::TestCase
         | 
| 6 | 
            +
              
         | 
| 7 | 
            +
              fixtures :all
         | 
| 8 | 
            +
              include ActionDispatch::TestProcess
         | 
| 9 | 
            +
              
         | 
| 10 | 
            +
              def setup
         | 
| 11 | 
            +
                reset_config
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              # resetting default configuration
         | 
| 15 | 
            +
              def reset_config
         | 
| 16 | 
            +
                SofaGallery.configure do |config|
         | 
| 17 | 
            +
                  config.admin_route_prefix = 'cms-admin'
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
              
         | 
| 21 | 
            +
              # Example usage:
         | 
| 22 | 
            +
              #   assert_has_errors_on( @record, [:field_1, :field_2] )
         | 
| 23 | 
            +
              #   assert_has_errors_on( @record, {:field_1 => 'Message1', :field_2 => 'Message 2'} )
         | 
| 24 | 
            +
              def assert_has_errors_on(record, fields)
         | 
| 25 | 
            +
                fields = [fields].flatten unless fields.is_a?(Hash)
         | 
| 26 | 
            +
                fields.each do |field, message|
         | 
| 27 | 
            +
                  assert record.errors.to_hash.has_key?(field.to_sym), "#{record.class.name} should error on invalid #{field}"
         | 
| 28 | 
            +
                  if message && record.errors[field].is_a?(Array) && !message.is_a?(Array)
         | 
| 29 | 
            +
                    assert_not_nil record.errors[field].index(message)
         | 
| 30 | 
            +
                  elsif message
         | 
| 31 | 
            +
                    assert_equal message, record.errors[field]
         | 
| 32 | 
            +
                  end
         | 
| 33 | 
            +
                end
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
              
         | 
| 36 | 
            +
            end
         |