Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
Merge pull request #1 from leveille/master
Browse files Browse the repository at this point in the history
Minor Updates / TCI Integration
  • Loading branch information
nathanpalmer committed Jan 9, 2012
2 parents e5e728b + af8a90e commit df53377
Show file tree
Hide file tree
Showing 12 changed files with 204 additions and 14 deletions.
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.DS_Store
.DS_Store
.idea

3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
before_script:
- "sh -e /etc/init.d/xvfb start"

4 changes: 4 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
source :rubygems
gem "jasmine"
gem "rake"

2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
[<img src="https://secure.travis-ci.org/leveille/spine.validate.png" />](http://travis-ci.org/#!/leveille/spine.validate)

Simple model validation framework for [Spine](https://github.com/maccman/spine). Allowing you to mix strong validation rules with fluid english context.

# Install
Expand Down
16 changes: 16 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
begin
require 'jasmine'
load 'jasmine/tasks/jasmine.rake'
rescue LoadError
task :jasmine do
abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
end
end

task :default do
["rake jasmine:ci"].each do |cmd|
puts "Starting to run #{cmd}..."
system("export DISPLAY=:99.0 && bundle exec #{cmd}")
raise "#{cmd} failed!" unless $?.exitstatus == 0
end
end
3 changes: 1 addition & 2 deletions SpecRunner.html
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,7 @@
<script type="text/javascript" src="src/spine.validate.js"></script>

<!-- include source files here... -->
<script type="text/javascript" src="spec/SpecHelper.js"></script>
<script type="text/javascript" src="spec/ValidateSpec.js"></script>
<script type="text/javascript" src="spec/javascripts/ValidateSpec.js"></script>

<script type="text/javascript">
(function() {
Expand Down
9 changes: 0 additions & 9 deletions spec/SpecHelper.js

This file was deleted.

43 changes: 43 additions & 0 deletions spec/ValidateSpec.js → spec/javascripts/ValidateSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,19 @@ describe("Validate", function() {
expect(errors[0].property).toBe("first");
});

it("should return custom message for required", function() {
var model = { first: "" };
var message = 'First is a required field';
var rules = [
RuleFor("first")
.Required()
.Message(message)
];

var errors = ChainValidation.Validate(model, rules);
expect(errors[0].message).toBe(message);
});

it("should verify equal", function() {
// Given
var model = { first: "Eric" };
Expand Down Expand Up @@ -109,6 +122,36 @@ describe("Validate", function() {
expect(errors[0].property).toBe("first");
});

it("should verify integer as numeric", function() {
// Given
var model = { number: "1" };
var rules = [
RuleFor("number")
.IsNumeric()
];

// When
var errors = ChainValidation.Validate(model, rules);

// Then
expect(errors.length).toBe(0);
});

it("should verify decimal as numeric", function() {
// Given
var model = { number: "1.1" };
var rules = [
RuleFor("number")
.IsNumeric()
];

// When
var errors = ChainValidation.Validate(model, rules);

// Then
expect(errors.length).toBe(0);
});

it("should fail email", function() {
// Given
var model = { email: "none" };
Expand Down
75 changes: 75 additions & 0 deletions spec/javascripts/support/jasmine.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# src_files
#
# Return an array of filepaths relative to src_dir to include before jasmine specs.
# Default: []
#
# EXAMPLE:
#
# src_files:
# - lib/source1.js
# - lib/source2.js
# - dist/**/*.js
#
src_files:
- lib/jquery-1.6.2.min.js
- lib/spine.js
- src/spine.validate.js

# stylesheets
#
# Return an array of stylesheet filepaths relative to src_dir to include before jasmine specs.
# Default: []
#
# EXAMPLE:
#
# stylesheets:
# - css/style.css
# - stylesheets/*.css
#
stylesheets:

# helpers
#
# Return an array of filepaths relative to spec_dir to include before jasmine specs.
# Default: ["helpers/**/*.js"]
#
# EXAMPLE:
#
# helpers:
# - helpers/**/*.js
#
helpers:

# spec_files
#
# Return an array of filepaths relative to spec_dir to include.
# Default: ["**/*[sS]pec.js"]
#
# EXAMPLE:
#
# spec_files:
# - **/*[sS]pec.js
#
spec_files:

# src_dir
#
# Source directory path. Your src_files must be returned relative to this path. Will use root if left blank.
# Default: project root
#
# EXAMPLE:
#
# src_dir: public
#
src_dir:

# spec_dir
#
# Spec directory path. Your spec_files must be returned relative to this path.
# Default: spec/javascripts
#
# EXAMPLE:
#
# spec_dir: spec/javascripts
#
spec_dir:
23 changes: 23 additions & 0 deletions spec/javascripts/support/jasmine_config.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module Jasmine
class Config

# Add your overrides or custom config code here

end
end


# Note - this is necessary for rspec2, which has removed the backtrace
module Jasmine
class SpecBuilder
def declare_spec(parent, spec)
me = self
example_name = spec["name"]
@spec_ids << spec["id"]
backtrace = @example_locations[parent.description + " " + example_name]
parent.it example_name, {} do
me.report_spec(spec["id"])
end
end
end
end
32 changes: 32 additions & 0 deletions spec/javascripts/support/jasmine_runner.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
$:.unshift(ENV['JASMINE_GEM_PATH']) if ENV['JASMINE_GEM_PATH'] # for gem testing purposes

require 'rubygems'
require 'jasmine'
jasmine_config_overrides = File.expand_path(File.join(File.dirname(__FILE__), 'jasmine_config.rb'))
require jasmine_config_overrides if File.exist?(jasmine_config_overrides)
if Jasmine::Dependencies.rspec2?
require 'rspec'
else
require 'spec'
end

jasmine_config = Jasmine::Config.new
spec_builder = Jasmine::SpecBuilder.new(jasmine_config)

should_stop = false

if Jasmine::Dependencies.rspec2?
RSpec.configuration.after(:suite) do
spec_builder.stop if should_stop
end
else
Spec::Runner.configure do |config|
config.after(:suite) do
spec_builder.stop if should_stop
end
end
end

spec_builder.start
should_stop = true
spec_builder.declare_suites
4 changes: 2 additions & 2 deletions src/spine.validate.js
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
Required: function() {
add(function(record) {
if (record[field] === undefined || record[field] === "") {
return field + " is required";
return message || field + " is required";
}
});
return this;
Expand Down Expand Up @@ -236,7 +236,7 @@
},
IsNumeric: function() {
add(function(record) {
if (record[field] !== undefined && !record[field].match(/[0-9]+/)) {
if (record[field] !== undefined && !(record[field]+'').match(/[0-9\.]+/)) {
return message || field + " must be numeric";
}
});
Expand Down

0 comments on commit df53377

Please sign in to comment.