From d850884ea2de3d1fa044a1678e71f78b259bcd79 Mon Sep 17 00:00:00 2001 From: drhenner Date: Sun, 22 Jul 2012 21:38:31 -0400 Subject: [PATCH] Get this stuff into Version control --- Gemfile | 11 ++- Gemfile.lock | 28 ++++++- README.rdoc | 10 ++- app/assets/javascripts/validation_issues.js | 2 + app/assets/stylesheets/scaffold.css | 56 ++++++++++++++ app/assets/stylesheets/validation_issues.css | 5 ++ .../stylesheets/validation_issues/buttons.css | 77 +++++++++++++++++++ .../validation_issues_controller.rb | 44 +++++++++++ app/models/validation_issue.rb | 26 +++++++ .../validation_issues/index.html.erb | 25 ++++++ .../validation_issues/show.html.erb | 22 ++++++ config/routes.rb | 3 + ...20120722204204_create_validation_issues.rb | 16 ++++ .../valid_issues/templates/migration.rb | 22 ++++++ .../valid_issues/valid_issues_generator.rb | 23 ++++++ lib/validation_issues.rb | 3 + .../acts_as_validation_issues.rb | 37 +++++++++ lib/validation_issues/core_ext.rb | 0 test/acts_as_validation_issues_test.rb | 21 +++++ test/dummy/app/models/user.rb | 10 +++ .../db/migrate/20120722183345_create_users.rb | 11 +++ test/dummy/db/schema.rb | 38 +++++++++ test/dummy/test/fixtures/users.yml | 11 +++ test/dummy/test/unit/user_test.rb | 7 ++ test/factories/validation_issues.rb | 9 +++ .../validation_issues_controller_test.rb | 42 ++++++++++ test/test_helper.rb | 7 ++ .../helpers/validation_issues_helper_test.rb | 4 + test/unit/validation_issue_test.rb | 23 ++++++ validation_issues.gemspec | 16 ++-- 30 files changed, 598 insertions(+), 11 deletions(-) create mode 100644 app/assets/javascripts/validation_issues.js create mode 100644 app/assets/stylesheets/scaffold.css create mode 100644 app/assets/stylesheets/validation_issues.css create mode 100644 app/assets/stylesheets/validation_issues/buttons.css create mode 100644 app/controllers/validation_admin/validation_issues_controller.rb create mode 100644 app/models/validation_issue.rb create mode 100644 app/views/validation_admin/validation_issues/index.html.erb create mode 100644 app/views/validation_admin/validation_issues/show.html.erb create mode 100644 db/migrate/20120722204204_create_validation_issues.rb create mode 100644 lib/generators/valid_issues/templates/migration.rb create mode 100644 lib/generators/valid_issues/valid_issues_generator.rb create mode 100644 lib/validation_issues/acts_as_validation_issues.rb create mode 100644 lib/validation_issues/core_ext.rb create mode 100644 test/acts_as_validation_issues_test.rb create mode 100644 test/dummy/app/models/user.rb create mode 100644 test/dummy/db/migrate/20120722183345_create_users.rb create mode 100644 test/dummy/db/schema.rb create mode 100644 test/dummy/test/fixtures/users.yml create mode 100644 test/dummy/test/unit/user_test.rb create mode 100644 test/factories/validation_issues.rb create mode 100644 test/functional/validation_issues_controller_test.rb create mode 100644 test/unit/helpers/validation_issues_helper_test.rb create mode 100644 test/unit/validation_issue_test.rb diff --git a/Gemfile b/Gemfile index 004e133..c0faab2 100644 --- a/Gemfile +++ b/Gemfile @@ -14,4 +14,13 @@ gem "jquery-rails" # your gem to rubygems.org. # To use debugger -# gem 'ruby-debug19', :require => 'ruby-debug' +gem 'debugger' +group :development do + #gem 'mysql2'#, '~> 0.3.7' + gem "nifty-generators", :git => 'git://github.com/drhenner/nifty-generators.git' +end + +group :test do + gem 'factory_girl_rails', '~> 3.3.0' + gem 'mocha' +end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock index fc24767..3e33527 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,14 @@ +GIT + remote: git://github.com/drhenner/nifty-generators.git + revision: dc518739e9734be8aaab74281c565a19fbbae458 + specs: + nifty-generators (0.4.6) + PATH remote: . specs: validation_issues (0.0.1) - rails (~> 3.2.1) + rails (~> 3.2.6) GEM remote: http://rubygems.org/ @@ -36,7 +42,20 @@ GEM multi_json (~> 1.0) arel (3.0.2) builder (3.0.0) + columnize (0.3.6) + debugger (1.2.0) + columnize (>= 0.3.1) + debugger-linecache (~> 1.1.1) + debugger-ruby_core_source (~> 1.1.3) + debugger-linecache (1.1.2) + debugger-ruby_core_source (>= 1.1.1) + debugger-ruby_core_source (1.1.3) erubis (2.7.0) + factory_girl (3.3.0) + activesupport (>= 3.0.0) + factory_girl_rails (3.3.0) + factory_girl (~> 3.3.0) + railties (>= 3.0.0) hike (1.2.1) i18n (0.6.0) journey (1.0.4) @@ -48,7 +67,10 @@ GEM i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) + metaclass (0.0.1) mime-types (1.19) + mocha (0.10.5) + metaclass (~> 0.0.1) multi_json (1.3.6) polyglot (0.3.3) rack (1.4.1) @@ -92,6 +114,10 @@ PLATFORMS ruby DEPENDENCIES + debugger + factory_girl_rails (~> 3.3.0) jquery-rails + mocha + nifty-generators! sqlite3 validation_issues! diff --git a/README.rdoc b/README.rdoc index 92b2878..eca6ad7 100644 --- a/README.rdoc +++ b/README.rdoc @@ -1,3 +1,11 @@ = ValidationIssues -This project rocks and uses MIT-LICENSE. \ No newline at end of file +This project rocks and uses MIT-LICENSE. + +In your application_controller add this protected method: + + def has_validation_issues_admin_privileges + # logic you want to make this true + # Typically this will work + current_user && current_user.admin? + end \ No newline at end of file diff --git a/app/assets/javascripts/validation_issues.js b/app/assets/javascripts/validation_issues.js new file mode 100644 index 0000000..dee720f --- /dev/null +++ b/app/assets/javascripts/validation_issues.js @@ -0,0 +1,2 @@ +// Place all the behaviors and hooks related to the matching controller here. +// All this logic will automatically be available in application.js. diff --git a/app/assets/stylesheets/scaffold.css b/app/assets/stylesheets/scaffold.css new file mode 100644 index 0000000..1ae7000 --- /dev/null +++ b/app/assets/stylesheets/scaffold.css @@ -0,0 +1,56 @@ +body { background-color: #fff; color: #333; } + +body, p, ol, ul, td { + font-family: verdana, arial, helvetica, sans-serif; + font-size: 13px; + line-height: 18px; +} + +pre { + background-color: #eee; + padding: 10px; + font-size: 11px; +} + +a { color: #000; } +a:visited { color: #666; } +a:hover { color: #fff; background-color:#000; } + +div.field, div.actions { + margin-bottom: 10px; +} + +#notice { + color: green; +} + +.field_with_errors { + padding: 2px; + background-color: red; + display: table; +} + +#error_explanation { + width: 450px; + border: 2px solid red; + padding: 7px; + padding-bottom: 0; + margin-bottom: 20px; + background-color: #f0f0f0; +} + +#error_explanation h2 { + text-align: left; + font-weight: bold; + padding: 5px 5px 5px 15px; + font-size: 12px; + margin: -7px; + margin-bottom: 0px; + background-color: #c00; + color: #fff; +} + +#error_explanation ul li { + font-size: 12px; + list-style: square; +} diff --git a/app/assets/stylesheets/validation_issues.css b/app/assets/stylesheets/validation_issues.css new file mode 100644 index 0000000..f875878 --- /dev/null +++ b/app/assets/stylesheets/validation_issues.css @@ -0,0 +1,5 @@ +/* + Place all the styles related to the matching controller here. + They will automatically be included in application.css. +*/ +//= require_tree ./validation_issues \ No newline at end of file diff --git a/app/assets/stylesheets/validation_issues/buttons.css b/app/assets/stylesheets/validation_issues/buttons.css new file mode 100644 index 0000000..8273fdb --- /dev/null +++ b/app/assets/stylesheets/validation_issues/buttons.css @@ -0,0 +1,77 @@ +.button { + display: inline-block; + zoom: 1; /* zoom and *display = ie7 hack for display:inline-block */ + *display: inline; + vertical-align: baseline; + margin: 0 2px; + outline: none; + cursor: pointer; + text-align: center; + text-decoration: none; + font: 14px/100% Arial, Helvetica, sans-serif; + padding: .5em 2em .55em; + text-shadow: 0 1px 1px rgba(0,0,0,.3); + -webkit-border-radius: .25em; + -moz-border-radius: .25em; + border-radius: .25em; + -webkit-box-shadow: 0 1px 1px rgba(0,0,0,.2); + -moz-box-shadow: 0 1px 1px rgba(0,0,0,.2); + box-shadow: 0 1px 1px rgba(0,0,0,.2); +} + +input[type="submit"].button {border: 0;background-color: transparent;color: #888;} +input[type="submit"].button.dark-orange-button {color:#FFF;} +input[type="submit"].button.small-dark-orange-button {color:#FFF;} + +.dark-orange-button { + color: #fef4e9; + border: solid 1px #db3909; + background: #c6481a; + background: -webkit-gradient(linear, left top, left bottom, from(#c8581a), to(#c5441F)); + background: -moz-linear-gradient(top, #c8581a, #c5441F); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c8581a', endColorstr='#c5441F'); +} +.dark-orange-button:hover { + background: #c4421F; + background: -webkit-gradient(linear, left top, left bottom, from(#c75114), to(#c23415)); + background: -moz-linear-gradient(top, #c75114, #c23415); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c75114', endColorstr='#c23415'); +} +.dark-orange-button:active { + background: #c4421F; + background: -webkit-gradient(linear, left top, left bottom, from(#c75114), to(#c23415)); + background: -moz-linear-gradient(top, #c75114, #c23415); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c75114', endColorstr='#c23415'); +} + +.small-dark-orange-button { + font-family:'Century Schoolbook Italic', 'Century Schoolbook', Georgia; + color: #fef4e9 !important; + border: solid 1px #db3909; + background: #c6481a; + background: -webkit-gradient(linear, left top, left bottom, from(#c9681a), to(#c6451F)); + background: -moz-linear-gradient(top, #c9681a, #c6451F); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c9681a', endColorstr='#c6451F'); + font-size: 14px; + font-weight: normal; + padding: 0.2em 0.7em; + &.myriad { + font-family: "MyriadPro","Lucida Sans Unicode", "Lucida Grande", sans-serif; + padding: 0.7em; + padding-top: 0.3em; + padding-bottom: 0.1em; + } +} +.small-dark-orange-button:hover { + color: #fff7ef; + background: #c4421F; + background: -webkit-gradient(linear, left top, left bottom, from(#c65114), to(#c23415)); + background: -moz-linear-gradient(top, #c65114, #c23415); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c65114', endColorstr='#c23415'); +} +.small-dark-orange-button:active { + background: #c4421F; + background: -webkit-gradient(linear, left top, left bottom, from(#c65114), to(#c23415)); + background: -moz-linear-gradient(top, #c65114, #c23415); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#c65114', endColorstr='#c23415'); +} \ No newline at end of file diff --git a/app/controllers/validation_admin/validation_issues_controller.rb b/app/controllers/validation_admin/validation_issues_controller.rb new file mode 100644 index 0000000..12ec850 --- /dev/null +++ b/app/controllers/validation_admin/validation_issues_controller.rb @@ -0,0 +1,44 @@ +class ValidationAdmin::ValidationIssuesController < ApplicationController + before_filter :redirect_if_no_privileges + # has_validation_issues_admin_privileges + + # GET /validation_issues + # GET /validation_issues.json + def index + @validation_issues = ValidationIssue.all + + respond_to do |format| + format.html # index.html.erb + format.json { render json: @validation_issues } + end + end + + # GET /validation_issues/1 + # GET /validation_issues/1.json + def show + @validation_issue = ValidationIssue.find(params[:id]) + + respond_to do |format| + format.html # show.html.erb + format.json { render json: @validation_issue } + end + end + + # DELETE /validation_issues/1 + # DELETE /validation_issues/1.json + def destroy + @validation_issue = ValidationIssue.find(params[:id]) + @validation_issue.clear_data! + + respond_to do |format| + format.html { redirect_to validation_admin_validation_issues_url } + format.json { head :no_content } + end + end + + protected + + def redirect_if_no_privileges + redirect_to root_url and return unless has_validation_issues_admin_privileges + end +end diff --git a/app/models/validation_issue.rb b/app/models/validation_issue.rb new file mode 100644 index 0000000..7d93b78 --- /dev/null +++ b/app/models/validation_issue.rb @@ -0,0 +1,26 @@ +class ValidationIssue < ActiveRecord::Base + attr_accessible :form_name, :issue_count, :issue_hash, :issue_type, :notes + serialize :issue_hash, Hash + + validates :form_name, :presence => true, :uniqueness => true + + def clear_data! + self.issue_count = 0 + self.issue_hash = {} + self.notes = '' + self.save! + end + + def increment_issue_count! + increment_with_sql!('issue_count') + end + + protected + + def increment_with_sql!(attribute, by = 1) + raise ArgumentError("Invalid attribute: #{attribute}") unless attribute_names.include?(attribute.to_s) + original_value_sql = "CASE WHEN `#{attribute}` IS NULL THEN 0 ELSE `#{attribute}` END" + self.class.update_all("`#{attribute}` = #{original_value_sql} + #{by.to_i}", "id = #{id}") + reload + end +end diff --git a/app/views/validation_admin/validation_issues/index.html.erb b/app/views/validation_admin/validation_issues/index.html.erb new file mode 100644 index 0000000..b562f3f --- /dev/null +++ b/app/views/validation_admin/validation_issues/index.html.erb @@ -0,0 +1,25 @@ +

