Commit 4b1caa0

mo khan <mo@mokhan.ca>
2013-07-20 23:15:57
extract orm configuration to shared context
1 parent f7324ec
lib/humble/mapping_configuration.rb
@@ -10,6 +10,7 @@ module Humble
     end
 
     def save_using(connection, item)
+      p @attributes
       id = connection[@table.name].insert(@table.insert(item))
       item.instance_variable_set('@id', id)
     end
spec/integration/crud/update_spec.rb
@@ -0,0 +1,29 @@
+require "integration_helper"
+
+describe "updating a record" do
+  include_context "orm"
+
+  context "when updating a record" do
+    let(:movie) { Movie.new(:name => "old name") }
+
+    before :each do
+      session.begin_transaction do |session|
+        session.save(movie)
+      end
+      movie.name="new name"
+      session.begin_transaction do |session|
+        session.save(movie)
+      end
+    end
+
+    let(:results) { connection[:movies].all }
+
+    it "should save the changes" do
+      results.first[:name].should == 'new name'
+    end
+
+    it "should not create any new records" do
+      results.count.should == 1
+    end
+  end
+end
spec/integration/fixtures/movie_mapping.rb
@@ -5,6 +5,10 @@ class Movie
     @id = attributes[:id] || -1
     @name = attributes[:name]
   end
+
+  def name=(new_name)
+    @name = new_name
+  end
 end
 
 class MovieMapping < Humble::DatabaseMapping
spec/integration/example_spec.rb
@@ -1,12 +1,7 @@
-require "spec_helper"
-require_relative 'fixtures/movie_mapping.rb'
+require "integration_helper"
 
-describe "orm" do
-  let(:connection) { Sequel.connect(connection_string) }
-  let(:connection_string) { 'sqlite://test.db' }
-  let(:configuration) { Humble::Configuration.new(connection_string) }
-  let(:session_factory) { configuration.build_session_factory }
-  let(:session) { session_factory.create_session }
+describe "crud" do
+  include_context "orm"
 
   before :each do
     connection.create_table :movies do
@@ -73,5 +68,4 @@ describe "orm" do
       movie.id.should_not == -1
     end
   end
-
 end
spec/integration_helper.rb
@@ -0,0 +1,10 @@
+require "spec_helper"
+require_relative 'integration/fixtures/movie_mapping.rb'
+
+shared_context "orm" do
+  let(:connection) { Sequel.connect(connection_string) }
+  let(:connection_string) { 'sqlite://test.db' }
+  let(:configuration) { Humble::Configuration.new(connection_string) }
+  let(:session_factory) { configuration.build_session_factory }
+  let(:session) { session_factory.create_session }
+end
Gemfile.lock
@@ -1,7 +1,7 @@
 PATH
   remote: .
   specs:
-    humble (0.0.1374296616)
+    humble (0.0.1374362129)
       sequel
 
 GEM