schild 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 871dde69d54b28f357ee941d9fb37aabf8d1ad3d
4
- data.tar.gz: 3f5c375ccf3380706d925386ab3d18c1d50c691e
3
+ metadata.gz: af0c2f952bd55de136a4d53286de556efd28a2b8
4
+ data.tar.gz: 3fe5c5d3d6caa0900441b5c31c82aca45ce07eb1
5
5
  SHA512:
6
- metadata.gz: 2bc3b214c73e7501960d3fa519e09070cc18c722a0657dc15acea1056b35af92811666407c3ead71d68a880acef956b6e4a569dae3d319d76a6fa9369a1a4d5d
7
- data.tar.gz: 74198c786b0ef53b3aed9c333eda631121192e198822fcbbed7bfcee64cc8ffd620f68c5e37d85a40a599da696c40891980bd53542ab91fb99bd7c9806c92156
6
+ metadata.gz: 9ec3636e5510cd763e402e4b056f47fadae75b5d78a791b38b04811bf4e3224efe67bb08ce00b9b9171d93464df5d57001eba09376350149dd513e8396840291
7
+ data.tar.gz: b490a280256c0de2a139526d860a9558868f608b902b981569bff5f8c220ba67028c90688c137e53c4fc3c3c7774b20ec626543452e9b3b48bd3ae1ee4723fd9
data/config/env.yml CHANGED
@@ -1,7 +1,7 @@
1
1
  local_test:
2
2
  S_ADAPTER: mysql2
3
- S_HOST: localhost
3
+ S_HOST: 172.17.0.4
4
4
  S_USER: schild
5
5
  S_PASSWORD: schild
6
- S_DB: schild_test
6
+ S_DB: schild-test
7
7
 
@@ -1,3 +1,3 @@
1
1
  module Schild
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/schild.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'schild/version'
2
2
  require 'sequel'
3
3
 
4
+ # erst Ruby 2.1.0 macht include zu einer public-Methode
4
5
  if Module.private_method_defined? :include
5
6
  class Module
6
7
  public :include
@@ -36,13 +37,18 @@ module SchildTypeSaver
36
37
  def self.included(klass)
37
38
  klass.columns.each do |column|
38
39
  name = column.snake_case
39
- define_method(name) { public_send(column) || Null.new("")}
40
+ define_method(name) { public_send(column) || create_null_object(klass, column)}
40
41
  end
41
42
  end
42
43
 
43
- class Null < String
44
- def strftime(args)
45
- Time.new("1899").strftime(args)
44
+ def create_null_object(klass, column)
45
+ k = DB.schema_type_class(klass.db_schema[column][:type])
46
+ if k.class == Array
47
+ # Sequel stellt :datetime als [Time, DateTime] dar
48
+ DateTime.new(1799)
49
+ else
50
+ # alle anderen types werden als Klasse zurückgegeben
51
+ k.new
46
52
  end
47
53
  end
48
54
  end
@@ -1,12 +1,27 @@
1
1
  require "#{File.dirname(__FILE__)}/spec_helper"
2
2
 
3
3
  describe Schueler do
4
- describe 'typen sicherheit von objekten' do
5
- before do
6
- # lade einen Standardschueler
7
- @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
4
+ describe 'null-Objekte passen sich den DB-Typen an' do
5
+ before do
6
+ # lade einen Standardschueler
7
+ @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
8
+ end
9
+
10
+ it 'gibt ein DateTime bei Daten zurück' do
11
+ @sm.geburtsdatum.must_be_instance_of DateTime
12
+ end
13
+
14
+ it 'gibt String für Text zurück' do
15
+ @sm.bemerkungen.must_be_instance_of String
16
+ end
8
17
  end
9
18
 
19
+ describe 'null-Objekte geben immer etwas zurück' do
20
+ before do
21
+ # lade einen Standardschueler
22
+ @sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
23
+ end
24
+
10
25
  it 'gibt nil zurück, wenn leer' do
11
26
  @sm.Bemerkungen.must_equal nil
12
27
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - HMT