Browse Source

tests for close and add IsClosed() method

xormplus 8 years ago
parent
commit
289d3491c3
2 changed files with 28 additions and 1 deletions
  1. 5 1
      session.go
  2. 23 0
      session_test.go

+ 5 - 1
session.go

@@ -98,11 +98,15 @@ func (session *Session) Close() {
 		}
 		session.Tx = nil
 		session.stmtCache = nil
-		session.Init()
 		session.db = nil
 	}
 }
 
+// IsClosed returns if session is closed
+func (session *Session) IsClosed() bool {
+	return session.db == nil
+}
+
 func (session *Session) resetStatement() {
 	if session.AutoResetStatement {
 		session.Statement.Init()

+ 23 - 0
session_test.go

@@ -0,0 +1,23 @@
+// Copyright 2017 The Xorm Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package xorm
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestClose(t *testing.T) {
+	assert.NoError(t, prepareEngine())
+
+	sess1 := testEngine.NewSession()
+	sess1.Close()
+	assert.True(t, sess1.IsClosed())
+
+	sess2 := testEngine.Where("a = ?", 1)
+	sess2.Close()
+	assert.True(t, sess2.IsClosed())
+}