spec/model_handler_spec.rb in baza-0.0.19 vs spec/model_handler_spec.rb in baza-0.0.20
- old
+ new
@@ -4,11 +4,11 @@
let(:db_path) { "#{Dir.tmpdir}/baza_model_handler_test_#{Time.now.to_f}_#{Random.rand}.sqlite3" }
let(:db) do
require "sqlite3" unless RUBY_ENGINE == "jruby"
require "tmpdir"
- File.unlink(db_path) if File.exists?(db_path)
+ File.unlink(db_path) if File.exist?(db_path)
db = Baza::Db.new(type: :sqlite3, path: db_path, debug: false)
schema = {
tables: {
"Group" => {
@@ -77,12 +77,12 @@
])
ob
end
- let(:task) { ob.add(:Task, name: 'Test task', person_id: person.id) }
- let(:person) { ob.add(:Person, name: 'Kasper') }
+ let(:task) { ob.add(:Task, name: "Test task", person_id: person.id) }
+ let(:person) { ob.add(:Person, name: "Kasper") }
let(:project) { ob.add(:Project) }
before(:all) do
class User < Baza::Model; end
@@ -105,22 +105,22 @@
has_many [
{class: :Timelog, autozero: true}
]
def html
- return self[:name]
+ self[:name]
end
end
class Timelog < Baza::Model; end
end
it "should be able to cache rows" do
expect(ob.ids_cache[:User].length).to eq 5
user = ob.get(:User, 4)
- raise "No user returned." if !user
+ raise "No user returned." unless user
ob.delete(user)
expect(ob.ids_cache[:User].length).to eq 4
ob.deletes([ob.get(:User, 1), ob.get(:User, 2)])
@@ -139,30 +139,38 @@
end
ob.adds(:User, userd)
users = ob.list(:User).to_a
- #Stress it to test threadsafety...
+ # Stress it to test threadsafety...
threads = []
0.upto(5) do |tc|
threads << Thread.new do
0.upto(5) do |ic|
- user = ob.add(:User, {:username => "User #{tc}-#{ic}"})
- raise "No user returned." if !user
+ user = ob.add(:User, username: "User #{tc}-#{ic}")
+ raise "No user returned." unless user
ob.delete(user)
- user1 = ob.add(:User, {:username => "User #{tc}-#{ic}-1"})
- user2 = ob.add(:User, {:username => "User #{tc}-#{ic}-2"})
- user3 = ob.add(:User, {:username => "User #{tc}-#{ic}-3"})
+ user1 = ob.add(:User, username: "User #{tc}-#{ic}-1")
+ user2 = ob.add(:User, username: "User #{tc}-#{ic}-2")
+ user3 = ob.add(:User, username: "User #{tc}-#{ic}-3")
- raise "Missing user?" if !user1 or !user2 or !user3 or user1.deleted? or user2.deleted? or user3.deleted?
+ expect(user1).to_not eq nil
+ expect(user1.deleted?).to eq false
+
+ expect(user2).to_not eq nil
+ expect(user2.deleted?).to eq false
+
+ expect(user3).to_not eq nil
+ expect(user3.deleted?).to eq false
+
ob.deletes([user1, user2, user3])
count = 0
- users.each do |user|
+ users.each do |user_i|
count += 1
- user[:username] = "#{user[:username]}." unless user.deleted?
+ user_i[:username] = "#{user_i[:username]}." unless user_i.deleted?
end
expect(count).to eq 21
end
end
@@ -173,97 +181,97 @@
it "should be able to skip queries when adding" do
class Group < Baza::Model; end
ob2 = Baza::ModelHandler.new(
- :db => db,
- :datarow => true,
- :require => false
+ db: db,
+ datarow: true,
+ require: false
)
threads = []
0.upto(5) do
threads << Thread.new do
Thread.current.abort_on_exception = true
0.upto(5) do
- ret = ob2.add(:Group, {groupname: "User 1"}, {skip_ret: true})
+ ret = ob2.add(:Group, {groupname: "User 1"}, skip_ret: true)
raise "Expected empty return but got something: #{ret}" if ret
end
end
end
- threads.each do |thread|
- thread.join
- end
+ threads.each(&:join)
end
it "should delete the temporary database." do
- File.unlink(db_path) if File.exists?(db_path)
+ File.unlink(db_path) if File.exist?(db_path)
end
- #Moved from "knjrbfw_spec.rb"
+ # Moved from "knjrbfw_spec.rb"
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 'tmpdir'
+ require "tmpdir"
db_path = "#{Dir.tmpdir}/knjrbfw_test_sqlite3.sqlite3"
db = Baza::Db.new(
- :type => :sqlite3,
- :path => db_path,
- :index_append_table_name => true
+ type: :sqlite3,
+ path: db_path,
+ 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}
+ 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]}
+ 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 => :person_id, :type => :int},
- {:name => :name, :type => :varchar}
+ db.tables.create(
+ "Task",
+ columns: [
+ {name: :id, type: :int, autoincr: true, primarykey: true},
+ {name: :project_id, type: :int},
+ {name: :person_id, type: :int},
+ {name: :name, type: :varchar}
],
- :indexes => [
- {:name => :project_id, :columns => [:project_id]}
+ indexes: [
+ {name: :project_id, columns: [:project_id]}
]
- })
+ )
- db.tables.create("Person", {
- :columns => [
- {:name => :id, :type => :int, :autoincr => true, :primarykey => true},
- {:name => :name, :type => :varchar}
+ db.tables.create(
+ "Person",
+ columns: [
+ {name: :id, type: :int, autoincr: true, primarykey: true},
+ {name: :name, type: :varchar}
]
- })
+ )
- db.tables.create("Timelog", {
- :columns => [
- {:name => :id, :type => :int, :autoincr => true, :primarykey => true},
- {:name => :person_id, :type => :int}
+ db.tables.create(
+ "Timelog",
+ columns: [
+ {name: :id, type: :int, autoincr: true, primarykey: true},
+ {name: :person_id, type: :int}
],
- :indexes => [
+ indexes: [
:person_id
]
- })
+ )
table = db.tables[:Project]
indexes = table.indexes
- raise "Could not find the sample-index 'category_id' that should have been created." unless indexes[:Project__category_id]
+ raise "Could not find the sample-index 'category_id' that should have been created." unless indexes.any? { |index| index.name == "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"
- })
+ # 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")
count = 0
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
@@ -272,41 +280,35 @@
raise "Expected count of 1 but it wasnt: #{count}" if count != 1
end
it "should be able to automatic generate methods on datarow-classes (has_many, has_one)." do
- ob = Baza::ModelHandler.new(:db => db, :datarow => true, :require => false)
+ ob = Baza::ModelHandler.new(db: db, datarow: true, require: false)
- ob.add(:Person, {
- :name => "Kasper"
- })
- ob.add(:Task, {
- :name => "Test task",
- :person_id => person.id,
- :project_id => project.id
- })
+ ob.add(:Person, name: "Kasper")
+ ob.add(:Task, name: "Test task", person_id: person.id, project_id: project.id)
begin
- obb.add(:Task, {:name => "Test task"})
+ obb.add(:Task, name: "Test task")
raise "Method should fail but didnt."
rescue
- #ignore.
+ # Ignore.
end
- #Test 'list_invalid_required'.
- db.insert(:Task, :name => "Invalid require")
+ # Test 'list_invalid_required'.
+ db.insert(:Task, name: "Invalid require")
id = db.last_id
found = false
- ob.list_invalid_required(:class => :Task) do |d|
+ ob.list_invalid_required(class: :Task) do |d|
raise "Expected object ID to be #{id} but it wasnt: #{d[:obj].id}" if d[:obj].id.to_i != id.to_i
ob.delete(d[:obj])
found = true
end
- raise "Expected to find a task but didnt." if !found
+ raise "Expected to find a task but didnt." unless found
ret_proc = []
ob.list(:Task) do |task|
ret_proc << task
@@ -322,123 +324,108 @@
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 "When given a block the return should be nil so it doesnt hold weak-ref-objects in memory but it didnt return nil." unless ret_test == nil
raise "list for project with proc should return one task but didnt (#{ret_proc.length})." if ret_proc.length != 1
person = tasks.first.person
project_second = tasks.first.project
- raise "Returned object was not a person on task." if !person.is_a?(Person)
- raise "Returned object was not a project on task." if !project_second.is_a?(Project)
+ raise "Returned object was not a person on task." unless person.is_a?(Person)
+ raise "Returned object was not a project on task." unless project_second.is_a?(Project)
- #Check that has_many-depending is actually working.
+ # 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."
+ # This should happen - it should not possible to delete project 1 because task 1 depends on it."
end
end
it "should be able to generate lists for inputs" do
task
list = ob.list_optshash(:Task)
list.length.should eq 1
- list[1].should eq 'Test task'
+ list[1].should eq "Test task"
end
it "should be able to connect to objects 'no-html' callback and test it." do
task
- ob.events.connect(:no_html) do |event, classname|
+ ob.events.connect(:no_html) do |_event, classname|
"[no #{classname.to_s.downcase}]"
end
expect(task.person_html).to eq "Kasper"
- task.update(:person_id => 0)
+ task.update(person_id: 0)
expect(task.person_html).to eq "[no person]"
end
it "should be able to to multiple additions and delete objects through a buffer" do
objs = []
0.upto(500) do
- objs << {:name => :Kasper}
+ objs << {name: :Kasper}
end
ob.adds(:Person, objs)
pers_length = ob.list(:Person, "count" => true)
count = 0
db.q_buffer do |buffer|
ob.list(:Person) do |person|
count += 1
- ob.delete(person, :db_buffer => buffer)
+ ob.delete(person, db_buffer: buffer)
end
buffer.flush
end
raise "Expected count to be #{pers_length} but it wasnt: #{count}" if count != pers_length
persons = ob.list(:Person).to_a
- raise "Expected persons count to be 0 but it wasnt: #{persons.map{|e| e.data} }" if persons.length > 0
+ raise "Expected persons count to be 0 but it wasnt: #{persons.map(&:data)}" if persons.length > 0
end
it "should do autozero when deleting objects" do
- person1 = ob.add(:Person, {
- :name => "Kasper"
- })
- person2 = ob.add(:Person, {
- :name => "Charlotte"
- })
+ person1 = ob.add(:Person, name: "Kasper")
+ person2 = ob.add(:Person, name: "Charlotte")
- timelog1 = ob.add(:Timelog, {
- :person_id => person1.id
- })
- timelog2 = ob.add(:Timelog, {
- :person_id => person2.id
- })
+ timelog1 = ob.add(:Timelog, person_id: person1.id)
+ timelog2 = ob.add(:Timelog, person_id: person2.id)
ob.delete(person1)
raise "Expected timelog1's person-ID to be zero but it wasnt: '#{timelog1[:person_id]}'." if timelog1[:person_id].to_i != 0
raise "Expected timelog2's person-ID to be #{person2.id} but it wasnt: '#{timelog2[:person_id]}'." if timelog2[:person_id].to_i != person2.id.to_i
end
it "should be able to do multiple deletes from ids" do
ids = []
- 1.upto(10) do |count|
+ 1.upto(10) do |_count|
ids << ob.add(:Person).id
end
- ob.delete_ids(:class => :Person, :ids => ids)
+ ob.delete_ids(class: :Person, ids: ids)
end
it "get_or_add" do
- person1 = ob.add(:Person, {
- :name => "get_or_add"
- })
+ person1 = ob.add(:Person, name: "get_or_add")
+ person2 = ob.get_or_add(:Person, name: "get_or_add")
- person2 = ob.get_or_add(:Person, {
- :name => "get_or_add"
- })
-
person2.id.should eql(person1.id)
person2[:name].should eql("get_or_add")
- person3 = ob.get_or_add(:Person, {
- :name => "get_or_add3"
- })
+ person3 = ob.get_or_add(:Person, name: "get_or_add3")
raise "Failure ID was the same" if person3.id == person2.id
person3[:name].should eql("get_or_add3")
end
it "should delete the temp database again." do
- require 'tmpdir'
+ require "tmpdir"
db_path = "#{Dir.tmpdir}/knjrbfw_test_sqlite3.sqlite3"
- File.unlink(db_path) if File.exists?(db_path)
+ File.unlink(db_path) if File.exist?(db_path)
end
-end
\ No newline at end of file
+end