<%= notice %>

+ +

Validation Issues

+ + + + + + + + + + +<% @validation_issues.each do |validation_issue| %> + + + + + + + +<% end %> +
TypeForm NameCount
<%= validation_issue.issue_type %><%= validation_issue.form_name %><%= validation_issue.issue_count %><%= link_to 'Show', validation_admin_validation_issue_path(validation_issue) %><%= link_to 'Reset!', + validation_admin_validation_issue_path(validation_issue), + method: :delete, data: { confirm: 'Are you sure?' } %>
\ No newline at end of file diff --git a/app/views/validation_admin/validation_issues/show.html.erb b/app/views/validation_admin/validation_issues/show.html.erb new file mode 100644 index 0000000..c1d9ba3 --- /dev/null +++ b/app/views/validation_admin/validation_issues/show.html.erb @@ -0,0 +1,22 @@ +

<%= notice %>

+ +

<%= @validation_issue.issue_type %>: <%= @validation_issue.form_name %>

+ +

+ Issues (<%= @validation_issue.issue_count %>): +

+ +

+ +<% unless @validation_issue.notes.blank? %> +

+ Notes: + <%= @validation_issue.notes %> +

+<% end %> + +<%= link_to 'Back', validation_admin_validation_issues_path, :class => 'button small-dark-orange-button' %> diff --git a/config/routes.rb b/config/routes.rb index 1daf9a4..686dff9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,2 +1,5 @@ Rails.application.routes.draw do + namespace :validation_admin do + resources :validation_issues + end end diff --git a/db/migrate/20120722204204_create_validation_issues.rb b/db/migrate/20120722204204_create_validation_issues.rb new file mode 100644 index 0000000..46ca4aa --- /dev/null +++ b/db/migrate/20120722204204_create_validation_issues.rb @@ -0,0 +1,16 @@ +class CreateValidationIssues < ActiveRecord::Migration + def change + create_table :validation_issues do |t| + t.string :issue_type + t.string :form_name, :null => false + t.text :issue_hash, :null => false + t.text :notes, :default => '' + t.integer :issue_count + + t.timestamps + end + add_index :validation_issues, :form_name# , :length => 10 + add_index :validation_issues, :issue_type + add_index :validation_issues, [:form_name, :issue_type], :unique => true + end +end diff --git a/lib/generators/valid_issues/templates/migration.rb b/lib/generators/valid_issues/templates/migration.rb new file mode 100644 index 0000000..04185b3 --- /dev/null +++ b/lib/generators/valid_issues/templates/migration.rb @@ -0,0 +1,22 @@ +class CreateValidationIssues < ActiveRecord::Migration + def self.up + create_table :validation_issues do |t| + + t.string :issue_type, :null => false + t.string :form_name, :null => false + t.text :issue_hash, :null => false + #t.text :issued_by_ids + t.text :notes + t.integer :issue_count + + t.timestamps + end + add_index :validation_issues, :form_name + add_index :validation_issues, :issue_type + + end + + def self.down + drop_table :versions + end +end \ No newline at end of file diff --git a/lib/generators/valid_issues/valid_issues_generator.rb b/lib/generators/valid_issues/valid_issues_generator.rb new file mode 100644 index 0000000..97f0cbe --- /dev/null +++ b/lib/generators/valid_issues/valid_issues_generator.rb @@ -0,0 +1,23 @@ +# CURRENT FILE :: lib/generators/valid_issues/valid_issues_generator.rb +# Requires +require 'rails/generators' +require 'rails/generators/migration' + +class ValidIssuesGenerator < Rails::Generators::Base + include Rails::Generators::Migration + def self.source_root + @source_root ||= File.join(File.dirname(__FILE__), 'templates') + end + + def self.next_migration_number(dirname) + if ActiveRecord::Base.timestamped_migrations + Time.new.utc.strftime("%Y%m%d%H%M%S") + else + "%.3d" % (current_migration_number(dirname) + 1) + end + end + + def create_migration_file + migration_template 'migration.rb', 'db/migrate/create_validation_issues_table.rb' + end +end \ No newline at end of file diff --git a/lib/validation_issues.rb b/lib/validation_issues.rb index 699f84a..1a4be33 100644 --- a/lib/validation_issues.rb +++ b/lib/validation_issues.rb @@ -1,4 +1,7 @@ require "validation_issues/engine" +require "validation_issues/core_ext" +require 'validation_issues/acts_as_validation_issues' + module ValidationIssues end diff --git a/lib/validation_issues/acts_as_validation_issues.rb b/lib/validation_issues/acts_as_validation_issues.rb new file mode 100644 index 0000000..d1770e6 --- /dev/null +++ b/lib/validation_issues/acts_as_validation_issues.rb @@ -0,0 +1,37 @@ +module ValidationIssues + module ActsAsValidationIssues + extend ActiveSupport::Concern + + included do + end + + module ClassMethods + def acts_as_validation_issues(options = {}) + # your code will go here + end + end + + # Instance Methods + def log_validation_issue!(form_name, options = {}) + if self.errors + vi = ValidationIssue.find_by_form_name_and_issue_type(form_name, self.class.to_s) + vi ||= ValidationIssue.new(:form_name => form_name, :issue_type => self.class.to_s) + + self.errors.map {|k,v| k }.uniq.each do |error_field| + vi.issue_hash[error_field] ||= 0 + vi.issue_hash[error_field] = vi.issue_hash[error_field] + 1 + end + + vi.notes ||= '' + if options[:notes] + vi.notes = vi.notes + ' \n ' + options[:notes] + end + vi.issue_count ||= 0 + vi.save + vi.increment_issue_count! + end + end + end +end + +ActiveRecord::Base.send :include, ValidationIssues::ActsAsValidationIssues diff --git a/lib/validation_issues/core_ext.rb b/lib/validation_issues/core_ext.rb new file mode 100644 index 0000000..e69de29 diff --git a/test/acts_as_validation_issues_test.rb b/test/acts_as_validation_issues_test.rb new file mode 100644 index 0000000..3d9b5e3 --- /dev/null +++ b/test/acts_as_validation_issues_test.rb @@ -0,0 +1,21 @@ +require 'test_helper' + +class ActsAsValidationIssuesTest < Test::Unit::TestCase + + def test_log_validation_issue_should_create_a_log + vi_count_object = ValidationIssue.where(:form_name => 'user_form').last + vi_count = vi_count_object.try(:issue_count) || 0 + user = User.new(:first_name => '', :last_name => 'Good Last Name') + user.save + user.log_validation_issue!('user_form') + vi = ValidationIssue.where(:form_name => 'user_form').last + assert_equal "User", vi.issue_type + # assert_equal { "first_name" => 1 } , vi.issue_hash + assert_equal (vi_count + 1), vi.issue_count + end + + #def test_log_file_should_increment_a_log + # assert_equal "last_tweet", ValidationIssue.log_validation_issue! + #end + +end \ No newline at end of file diff --git a/test/dummy/app/models/user.rb b/test/dummy/app/models/user.rb new file mode 100644 index 0000000..882c9e0 --- /dev/null +++ b/test/dummy/app/models/user.rb @@ -0,0 +1,10 @@ +class User < ActiveRecord::Base + attr_accessible :first_name, :last_name, :nick_name + acts_as_validation_issues + + validates :first_name, :presence => true + validates :last_name, :presence => true + validates :nick_name, :presence => false, + :format => { :with => /w+/ }, + :allow_blank => true +end diff --git a/test/dummy/db/migrate/20120722183345_create_users.rb b/test/dummy/db/migrate/20120722183345_create_users.rb new file mode 100644 index 0000000..edb6f0b --- /dev/null +++ b/test/dummy/db/migrate/20120722183345_create_users.rb @@ -0,0 +1,11 @@ +class CreateUsers < ActiveRecord::Migration + def change + create_table :users do |t| + t.string :first_name + t.string :last_name + t.string :nick_name + + t.timestamps + end + end +end diff --git a/test/dummy/db/schema.rb b/test/dummy/db/schema.rb new file mode 100644 index 0000000..1f2e4a9 --- /dev/null +++ b/test/dummy/db/schema.rb @@ -0,0 +1,38 @@ +# encoding: UTF-8 +# This file is auto-generated from the current state of the database. Instead +# of editing this file, please use the migrations feature of Active Record to +# incrementally modify your database, and then regenerate this schema definition. +# +# Note that this schema.rb definition is the authoritative source for your +# database schema. If you need to create the application database on another +# system, you should be using db:schema:load, not running all the migrations +# from scratch. The latter is a flawed and unsustainable approach (the more migrations +# you'll amass, the slower it'll run and the greater likelihood for issues). +# +# It's strongly recommended to check this file into your version control system. + +ActiveRecord::Schema.define(:version => 20120722204204) do + + create_table "users", :force => true do |t| + t.string "first_name" + t.string "last_name" + t.string "nick_name" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + create_table "validation_issues", :force => true do |t| + t.string "issue_type" + t.string "form_name", :null => false + t.text "issue_hash", :null => false + t.text "notes", :default => "" + t.integer "issue_count" + t.datetime "created_at", :null => false + t.datetime "updated_at", :null => false + end + + add_index "validation_issues", ["form_name", "issue_type"], :name => "index_validation_issues_on_form_name_and_issue_type", :unique => true + add_index "validation_issues", ["form_name"], :name => "index_validation_issues_on_form_name" + add_index "validation_issues", ["issue_type"], :name => "index_validation_issues_on_issue_type" + +end diff --git a/test/dummy/test/fixtures/users.yml b/test/dummy/test/fixtures/users.yml new file mode 100644 index 0000000..509a19e --- /dev/null +++ b/test/dummy/test/fixtures/users.yml @@ -0,0 +1,11 @@ +# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/Fixtures.html + +one: + first_name: MyString + last_name: MyString + nick_name: MyString + +two: + first_name: MyString + last_name: MyString + nick_name: MyString diff --git a/test/dummy/test/unit/user_test.rb b/test/dummy/test/unit/user_test.rb new file mode 100644 index 0000000..82f61e0 --- /dev/null +++ b/test/dummy/test/unit/user_test.rb @@ -0,0 +1,7 @@ +require 'test_helper' + +class UserTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end diff --git a/test/factories/validation_issues.rb b/test/factories/validation_issues.rb new file mode 100644 index 0000000..ff24345 --- /dev/null +++ b/test/factories/validation_issues.rb @@ -0,0 +1,9 @@ +FactoryGirl.define do + factory :validation_issue do + issue_type "User" + form_name "user_form" + issue_hash { ":first_name=>8, :nick_name=>8" } + notes "" + issue_count 7 + end +end \ No newline at end of file diff --git a/test/functional/validation_issues_controller_test.rb b/test/functional/validation_issues_controller_test.rb new file mode 100644 index 0000000..cdc01d2 --- /dev/null +++ b/test/functional/validation_issues_controller_test.rb @@ -0,0 +1,42 @@ +require 'test_helper' + +class ValidationAdmin::ValidationIssuesControllerTest < ActionController::TestCase + + setup do + validation_issue = FactoryGirl.build(:validation_issue) #validation_issues(:one) + vi = ValidationIssue.find_by_form_name_and_issue_type(validation_issue.form_name, 'User') + if vi + @validation_issue = vi + else + validation_issue.save + @validation_issue = validation_issue + end + @controller.stubs(:has_validation_issues_admin_privileges).returns(true) + end + + test "should get index" do + get :index + assert_response :success + assert_not_nil assigns(:validation_issues) + end + + test "should show validation_issue" do + get :show, id: @validation_issue + assert_response :success + end + + test "should destroy validation_issue" do + @validation_issue.issue_hash = {:first_name => 3} + @validation_issue.save + #assert_difference('ValidationIssue.count', -1) do + delete :destroy, id: @validation_issue + #end + @validation_issue.reload + assert_equal @validation_issue.issue_count, 0 + # puts @validation_issue.issue_hash.size + @validation_issue.issue_hash.each do |key, num| + assert_equal 0, num + end + assert_redirected_to validation_admin_validation_issues_path + end +end diff --git a/test/test_helper.rb b/test/test_helper.rb index dcd3b27..7869519 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -3,8 +3,15 @@ require File.expand_path("../dummy/config/environment.rb", __FILE__) require "rails/test_help" +require 'factory_girl' +require 'mocha' Rails.backtrace_cleaner.remove_silencers! # Load support files Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f } + +FactoryGirl.find_definitions +#class ActiveSupport::TestCase +# fixtures :all +#end \ No newline at end of file diff --git a/test/unit/helpers/validation_issues_helper_test.rb b/test/unit/helpers/validation_issues_helper_test.rb new file mode 100644 index 0000000..414b347 --- /dev/null +++ b/test/unit/helpers/validation_issues_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class ValidationIssuesHelperTest < ActionView::TestCase +end diff --git a/test/unit/validation_issue_test.rb b/test/unit/validation_issue_test.rb new file mode 100644 index 0000000..dd70d1f --- /dev/null +++ b/test/unit/validation_issue_test.rb @@ -0,0 +1,23 @@ +require 'test_helper' + +class ValidationIssueTest < ActiveSupport::TestCase + test ".clear_data!" do + # assert true + validation_issue = FactoryGirl.build(:validation_issue, :form_name => 'my_super_form', + :issue_count => 5, + :issue_hash => {'name' => 2, + 'password' => 3}) + vi = ValidationIssue.find_by_form_name_and_issue_type(validation_issue.form_name, 'User') + if vi + validation_issue = vi + else + validation_issue.save + end + validation_issue.clear_data! + assert_equal validation_issue.issue_count, 0 + # puts @validation_issue.issue_hash.size + validation_issue.issue_hash.each do |key, num| + assert_equal 0, num + end + end +end diff --git a/validation_issues.gemspec b/validation_issues.gemspec index 8632fe6..b2ad936 100644 --- a/validation_issues.gemspec +++ b/validation_issues.gemspec @@ -7,16 +7,16 @@ require "validation_issues/version" Gem::Specification.new do |s| s.name = "validation_issues" s.version = ValidationIssues::VERSION - s.authors = ["TODO: Your name"] - s.email = ["TODO: Your email"] - s.homepage = "TODO" - s.summary = "TODO: Summary of ValidationIssues." - s.description = "TODO: Description of ValidationIssues." + s.authors = ["David Henner"] + s.email = ["drhenner@gmail.com"] + s.homepage = "http://www.ror-e.com" + s.summary = "To ensure Validations that continue to have issues are addressed by developers." + s.description = "To ensure Validations that continue to have issues are addressed by developers. This is done by logging the failure. When a specific failure continues to be an issue, a developer can look into the problem." - s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"] - s.test_files = Dir["test/**/*"] + s.files = Dir["{app,config,db,lib}/**/*"] + ["MIT-LICENSE", "Rakefile", "README.rdoc"] + s.test_files = Dir["test/**/*"] - s.add_dependency "rails", "~> 3.2.1" + s.add_dependency "rails", "~> 3.2.6" # s.add_dependency "jquery-rails" s.add_development_dependency "sqlite3"