spec/knjrbfw_spec.rb in knjrbfw-0.0.32 vs spec/knjrbfw_spec.rb in knjrbfw-0.0.33
- old
+ new
@@ -1,302 +1,13 @@
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe "Knjrbfw" do
- it "should be able to generate a sample SQLite database and add a sample table, with sample columns and with a sample index to it" do
- require "knjrbfw"
- require "sqlite3" if RUBY_ENGINE != "jruby"
-
- db_path = "#{Knj::Os.tmpdir}/knjrbfw_test_sqlite3.sqlite3"
-
- begin
- db = Knj::Db.new(
- :type => "sqlite3",
- :path => db_path,
- :return_keys => "symbols",
- :index_append_table_name => true
- )
-
- db.tables.create("Project", {
- "columns" => [
- {"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
- {"name" => "category_id", "type" => "int"},
- {"name" => "name", "type" => "varchar"}
- ],
- "indexes" => [
- {"name" => "category_id", "columns" => ["category_id"]}
- ]
- })
-
- db.tables.create("Task", {
- "columns" => [
- {"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
- {"name" => "project_id", "type" => "int"},
- {"name" => "user_id", "type" => "int"},
- {"name" => "name", "type" => "varchar"}
- ],
- "indexes" => [
- {"name" => "project_id", "columns" => ["project_id"]}
- ]
- })
-
- db.tables.create("User", {
- "columns" => [
- {"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
- {"name" => "name", "type" => "varchar"}
- ]
- })
-
- table = db.tables["Project"]
-
- indexes = table.indexes
- raise "Could not find the sample-index 'category_id' that should have been created." if !indexes["Project__category_id"]
-
-
- #If we insert a row the ID should increase and the name should be the same as inserted (or something is very very wrong)...
- db.insert("Project", {
- "name" => "Test project"
- })
-
- db.q("SELECT * FROM Project") do |d|
- raise "Somehow name was not 'Test project'" if d[:name] != "Test project"
- raise "ID was not set?" if d[:id].to_i <= 0
- end
-
- $db = db
- rescue => e
- File.unlink(db_path) if File.exists?(db_path)
- raise e
- end
- end
-
- it "should be able to parse various date formats." do
- date = Knj::Datet.in("2011-07-09 00:00:00 UTC")
- date = Knj::Datet.in("1985-06-17 01:00:00")
- date = Knj::Datet.in("1985-06-17")
- date = Knj::Datet.in("17/06 1985")
-
- raise "Couldnt register type 1 nullstamp." if !Knj::Datet.is_nullstamp?("0000-00-00")
- raise "Couldnt register type 2 nullstamp." if !Knj::Datet.is_nullstamp?("0000-00-00 00:00:00")
- raise "Registered nullstamp on valid date." if Knj::Datet.is_nullstamp?("1985-06-17")
- raise "Registered nullstamp on valid date." if Knj::Datet.is_nullstamp?("1985-06-17 10:30:00")
-
- date = Knj::Datet.in("2011-07-09 13:05:04 +0200")
- ltime = date.localtime_str
-
- #if RUBY_VERSION.slice(0, 3) == "1.9"
- # if ltime != date.time.localtime
- # raise "Calculated localtime (#{ltime}) was not the same as the real Time-localtime (#{date.time.localtime})."
- # end
- #end
-
- if ltime != "2011-07-09 13:05:04 +0200"
- raise "Datet didnt return expected result: '#{ltime}'."
- end
- end
-
- it "should be able to compare dates" do
- date1 = Knj::Datet.in("17/06 1985")
- date2 = Knj::Datet.in("18/06 1985")
- date3 = Knj::Datet.in("17/06 1985")
-
- raise "Date1 was wrongly higher than date2." if date1 > date2
-
- if date2 > date1
- #do nothing.
- else
- raise "Date2 was wrongly not higher than date1."
- end
-
- raise "Date1 was wrongly not the same as date3." if date1 != date3
- raise "Date1 was the same as date2?" if date1 == date2
- end
-
- it "should be able to automatic generate methods on datarow-classes (has_many, has_one)." do
- class Project < Knj::Datarow
- has_many [
- {:class => :Task, :col => :project_id, :depends => true}
- ]
- end
-
- class Task < Knj::Datarow
- has_one [
- {:class => :User, :required => true},
- :Project
- ]
- end
-
- class User < Knj::Datarow
- has_one [:Project]
-
- def html
- return self[:name]
- end
- end
-
- $ob = Knj::Objects.new(:db => $db, :datarow => true, :require => false)
-
- $ob.add(:User, {
- :name => "Kasper"
- })
- $ob.add(:Task, {
- :name => "Test task",
- :user_id => 1,
- :project_id => 1
- })
-
- ret_proc = []
- $ob.list(:Task) do |task|
- ret_proc << task
- end
-
- raise "list with proc should return one task but didnt." if ret_proc.length != 1
-
-
- project = $ob.get(:Project, 1)
-
- tasks = project.tasks
- raise "No tasks were found on project?" if tasks.empty?
-
-
- ret_proc = []
- ret_test = project.tasks do |task|
- ret_proc << task
- end
-
- raise "When given a block the return should be nil so it doesnt hold weak-ref-objects in memory but it didnt return nil." if ret_test != nil
- raise "list for project with proc should return one task but didnt (#{ret_proc.length})." if ret_proc.length != 1
-
- user = tasks[0].user
- project_second = tasks[0].project
-
- raise "Returned object was not a user on task." if !user.is_a?(User)
- raise "Returned object was not a project on task." if !project_second.is_a?(Project)
-
-
- #Check that has_many-depending is actually working.
- begin
- $ob.delete(project)
- raise "It was possible to delete project 1 even though task 1 depended on it!"
- rescue
- #this should happen - it should not possible to delete project 1 because task 1 depends on it."
- end
- end
-
- it "should be able to connect to objects 'no-html' callback and test it." do
- task = $ob.get(:Task, 1)
- $ob.events.connect(:no_html) do |event, classname|
- "[no #{classname.to_s.downcase}]"
- end
-
- raise "Unexpected user_html from task (should have been 'Kasper')." if task.user_html != "Kasper"
- task.update(:user_id => 0)
- raise "Unexpected user_html from task (should have been '[no user]')." if task.user_html != "[no user]"
- end
-
- it "should delete the temp database again." do
- db_path = "#{Knj::Os.tmpdir}/knjrbfw_test_sqlite3.sqlite3"
- File.unlink(db_path) if File.exists?(db_path)
- end
-
- it "should be able to execute various Knj::Php functions correctly." do
- str = "Kasper Johansen"
-
- #substr
- teststr = Knj::Php.substr(str, 7, 8)
- if teststr != "Johansen"
- raise "substr did not return expected result: '#{teststr}'"
- end
-
- teststr = Knj::Php.substr(str, -8, 8)
- if teststr != "Johansen"
- raise "substr did not returned expected result when using negative positions: '#{teststr}'."
- end
-
- #strtoupper
- teststr = Knj::Php.strtoupper(str)
- if teststr != "KASPER JOHANSEN"
- raise "strtoupper did not return expected result: '#{teststr}'."
- end
-
- #strtolower
- teststr = Knj::Php.strtolower(str)
- if teststr != "kasper johansen"
- raise "strtolower did not return expected result: '#{teststr}'."
- end
- end
-
it "should be able to join arrays with callbacks." do
res = Knj::ArrayExt.join(:arr => [1, 2, 3], :sep => ",", :callback => proc{|value| "'#{value}'"})
raise "Unexpected result from ArrayExt." if res != "'1','2','3'"
end
- it "should be able to execute various forms of Web.input methods." do
- html = Knj::Web.inputs([{
- :title => "Test 1",
- :name => :textest1,
- :type => :text,
- :default => "hmm",
- :value => "trala"
- },{
- :title => "Test 2",
- :name => :chetest2,
- :type => :checkbox,
- :default => true
- },{
- :title => "Test 3",
- :name => :seltest3,
- :type => :select,
- :default => 1,
- :opts => $ob.list_optshash(:Task)
- },{
- :title => "Test 4",
- :name => :textest4,
- :type => :textarea,
- :height => 300,
- :default => "Hmm",
- :value => "Trala"
- },{
- :title => "Test 5",
- :name => :filetest5,
- :type => :file
- },{
- :title => "Test 6",
- :type => :info,
- :value => "Argh"
- }])
- end
-
- it "should be able to use alert and back." do
- Knj::Web.alert("Trala")
-
- begin
- Knj::Web.back
- raise "It should have called exit which it didnt."
- rescue SystemExit
- #ignore.
- end
-
- begin
- Knj::Web.redirect("?show=test")
- raise "It should have called exit which it didnt."
- rescue SystemExit
- #ignore.
- end
- end
-
- it "should be able to properly parse 'Set-Cookie' headers." do
- data = Knj::Web.parse_set_cookies("TestCookie=TestValue+; Expires=Fri, 05 Aug 2011 10:58:17 GMT; Path=\n")
-
- raise "No data returned?" if !data or !data.respond_to?(:length)
- raise "Wrong number of cookies returned: '#{data.length}'." if data.length != 1
-
- raise "Unexpected name: '#{data[0]["name"]}'." if data[0]["name"] != "TestCookie"
- raise "Unexpected value: '#{data[0]["value"]}'." if data[0]["value"] != "TestValue "
- raise "Unexpected path: '#{data[0]["path"]}'." if data[0]["path"] != ""
- raise "Unexpected expire:' #{data[0]["expire"]}'." if data[0]["expires"] != "Fri, 05 Aug 2011 10:58:17 GMT"
- end
-
it "should be able to draw rounded transparent corners on images." do
require "rubygems"
require "RMagick"
pic = Magick::Image.read("#{File.dirname(__FILE__)}/../testfiles/image.jpg").first
@@ -310,10 +21,9 @@
blob_cont = pic.to_blob
end
it "should be possible to use Strings.html_links-method." do
teststr = "This is a test. http://www.google.com This is a test."
-
#Test normal usage.
test1 = Knj::Strings.html_links(teststr)
raise "Unexpected string: '#{teststr}'" if test1 != "This is a test. <a href=\"http://www.google.com\">http://www.google.com</a> This is a test."