From 9ba5b0154b3506c380641fd12533b71b290f947e Mon Sep 17 00:00:00 2001
From: Semyon Krestyaninov <krestyaninov@perx.ru>
Date: Mon, 31 Mar 2025 18:26:10 +0000
Subject: [PATCH] =?UTF-8?q?chore(core):=20=D0=A0=D0=B5=D1=84=D0=B0=D0=BA?=
 =?UTF-8?q?=D1=82=D0=BE=D1=80=D0=B8=D0=BD=D0=B3=20=D1=82=D0=B5=D1=81=D1=82?=
 =?UTF-8?q?=D0=BE=D0=B2:=20=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=20?=
 =?UTF-8?q?=D0=B8=D0=B7=D0=B1=D1=8B=D1=82=D0=BE=D1=87=D0=BD=D1=8B=D0=B9=20?=
 =?UTF-8?q?=D0=B2=D1=8B=D0=B7=D0=BE=D0=B2`AssertExpectations`=20=D0=BD?=
 =?UTF-8?q?=D0=B0=20=D0=B2=D1=81=D1=82=D1=80=D0=BE=D0=B5=D0=BD=D1=8E=D1=8E?=
 =?UTF-8?q?=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BC?=
 =?UTF-8?q?=D0=BE=D0=BA-=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Issue: #3003
---
 logs/zap/buffered_write_syncer_test.go        |  15 +-
 logs/zap/example_test.go                      |   5 +-
 .../middleware/caching_middleware_test.go     |  33 +--
 .../middleware/caching_middleware_test.go     |  15 +-
 .../middleware/caching_middleware_test.go     |  60 ++---
 pkg/delivery/service/service_test.go          |   3 +-
 .../middleware/caching_middleware_test.go     |  33 +--
 .../middleware/caching_middleware_test.go     |  12 +-
 .../middleware/caching_middleware_test.go     | 120 ++++------
 .../middleware/caching_middleware_test.go     |  15 +-
 .../middleware/caching_middleware_test.go     |  15 +-
 pkg/operation/operation_test.go               |   3 +-
 .../middleware/caching_middleware_test.go     |  11 +-
 pkg/references/field_test.go                  |  17 +-
 .../middleware/caching_middleware_test.go     |  18 +-
 pkg/roles/role_test.go                        |  23 +-
 pkg/setup/collection_test.go                  |  12 +-
 pkg/setup/setup_test.go                       | 157 +++----------
 .../middleware/caching_middleware_test.go     |  21 +-
 .../middleware/caching_middleware_test.go     |  15 +-
 template/builder_test.go                      | 210 +++++++++++-------
 21 files changed, 306 insertions(+), 507 deletions(-)

diff --git a/logs/zap/buffered_write_syncer_test.go b/logs/zap/buffered_write_syncer_test.go
index 073663ed..92de2812 100644
--- a/logs/zap/buffered_write_syncer_test.go
+++ b/logs/zap/buffered_write_syncer_test.go
@@ -13,7 +13,7 @@ import (
 )
 
 func TestBufferedWriteSyncer_Write(t *testing.T) {
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -33,11 +33,10 @@ func TestBufferedWriteSyncer_Write(t *testing.T) {
 	err = ws.Stop()
 	require.NoError(t, err)
 
-	service.AssertExpectations(t)
 }
 
 func TestBufferedWriteSyncer_Write_Concurrent(t *testing.T) {
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -60,11 +59,10 @@ func TestBufferedWriteSyncer_Write_Concurrent(t *testing.T) {
 	wg.Wait()
 	require.NoError(t, ws.Stop())
 
-	service.AssertExpectations(t)
 }
 
 func TestBufferedWriteSyncer_Flush(t *testing.T) {
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -84,11 +82,10 @@ func TestBufferedWriteSyncer_Flush(t *testing.T) {
 
 	require.NoError(t, ws.Stop())
 
-	service.AssertExpectations(t)
 }
 
 func TestBufferedWriteSyncer_MaxBufferSize(t *testing.T) {
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -105,11 +102,10 @@ func TestBufferedWriteSyncer_MaxBufferSize(t *testing.T) {
 
 	require.NoError(t, ws.Stop())
 
-	service.AssertExpectations(t)
 }
 
 func TestBufferedWriteSyncer_FlushInterval(t *testing.T) {
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -127,5 +123,4 @@ func TestBufferedWriteSyncer_FlushInterval(t *testing.T) {
 	time.Sleep(3 * time.Second) // ждем, пока сработает интервал
 	require.NoError(t, ws.Stop())
 
-	service.AssertExpectations(t)
 }
diff --git a/logs/zap/example_test.go b/logs/zap/example_test.go
index dc182fb0..90f7c015 100644
--- a/logs/zap/example_test.go
+++ b/logs/zap/example_test.go
@@ -45,7 +45,7 @@ func TestExample(t *testing.T) {
 		},
 	}
 
-	service := &logmocks.Service{}
+	service := logmocks.NewService(t)
 	service.On("Log", mock.Anything, mock.Anything).
 		Return(nil).
 		Run(func(args mock.Arguments) {
@@ -60,7 +60,7 @@ func TestExample(t *testing.T) {
 		}).
 		Once()
 
-	usersService := &usersmocks.Users{}
+	usersService := usersmocks.NewUsers(t)
 	usersService.On("GetByIdentity", mock.Anything, "74d90aaf").Return(user, nil).Once()
 
 	factory := auth.PrincipalFactory{Users: usersService}
@@ -93,5 +93,4 @@ func TestExample(t *testing.T) {
 	err := ws.Stop()
 	require.NoError(t, err)
 
-	service.AssertExpectations(t)
 }
diff --git a/pkg/clients/middleware/caching_middleware_test.go b/pkg/clients/middleware/caching_middleware_test.go
index 821d2cb2..4ea40c58 100644
--- a/pkg/clients/middleware/caching_middleware_test.go
+++ b/pkg/clients/middleware/caching_middleware_test.go
@@ -29,7 +29,7 @@ func TestClientsCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		cs := &csmocks.Clients{}
+		cs := csmocks.NewClients(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -48,11 +48,10 @@ func TestClientsCache(t *testing.T) {
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кэша при запросе по ClientID.")
 		assert.NotSame(t, v2, v3)
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("GetBy from cache", func(t *testing.T) {
-		cs := &csmocks.Clients{}
+		cs := csmocks.NewClients(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -71,11 +70,10 @@ func TestClientsCache(t *testing.T) {
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кэша, после запроса Get.")
 		assert.NotSame(t, v2, v3)
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("List", func(t *testing.T) {
-		cs := &csmocks.Clients{}
+		cs := csmocks.NewClients(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -89,13 +87,12 @@ func TestClientsCache(t *testing.T) {
 		assert.Equal(t, vl1[0], vl2[0], "Ожидается получение объектов из кэша, после повторного запроса.")
 		assert.NotSame(t, vl1[0], vl2[0])
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 
 		t.Run("After Update", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -146,11 +143,10 @@ func TestClientsCache(t *testing.T) {
 			assert.Equal(t, v4, v5, "Ожидается что после обновления объект был удален из кеша и после запроса Get в кеш попал объект запрошенный заново из сервиса.")
 			assert.NotSame(t, v4, v5)
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Update(List)", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -176,11 +172,10 @@ func TestClientsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается получение объектов из кэша, после повторного запроса.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -229,11 +224,10 @@ func TestClientsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается что после удаление из хранилища объекты были удалены из кэша.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Delete(List)", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -258,11 +252,10 @@ func TestClientsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается что после удаление из хранилища объекты были удалены из кэша.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -288,11 +281,10 @@ func TestClientsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 2, "Ожидается что после создания нового объекта кеш будет очищен и объекты запрошены заново из сервиса.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Enable", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -342,11 +334,10 @@ func TestClientsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается что после активации объекта, кеш будет очищен и объекты будут запрошены заново из сервиса.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After Enable(List)", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -373,11 +364,10 @@ func TestClientsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается что после активации объекта, кеш будет очищен и объекты будут запрошены заново из сервиса.")
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			cs := &csmocks.Clients{}
+			cs := csmocks.NewClients(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -399,7 +389,6 @@ func TestClientsCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			cs.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/collaborators/middleware/caching_middleware_test.go b/pkg/collaborators/middleware/caching_middleware_test.go
index 6b96d0a8..2ba2d20c 100644
--- a/pkg/collaborators/middleware/caching_middleware_test.go
+++ b/pkg/collaborators/middleware/caching_middleware_test.go
@@ -29,7 +29,7 @@ func TestCollaboratorsCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		cs := &csmocks.Collaborators{}
+		cs := csmocks.NewCollaborators(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -42,11 +42,10 @@ func TestCollaboratorsCache(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t, spaceRole, rl)
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("ListCollaborators from cache", func(t *testing.T) {
-		cs := &csmocks.Collaborators{}
+		cs := csmocks.NewCollaborators(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -59,11 +58,10 @@ func TestCollaboratorsCache(t *testing.T) {
 		assert.Equal(t, v1[0], v2[0], "Ожидается получение объектов из кэша при повторном запросе.")
 		assert.NotSame(t, v1[0], v2[0])
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("ListSpaces from cache", func(t *testing.T) {
-		cs := &csmocks.Collaborators{}
+		cs := csmocks.NewCollaborators(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -76,12 +74,11 @@ func TestCollaboratorsCache(t *testing.T) {
 		assert.Equal(t, v1[0], v2[0], "Ожидается получение объектов из кэша при повторном запросе.")
 		assert.NotSame(t, v1[0], v2[0])
 
-		cs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Remove", func(t *testing.T) {
-			cs := &csmocks.Collaborators{}
+			cs := csmocks.NewCollaborators(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -134,11 +131,10 @@ func TestCollaboratorsCache(t *testing.T) {
 			assert.EqualError(t, err, "not found", "Ожидается удаление данных из кеша, и получение ошибки от сервиса")
 			assert.Nil(t, ls)
 
-			cs.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			cs := &csmocks.Collaborators{}
+			cs := csmocks.NewCollaborators(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(cs)
 
@@ -191,7 +187,6 @@ func TestCollaboratorsCache(t *testing.T) {
 			assert.EqualError(t, err, "not found", "Ожидается удаление данных из кеша, и получение ошибки от сервиса")
 			assert.Nil(t, ls)
 
-			cs.AssertExpectations(t)
 		})
 	})
 
diff --git a/pkg/collections/middleware/caching_middleware_test.go b/pkg/collections/middleware/caching_middleware_test.go
index 24646008..d5387b82 100644
--- a/pkg/collections/middleware/caching_middleware_test.go
+++ b/pkg/collections/middleware/caching_middleware_test.go
@@ -33,8 +33,8 @@ func TestCollections_Cache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		col := &colsmocks.Collections{}
-		env := &envmocks.Environments{}
+		col := colsmocks.NewCollections(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -54,13 +54,11 @@ func TestCollections_Cache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по alias окружения.")
 		assert.NotSame(t, v3, v2)
 
-		env.AssertExpectations(t)
-		col.AssertExpectations(t)
 	})
 
 	t.Run("Get from cache(by Alias)", func(t *testing.T) {
-		col := &colsmocks.Collections{}
-		env := &envmocks.Environments{}
+		col := colsmocks.NewCollections(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -80,13 +78,11 @@ func TestCollections_Cache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по ID окружения.")
 		assert.NotSame(t, v3, v2)
 
-		env.AssertExpectations(t)
-		col.AssertExpectations(t)
 	})
 
 	t.Run("Get from cache with options", func(t *testing.T) {
-		col := &colsmocks.Collections{}
-		env := &envmocks.Environments{}
+		col := colsmocks.NewCollections(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -100,8 +96,6 @@ func TestCollections_Cache(t *testing.T) {
 		_, err := svc.Get(ctx, spaceID, envID, colID, []*collections.GetOptions{{DisableSchemaIncludes: true}}...)
 		require.NoError(t, err)
 
-		env.AssertExpectations(t)
-		col.AssertExpectations(t)
 	})
 
 	//t.Run("List from cache", func(t *testing.T) {
@@ -131,8 +125,8 @@ func TestCollections_Cache(t *testing.T) {
 	//})
 
 	t.Run("List", func(t *testing.T) {
-		col := &colsmocks.Collections{}
-		env := &envmocks.Environments{}
+		col := colsmocks.NewCollections(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -145,14 +139,12 @@ func TestCollections_Cache(t *testing.T) {
 		_, err = svc.List(ctx, spaceID, envID, nil)
 		require.NoError(t, err)
 
-		env.AssertExpectations(t)
-		col.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Update", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -198,13 +190,11 @@ func TestCollections_Cache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl1[0], vl2[0], "Ожидает что после обновления элементы будут запрошены заново из сервиса.")
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 
 		t.Run("After Update(by Alias)", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -254,13 +244,11 @@ func TestCollections_Cache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl1[0], vl4[0], "Ожидает что после обновления элементы будут запрошены заново из сервиса.")
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 
 		t.Run("After Set Schema", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -322,13 +310,11 @@ func TestCollections_Cache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Equal(t, vl4[0], vl5[0], "Ожидается получение объектов из кеша по Alias окружения..")
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -386,13 +372,11 @@ func TestCollections_Cache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидает что элемент был удален из кэша и получена ошибка от сервиса.")
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -437,13 +421,11 @@ func TestCollections_Cache(t *testing.T) {
 			assert.Len(t, vl5, 2)
 			assert.Equal(t, vl4[0], vl5[0], "Ожидается получение объектов из кеша по Alias окружения..")
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			col := &colsmocks.Collections{}
-			env := &envmocks.Environments{}
+			col := colsmocks.NewCollections(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), env)(col)
 
@@ -468,8 +450,6 @@ func TestCollections_Cache(t *testing.T) {
 			assert.Equal(t, v3, v2)
 			assert.NotSame(t, v3, v2)
 
-			env.AssertExpectations(t)
-			col.AssertExpectations(t)
 		})
 	})
 
diff --git a/pkg/delivery/service/service_test.go b/pkg/delivery/service/service_test.go
index 88bcc16f..61e151aa 100644
--- a/pkg/delivery/service/service_test.go
+++ b/pkg/delivery/service/service_test.go
@@ -36,7 +36,7 @@ func Test_deliveryService_ListLocales(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			localesService := &mocks.Locales{}
+			localesService := mocks.NewLocales(t)
 			if tt.mockcall != nil {
 				tt.mockcall(localesService)
 			}
@@ -51,7 +51,6 @@ func Test_deliveryService_ListLocales(t *testing.T) {
 			}
 			assert.NoError(t, err)
 			assert.Equal(t, tt.wantLocales, gotLocales)
-			localesService.AssertExpectations(t)
 		})
 	}
 }
diff --git a/pkg/environments/middleware/caching_middleware_test.go b/pkg/environments/middleware/caching_middleware_test.go
index cbac3963..261d288e 100644
--- a/pkg/environments/middleware/caching_middleware_test.go
+++ b/pkg/environments/middleware/caching_middleware_test.go
@@ -29,7 +29,7 @@ func TestEnvironmentsCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		envs := &mocksenvironments.Environments{}
+		envs := mocksenvironments.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -48,11 +48,10 @@ func TestEnvironmentsCache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по alias окружения.")
 		assert.NotSame(t, v3, v2)
 
-		envs.AssertExpectations(t)
 	})
 
 	t.Run("Get from cache(by Alias)", func(t *testing.T) {
-		envs := &mocksenvironments.Environments{}
+		envs := mocksenvironments.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -71,11 +70,10 @@ func TestEnvironmentsCache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по ID окружения.")
 		assert.NotSame(t, v3, v2)
 
-		envs.AssertExpectations(t)
 	})
 
 	t.Run("List from cache", func(t *testing.T) {
-		envs := &mocksenvironments.Environments{}
+		envs := mocksenvironments.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -89,12 +87,11 @@ func TestEnvironmentsCache(t *testing.T) {
 		assert.Equal(t, vl1[0], vl2[0], "Ожидается получение объектов из кэша.")
 		assert.NotSame(t, vl1[0], vl2[0])
 
-		envs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After SetAlias", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -137,11 +134,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидает что объекты будут удалены из кэша и запрошены из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After RemoveAlias", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -189,11 +185,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидает что объекты будут удалены из кэша и запрошены из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After Update", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -244,11 +239,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидает что объекты будут удалены из кэша и запрошены из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After Update(List)", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -272,11 +266,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидает что объекты будут удалены из кэша и запрошены из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -324,11 +317,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 0, "Ожидает что объекты будут удалены из кэша и запрошены из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -352,11 +344,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 2, "Ожидает что объекты были удалены из кэша и запрошены заново из сервиса.")
 
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After size exceeded", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(1, ttl))(envs)
 
@@ -379,11 +370,10 @@ func TestEnvironmentsCache(t *testing.T) {
 			assert.NotSame(t, v2, v5, "Ожидает что объект был удален из кэша и будет запрошен заново из сервиса.")
 			assert.Equal(t, v2, v5)
 			assert.NotSame(t, v2, v5)
-			envs.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			envs := &mocksenvironments.Environments{}
+			envs := mocksenvironments.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(envs)
 
@@ -405,7 +395,6 @@ func TestEnvironmentsCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			envs.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/invitations/middleware/caching_middleware_test.go b/pkg/invitations/middleware/caching_middleware_test.go
index 46d0a443..3f8150f3 100644
--- a/pkg/invitations/middleware/caching_middleware_test.go
+++ b/pkg/invitations/middleware/caching_middleware_test.go
@@ -30,7 +30,7 @@ func TestLocalesCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from Cache", func(t *testing.T) {
-		inv := &invmocks.Invitations{}
+		inv := invmocks.NewInvitations(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv)
 
@@ -44,12 +44,11 @@ func TestLocalesCache(t *testing.T) {
 		assert.Equal(t, v1, v2, "Ожидается что при повторном запросе объект будет получен из кэша.")
 		assert.NotSame(t, v1, v2)
 
-		inv.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("Get from Accept", func(t *testing.T) {
-			inv := &invmocks.Invitations{}
+			inv := invmocks.NewInvitations(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv)
 
@@ -73,11 +72,10 @@ func TestLocalesCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается что после подтверждения объект будет удален из кэша и получена ошибка от сервиса.")
 
-			inv.AssertExpectations(t)
 		})
 
 		t.Run("Get from Delete", func(t *testing.T) {
-			inv := &invmocks.Invitations{}
+			inv := invmocks.NewInvitations(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv)
 
@@ -101,11 +99,10 @@ func TestLocalesCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается что после удаления кэша будет очищен и получена ошибка от сервиса.")
 
-			inv.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			inv := &invmocks.Invitations{}
+			inv := invmocks.NewInvitations(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(inv)
 
@@ -129,7 +126,6 @@ func TestLocalesCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			inv.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/items/middleware/caching_middleware_test.go b/pkg/items/middleware/caching_middleware_test.go
index 2c3acd7b..3ff9aab7 100644
--- a/pkg/items/middleware/caching_middleware_test.go
+++ b/pkg/items/middleware/caching_middleware_test.go
@@ -34,8 +34,8 @@ func TestItemsCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		itms := &itmsmocks.Items{}
-		env := &envmocks.Environments{}
+		itms := itmsmocks.NewItems(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -53,13 +53,11 @@ func TestItemsCache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по alias окружения.")
 		require.NoError(t, err)
 
-		env.AssertExpectations(t)
-		itms.AssertExpectations(t)
 	})
 
 	t.Run("Get from cache(by Alias)", func(t *testing.T) {
-		itms := &itmsmocks.Items{}
-		env := &envmocks.Environments{}
+		itms := itmsmocks.NewItems(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -78,13 +76,11 @@ func TestItemsCache(t *testing.T) {
 		assert.Equal(t, v3, v2, "Ожидается получение объекта из кеша, при запросе того же объекта по ID окружения.")
 		require.NoError(t, err)
 
-		env.AssertExpectations(t)
-		itms.AssertExpectations(t)
 	})
 
 	t.Run("GetPublished from cache", func(t *testing.T) {
-		itms := &itmsmocks.Items{}
-		env := &envmocks.Environments{}
+		itms := itmsmocks.NewItems(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -102,13 +98,11 @@ func TestItemsCache(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кеша, при запросе того же объекта по alias окружения.")
 
-		env.AssertExpectations(t)
-		itms.AssertExpectations(t)
 	})
 
 	t.Run("GetPublished from cache(by Alias)", func(t *testing.T) {
-		itms := &itmsmocks.Items{}
-		env := &envmocks.Environments{}
+		itms := itmsmocks.NewItems(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -126,8 +120,6 @@ func TestItemsCache(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кеша, при запросе того же объекта по ID окружения.")
 
-		env.AssertExpectations(t)
-		itms.AssertExpectations(t)
 	})
 
 	t.Run("GetPublished from cache (with different locales)", func(t *testing.T) {
@@ -136,8 +128,8 @@ func TestItemsCache(t *testing.T) {
 			loc2 = "loc2"
 		)
 
-		itms := &itmsmocks.Items{}
-		env := &envmocks.Environments{}
+		itms := itmsmocks.NewItems(t)
+		env := envmocks.NewEnvironments(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -167,14 +159,12 @@ func TestItemsCache(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t, v2loc2, v3loc2, "Ожидается получение объекта c локализацией loc2 из кеша, при запросе того же объекта по ID окружения.")
 
-		env.AssertExpectations(t)
-		itms.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Update(Get)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			env.On("Get", mock.Anything, spaceID, envID).Return(&environments.Environment{ID: envID, SpaceID: spaceID, Aliases: []string{envAlias}}, nil).Once()
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
@@ -201,13 +191,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после обновления и получение его заново из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Archive(Get)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -234,13 +222,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после архивации и получение из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Publish(Get)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -266,13 +252,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после публикации и получение заново из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -306,13 +290,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается удаление из кэша после удаления объекта и получение ошибки от сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Unpublish(Get)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -339,13 +321,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после снятия с публикации и получение заново из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After CheckoutRevision(Get)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -372,13 +352,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после смены версии и получение из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Publish(Get by Alias)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -405,13 +383,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotSame(t, v3, v2, "Ожидается удаление объекта из кэша после публикации и получение из сервиса по alias окружения.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Update(Get by Alias)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -438,13 +414,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша при обновлении и получение из сервиса по alias окружения.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Unpublish(Get by Alias)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -471,13 +445,11 @@ func TestItemsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v3, v2, "Ожидается удаление объекта из кэша после снятия с публикации и получение из сервиса по alias окружения.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Update(GetPublished)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -512,13 +484,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается удаление объекта из кэша по alias окружения после его обновления и получение ошибки от сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Archive(GetPublished)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -553,13 +523,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается удаление объекта из кэша по alias окружения после его архивации и получение ошибки от сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Delete(GetPublished)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -594,13 +562,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается очистка кеша по alias окружения после удаления объекта и получение ошибки от сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Unpublish(GetPublished)", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -635,13 +601,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается удаление объекта из кэша по alias окружения после снятия с публикации и получение ошибки от сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After Unpublish by Alias", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -683,13 +647,11 @@ func TestItemsCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualError(t, err, "not found", "Ожидается удаление объекта из кэша и получение ошибки от сервиса из сервиса.")
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			itms := &itmsmocks.Items{}
-			env := &envmocks.Environments{}
+			itms := itmsmocks.NewItems(t)
+			env := envmocks.NewEnvironments(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl), cache.NewMemoryCache(size, ttl), env)(itms)
 
@@ -713,8 +675,6 @@ func TestItemsCache(t *testing.T) {
 			assert.NotSame(t, v2, v3, "Ожидается удаление объекта из кэша и получение из сервиса.")
 			assert.Equal(t, v2, v3)
 
-			env.AssertExpectations(t)
-			itms.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/locales/middleware/caching_middleware_test.go b/pkg/locales/middleware/caching_middleware_test.go
index 25b542c8..b6b68258 100644
--- a/pkg/locales/middleware/caching_middleware_test.go
+++ b/pkg/locales/middleware/caching_middleware_test.go
@@ -26,7 +26,7 @@ func TestLocalesCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("List from Cache", func(t *testing.T) {
-		loc := &locmocks.Locales{}
+		loc := locmocks.NewLocales(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc)
 
@@ -40,12 +40,11 @@ func TestLocalesCache(t *testing.T) {
 		assert.Equal(t, vl1[0], vl2[0], "Ожидается что при повторном запросе объекты будут получены из кэша.")
 		assert.NotSame(t, vl1[0], vl2[0])
 
-		loc.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Delete", func(t *testing.T) {
-			loc := &locmocks.Locales{}
+			loc := locmocks.NewLocales(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc)
 
@@ -70,11 +69,10 @@ func TestLocalesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 0, "Ожидается что после удаление объекты будут удалены из кеша.")
 
-			loc.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			loc := &locmocks.Locales{}
+			loc := locmocks.NewLocales(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc)
 
@@ -103,11 +101,10 @@ func TestLocalesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 2, "Ожидается что после создания нового объекта данные будут удалены из кеша и получены из сервиса.")
 
-			loc.AssertExpectations(t)
 		})
 
 		t.Run("After Update", func(t *testing.T) {
-			loc := &locmocks.Locales{}
+			loc := locmocks.NewLocales(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc)
 
@@ -136,11 +133,10 @@ func TestLocalesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 2, "Ожидается что после обновления объекта данные будут удалены из кеша и получены из сервиса.")
 
-			loc.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			loc := &locmocks.Locales{}
+			loc := locmocks.NewLocales(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(loc)
 
@@ -163,7 +159,6 @@ func TestLocalesCache(t *testing.T) {
 			assert.Equal(t, vl2[0], vl3[0])
 			assert.NotSame(t, vl2[0], vl3[0])
 
-			loc.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/members/middleware/caching_middleware_test.go b/pkg/members/middleware/caching_middleware_test.go
index ea09d522..afb37c2e 100644
--- a/pkg/members/middleware/caching_middleware_test.go
+++ b/pkg/members/middleware/caching_middleware_test.go
@@ -25,7 +25,7 @@ func TestMembersCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		mbrs := &mocksmembers.Members{}
+		mbrs := mocksmembers.NewMembers(t)
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs)
 
 		mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once()
@@ -37,12 +37,11 @@ func TestMembersCache(t *testing.T) {
 		require.NoError(t, err)
 		assert.Equal(t, v1, v2, "Ожидается получение объекта из кэша, после повторного запроса get.")
 
-		mbrs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Set", func(t *testing.T) {
-			mbrs := &mocksmembers.Members{}
+			mbrs := mocksmembers.NewMembers(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs)
 
 			mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once()
@@ -64,11 +63,10 @@ func TestMembersCache(t *testing.T) {
 			v3, err := svc.Get(ctx, orgId, userId)
 			require.NoError(t, err)
 			assert.NotEqual(t, v2, v3, "Ожидается удаление объекта из кэша и получение заново из сервиса.")
-			mbrs.AssertExpectations(t)
 		})
 
 		t.Run("After Remove", func(t *testing.T) {
-			mbrs := &mocksmembers.Members{}
+			mbrs := mocksmembers.NewMembers(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs)
 
 			mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once()
@@ -91,11 +89,10 @@ func TestMembersCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v2, v3, "Ожидается удаление объекта из кэша после удаления из хранилища и получение заново из сервиса.")
 
-			mbrs.AssertExpectations(t)
 		})
 
 		t.Run("After RemoveAll", func(t *testing.T) {
-			mbrs := &mocksmembers.Members{}
+			mbrs := mocksmembers.NewMembers(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs)
 
 			mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once()
@@ -119,11 +116,10 @@ func TestMembersCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v2, v3, "Ожидается удаление объекта из кэша после удаления из хранилища и получение заново из сервиса.")
 
-			mbrs.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			mbrs := &mocksmembers.Members{}
+			mbrs := mocksmembers.NewMembers(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(mbrs)
 
 			mbrs.On("Get", mock.Anything, orgId, userId).Return(members.RoleOwner, nil).Once()
@@ -142,7 +138,6 @@ func TestMembersCache(t *testing.T) {
 			v3, err := svc.Get(ctx, orgId, userId)
 			require.NoError(t, err)
 			assert.NotEqual(t, v2, v3, "Ожидается удаление объекта из кэша после истечения ttl и получение заново из сервиса.")
-			mbrs.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/operation/operation_test.go b/pkg/operation/operation_test.go
index b5973170..e34ae655 100644
--- a/pkg/operation/operation_test.go
+++ b/pkg/operation/operation_test.go
@@ -26,6 +26,7 @@ func TestOperation(t *testing.T) {
 	assert.Less(t, time.Since(op.CreatedAt()), time.Second)
 
 	op.SetRetention(time.Nanosecond)
+	time.Sleep(time.Nanosecond)
 	assert.True(t, op.IsExpired())
 
 	op.SetCancelFunc(func() {
@@ -35,7 +36,7 @@ func TestOperation(t *testing.T) {
 
 func TestOperation_Wait(t *testing.T) {
 	var count int
-	client := &mocks.OperationServiceClient{}
+	client := mocks.NewOperationServiceClient(t)
 	call := client.On("Get", mock.Anything, mock.Anything, mock.Anything)
 	call.Run(func(args mock.Arguments) {
 		r := args.Get(1).(*common.GetOperationRequest)
diff --git a/pkg/organizations/middleware/caching_middleware_test.go b/pkg/organizations/middleware/caching_middleware_test.go
index f9999cfc..0c1877cc 100644
--- a/pkg/organizations/middleware/caching_middleware_test.go
+++ b/pkg/organizations/middleware/caching_middleware_test.go
@@ -27,7 +27,7 @@ func TestOrganizationsCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		orgs := &mocksorgs.Organizations{}
+		orgs := mocksorgs.NewOrganizations(t)
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs)
 
 		orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once()
@@ -40,12 +40,11 @@ func TestOrganizationsCache(t *testing.T) {
 		assert.Equal(t, v1, v2, "Ожидается получение объекта из кэша.")
 		assert.NotSame(t, v1, v2)
 
-		orgs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Update", func(t *testing.T) {
-			orgs := &mocksorgs.Organizations{}
+			orgs := mocksorgs.NewOrganizations(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs)
 
 			orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once()
@@ -68,11 +67,10 @@ func TestOrganizationsCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, v2, v3, "Ожидается удаление объекта из кэша после обновления и получение заново из сервиса.")
 
-			orgs.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			orgs := &mocksorgs.Organizations{}
+			orgs := mocksorgs.NewOrganizations(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs)
 
 			orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once()
@@ -98,7 +96,7 @@ func TestOrganizationsCache(t *testing.T) {
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			orgs := &mocksorgs.Organizations{}
+			orgs := mocksorgs.NewOrganizations(t)
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(orgs)
 
 			orgs.On("Get", mock.Anything, orgId).Return(&organizations.Organization{ID: orgId, Name: "Organization"}, nil).Once()
@@ -121,7 +119,6 @@ func TestOrganizationsCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			orgs.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/references/field_test.go b/pkg/references/field_test.go
index ac9d5c03..d5d34226 100644
--- a/pkg/references/field_test.go
+++ b/pkg/references/field_test.go
@@ -170,26 +170,23 @@ func TestReferenceField_PreSave(t *testing.T) {
 	rt := NewReferenceType()
 
 	t.Run("Nil Value", func(t *testing.T) {
-		svc := &mocks.Items{}
+		svc := mocks.NewItems(t)
 		itemCtx := &items.Context{Items: svc, SpaceID: "sp", EnvID: "env"}
 		f := Field(nil)
 		_, _, err := rt.PreSave(ctx, f, nil, itemCtx)
 		require.NoError(t, err)
-		svc.AssertExpectations(t)
 	})
 	t.Run("Nil Context", func(t *testing.T) {
-		svc := &mocks.Items{}
 		f := Field(nil)
 		ref := &Reference{
 			ID: "111", CollectionID: "media",
 		}
 		_, _, err := rt.PreSave(ctx, f, ref, nil)
 		require.NoError(t, err)
-		svc.AssertExpectations(t)
 	})
 	t.Run("Referenced Items Exist", func(t *testing.T) {
 		t.Run("Correct", func(t *testing.T) {
-			svc := &mocks.Items{}
+			svc := mocks.NewItems(t)
 			itemCtx := &items.Context{Items: svc, SpaceID: "sp", EnvID: "env"}
 
 			f := Field(nil)
@@ -198,10 +195,9 @@ func TestReferenceField_PreSave(t *testing.T) {
 			}
 			_, _, err := rt.PreSave(ctx, f, ref, itemCtx)
 			require.NoError(t, err)
-			svc.AssertExpectations(t)
 		})
 		t.Run("Item Not Found", func(t *testing.T) {
-			svc := &mocks.Items{}
+			svc := mocks.NewItems(t)
 
 			itemCtx := &items.Context{Items: svc, SpaceID: "sp", EnvID: "env"}
 
@@ -211,12 +207,11 @@ func TestReferenceField_PreSave(t *testing.T) {
 			}
 			_, _, err := rt.PreSave(ctx, f, ref, itemCtx)
 			require.NoError(t, err)
-			svc.AssertExpectations(t)
 		})
 	})
 	t.Run("Allowed Types", func(t *testing.T) {
 		t.Run("Correct", func(t *testing.T) {
-			svc := &mocks.Items{}
+			svc := mocks.NewItems(t)
 
 			itemCtx := &items.Context{Items: svc, SpaceID: "sp", EnvID: "env"}
 
@@ -228,10 +223,9 @@ func TestReferenceField_PreSave(t *testing.T) {
 
 			_, _, err := rt.PreSave(ctx, f, ref, itemCtx)
 			require.NoError(t, err)
-			svc.AssertExpectations(t)
 		})
 		t.Run("Not Allowed", func(t *testing.T) {
-			svc := &mocks.Items{}
+			svc := mocks.NewItems(t)
 			f := Field([]string{"cars", "motorbikes"})
 			itemCtx := &items.Context{Items: svc, SpaceID: "sp", EnvID: "env"}
 			ref := &Reference{
@@ -240,7 +234,6 @@ func TestReferenceField_PreSave(t *testing.T) {
 			_, _, err := rt.PreSave(ctx, f, ref, itemCtx)
 			require.Error(t, err)
 			assert.Equal(t, "usage of collection \"media\" not allowed", err.Error())
-			svc.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/roles/middleware/caching_middleware_test.go b/pkg/roles/middleware/caching_middleware_test.go
index b9ac8ec8..6f741281 100644
--- a/pkg/roles/middleware/caching_middleware_test.go
+++ b/pkg/roles/middleware/caching_middleware_test.go
@@ -28,7 +28,7 @@ func TestRolesCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		rl := &rsmocks.Roles{}
+		rl := rsmocks.NewRoles(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -42,11 +42,10 @@ func TestRolesCache(t *testing.T) {
 		assert.Equal(t, v1, v2, "Ожидается при повторном запросе получение объекта из кэша.")
 		assert.NotSame(t, v1, v2)
 
-		rl.AssertExpectations(t)
 	})
 
 	t.Run("List from cache", func(t *testing.T) {
-		rl := &rsmocks.Roles{}
+		rl := rsmocks.NewRoles(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -60,12 +59,11 @@ func TestRolesCache(t *testing.T) {
 		assert.Equal(t, vl1[0], vl2[0], "Ожидается при повторном запросе получение объектов из кэша.")
 		assert.NotSame(t, vl1[0], vl2[0])
 
-		rl.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Update", func(t *testing.T) {
-			rl := &rsmocks.Roles{}
+			rl := rsmocks.NewRoles(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -104,11 +102,10 @@ func TestRolesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается что кеш объектов был удален после обновления объекта.")
 
-			rl.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			rl := &rsmocks.Roles{}
+			rl := rsmocks.NewRoles(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -149,11 +146,10 @@ func TestRolesCache(t *testing.T) {
 			assert.EqualError(t, err, "not found", "Ожидается что после удаления кеш объекта был удален и получена ошибка сервиса.")
 			assert.Nil(t, vl3)
 
-			rl.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			rl := &rsmocks.Roles{}
+			rl := rsmocks.NewRoles(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -178,11 +174,10 @@ func TestRolesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 2, "Ожидает что после создания нового объекта,  кеш будет очищен и объекты запрошены заново из сервиса.")
 
-			rl.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			rl := &rsmocks.Roles{}
+			rl := rsmocks.NewRoles(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(rl)
 
@@ -205,7 +200,6 @@ func TestRolesCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			rl.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/roles/role_test.go b/pkg/roles/role_test.go
index ca794b18..81f95a60 100644
--- a/pkg/roles/role_test.go
+++ b/pkg/roles/role_test.go
@@ -39,13 +39,6 @@ func TestRoleCanAccessEnvironment(t *testing.T) {
 			name: "glob env in role test: e*",
 			args: args{
 				ctx: context.Background(),
-				envscall: func(envsservice *mocksenvs.Environments) {
-					envsservice.On("Get", mock.Anything, mock.Anything, mock.Anything).Return(&environments.Environment{
-						ID:      "env1",
-						SpaceID: "space",
-						Aliases: []string{"master"},
-					}, nil).Once()
-				},
 				role: &Role{
 					ID:           "1",
 					SpaceID:      "space",
@@ -60,13 +53,6 @@ func TestRoleCanAccessEnvironment(t *testing.T) {
 			name: "glob env in role test: *n*",
 			args: args{
 				ctx: context.Background(),
-				envscall: func(envsservice *mocksenvs.Environments) {
-					envsservice.On("Get", mock.Anything, mock.Anything, mock.Anything).Return(&environments.Environment{
-						ID:      "env1",
-						SpaceID: "space",
-						Aliases: []string{"master"},
-					}, nil).Once()
-				},
 				role: &Role{
 					ID:           "1",
 					SpaceID:      "space",
@@ -123,13 +109,6 @@ func TestRoleCanAccessEnvironment(t *testing.T) {
 			name: "glob env in role test: *",
 			args: args{
 				ctx: context.Background(),
-				envscall: func(envsservice *mocksenvs.Environments) {
-					envsservice.On("Get", mock.Anything, mock.Anything, mock.Anything).Return(&environments.Environment{
-						ID:      "env1",
-						SpaceID: "space",
-						Aliases: []string{"master"},
-					}, nil).Once()
-				},
 				role: &Role{
 					ID:           "1",
 					SpaceID:      "space",
@@ -164,7 +143,7 @@ func TestRoleCanAccessEnvironment(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			envsservice := &mocksenvs.Environments{}
+			envsservice := mocksenvs.NewEnvironments(t)
 			if tt.args.envscall != nil {
 				tt.args.envscall(envsservice)
 			}
diff --git a/pkg/setup/collection_test.go b/pkg/setup/collection_test.go
index f1d9e4da..8e0537c7 100644
--- a/pkg/setup/collection_test.go
+++ b/pkg/setup/collection_test.go
@@ -112,9 +112,6 @@ func TestCollections_InstallCollections(t *testing.T) {
 				svc.On("Get", mock.Anything, "sp", "env", "1").Return(nil, errors.New("not found")).Once()
 				svc.On("Create", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", View: &collections.View{SpaceID: "sp", EnvID: "env", CollectionID: "3"}}).Return(&collections.Collection{ID: "1", SpaceID: "sp", Name: "space", EnvID: "env", View: &collections.View{SpaceID: "sp", EnvID: "env", CollectionID: "3"}}, nil).Once()
 			},
-			envsCall: func(svc *envmocks.Environments) {
-				svc.On("Migrate", mock.Anything, "sp", "env").Return(nil).Once()
-			},
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
 			},
@@ -146,7 +143,7 @@ func TestCollections_InstallCollections(t *testing.T) {
 				svc.On("SetSchema", mock.Anything, "sp", "env", "2", schema.New("name", field.String())).Return(nil).Once()
 			},
 			envsCall: func(svc *envmocks.Environments) {
-				svc.On("Migrate", mock.Anything, "sp", "env").Return(nil).Twice()
+				svc.On("Migrate", mock.Anything, "sp", "env").Return(nil).Once()
 			},
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
@@ -172,9 +169,6 @@ func TestCollections_InstallCollections(t *testing.T) {
 				svc.On("Get", mock.Anything, "sp", "env", "1").Return(&collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp2", EnvID: environments.DefaultEnvironment, CollectionID: "2"}}, nil).Once()
 				svc.On("Update", mock.Anything, &collections.Collection{ID: "1", SpaceID: "sp", EnvID: "env", View: &collections.View{SpaceID: "sp3", EnvID: environments.DefaultEnvironment, CollectionID: "3"}}).Return(nil).Once()
 			},
-			envsCall: func(svc *envmocks.Environments) {
-				svc.On("Migrate", mock.Anything, "sp", "env").Return(nil).Once()
-			},
 			wantErr: func(t *testing.T, err error) {
 				assert.NoError(t, err)
 			},
@@ -204,8 +198,8 @@ func TestCollections_InstallCollections(t *testing.T) {
 
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			c := &mockscollections.Collections{}
-			e := &envmocks.Environments{}
+			c := mockscollections.NewCollections(t)
+			e := envmocks.NewEnvironments(t)
 			if tt.collectionsCall != nil {
 				tt.collectionsCall(c)
 			}
diff --git a/pkg/setup/setup_test.go b/pkg/setup/setup_test.go
index ff73b745..fb191680 100644
--- a/pkg/setup/setup_test.go
+++ b/pkg/setup/setup_test.go
@@ -99,12 +99,11 @@ func TestSetupInstall(t *testing.T) {
 
 	t.Run("Success, nothing to install", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 		setup := NewSetup(&content.Content{Spaces: spcMock}, spaceID, envID, logger)
 		err := setup.Install(context.Background())
 		require.NoError(t, err)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success, no force", func(t *testing.T) {
@@ -160,7 +159,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -177,12 +176,6 @@ func TestSetupInstall(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		envMocks.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success, update existing records", func(t *testing.T) {
@@ -226,7 +219,7 @@ func TestSetupInstall(t *testing.T) {
 			Return(nil).
 			Times(len(itms))
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -243,12 +236,6 @@ func TestSetupInstall(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		envMocks.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success, with force", func(t *testing.T) {
@@ -285,7 +272,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -302,11 +289,6 @@ func TestSetupInstall(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't install role, storage returns error", func(t *testing.T) {
@@ -315,7 +297,7 @@ func TestSetupInstall(t *testing.T) {
 			Return(nil, errors.New("can't get role")).
 			Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -328,8 +310,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install role")
 
-		rMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't install client, storage returns error", func(t *testing.T) {
@@ -351,7 +331,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -365,9 +345,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install client")
 
-		rMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't get collection, storage returns error", func(t *testing.T) {
@@ -400,7 +377,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -415,10 +392,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install collection")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't create collection, storage returns error", func(t *testing.T) {
@@ -455,7 +428,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -470,10 +443,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install collection")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't update collection, storage returns error", func(t *testing.T) {
@@ -503,7 +472,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -518,10 +487,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install collection")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't set schema, storage returns error", func(t *testing.T) {
@@ -562,7 +527,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -577,10 +542,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install collection")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't migrate, storage returns error", func(t *testing.T) {
@@ -626,7 +587,7 @@ func TestSetupInstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -642,10 +603,6 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "migrate: can't migrate")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't find action, storage returns error", func(t *testing.T) {
@@ -693,7 +650,7 @@ func TestSetupInstall(t *testing.T) {
 			Return(nil, errors.New("can't create item")).
 			Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -711,17 +668,11 @@ func TestSetupInstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to install item")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		envMocks.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success on retry when space not available", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
-		sp := &mocks.Spaces{}
+		sp := mocks.NewSpaces(t)
 		sp.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StateMigration}}, nil).Twice()
 		sp.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 		setup := NewSetup(&content.Content{Spaces: sp}, spaceID, envID, logger)
@@ -730,12 +681,11 @@ func TestSetupInstall(t *testing.T) {
 
 		require.NoError(t, err)
 
-		sp.AssertExpectations(t)
 	})
 
 	t.Run("Error on retry", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
-		sp := &mocks.Spaces{}
+		sp := mocks.NewSpaces(t)
 		sp.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StateMigration}}, nil).Twice()
 		sp.On("Get", mock.Anything, mock.Anything).Return(nil, errors.New("some error")).Once()
 		setup := NewSetup(&content.Content{Spaces: sp}, spaceID, envID, logger)
@@ -743,7 +693,6 @@ func TestSetupInstall(t *testing.T) {
 
 		require.Error(t, err, "в момент выполнения пришла ошибка отличная от 'space not available'")
 
-		sp.AssertExpectations(t)
 	})
 
 	t.Run("WithoutWaitSpace", func(t *testing.T) {
@@ -842,14 +791,13 @@ func TestSetupUninstall(t *testing.T) {
 	t.Run("Success, nothing to uninstall", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := NewSetup(&content.Content{Spaces: spcMock}, spaceID, envID, logger)
 		err := setup.Uninstall(context.Background())
 
 		require.NoError(t, err)
-		spcMock.AssertExpectations(t)
 
 	})
 
@@ -886,7 +834,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -903,11 +851,6 @@ func TestSetupUninstall(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Remove, with clients NotFound error", func(t *testing.T) {
@@ -943,7 +886,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -960,11 +903,6 @@ func TestSetupUninstall(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't uninstall clients, storage returns error", func(t *testing.T) {
@@ -982,7 +920,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -998,10 +936,6 @@ func TestSetupUninstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to uninstall client")
 
-		rMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
-
 	})
 
 	t.Run("Can't uninstall role, storage returns error", func(t *testing.T) {
@@ -1022,7 +956,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1038,8 +972,6 @@ func TestSetupUninstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to uninstall role")
 
-		rMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't uninstall collections, storage returns error", func(t *testing.T) {
@@ -1067,7 +999,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1084,10 +1016,6 @@ func TestSetupUninstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to uninstall collection")
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't uninstall actions, storage returns error", func(t *testing.T) {
@@ -1121,7 +1049,7 @@ func TestSetupUninstall(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1138,14 +1066,12 @@ func TestSetupUninstall(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "failed to uninstall item")
 
-		itmMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success on retry when space not available", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		sp := &mocks.Spaces{}
+		sp := mocks.NewSpaces(t)
 		sp.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StateMigration}}, nil).Twice()
 		sp.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
@@ -1155,13 +1081,12 @@ func TestSetupUninstall(t *testing.T) {
 
 		require.NoError(t, err)
 
-		sp.AssertExpectations(t)
 	})
 
 	t.Run("Error on retry", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		sp := &mocks.Spaces{}
+		sp := mocks.NewSpaces(t)
 		sp.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StateMigration}}, nil).Twice()
 		sp.On("Get", mock.Anything, mock.Anything).Return(nil, errors.New("some error")).Once()
 
@@ -1193,7 +1118,7 @@ func TestSetupCheck(t *testing.T) {
 	t.Run("Success, nothing to check", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := NewSetup(&content.Content{Spaces: spcMock}, spaceID, envID, logger)
@@ -1201,7 +1126,6 @@ func TestSetupCheck(t *testing.T) {
 		err := setup.Check(context.Background())
 
 		require.NoError(t, err)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success", func(t *testing.T) {
@@ -1237,7 +1161,7 @@ func TestSetupCheck(t *testing.T) {
 			mock.MatchedBy(func(opt *items.FindOptions) bool { return opt.Regular && opt.Hidden && opt.Templates }),
 		).Return(getActions(), 0, nil).Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1253,11 +1177,6 @@ func TestSetupCheck(t *testing.T) {
 		require.NoError(t, err)
 		require.False(t, setup.HasErrors())
 
-		rMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		itmMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't get role, storage returns error", func(t *testing.T) {
@@ -1266,7 +1185,7 @@ func TestSetupCheck(t *testing.T) {
 			Return(nil, errors.New("can't get role")).
 			Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1279,8 +1198,6 @@ func TestSetupCheck(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "role check error")
 
-		rMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't get client, storage returns error", func(t *testing.T) {
@@ -1296,7 +1213,7 @@ func TestSetupCheck(t *testing.T) {
 			Return(nil, errors.New("can't get client")).
 			Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1310,9 +1227,6 @@ func TestSetupCheck(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "clients check error")
 
-		rMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't get collection, storage returns error", func(t *testing.T) {
@@ -1335,7 +1249,7 @@ func TestSetupCheck(t *testing.T) {
 				Once()
 		}
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1350,10 +1264,6 @@ func TestSetupCheck(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "collections check error")
 
-		rMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Can't get action, storage returns error", func(t *testing.T) {
@@ -1383,7 +1293,7 @@ func TestSetupCheck(t *testing.T) {
 			Return(nil, 0, nil).
 			Once()
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
 		setup := newSetup(&content.Content{
@@ -1399,16 +1309,12 @@ func TestSetupCheck(t *testing.T) {
 		require.Error(t, err)
 		assert.ErrorContains(t, err, "items check error")
 
-		rMock.AssertExpectations(t)
-		clMock.AssertExpectations(t)
-		collsMock.AssertExpectations(t)
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Success on retry when space is preparing", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StatePreparing}}, nil).Twice()
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(sps, nil).Once()
 
@@ -1418,13 +1324,12 @@ func TestSetupCheck(t *testing.T) {
 
 		require.NoError(t, err)
 
-		spcMock.AssertExpectations(t)
 	})
 
 	t.Run("Error on retry", func(t *testing.T) {
 		logger := zaptest.NewLogger(t, zaptest.WrapOptions())
 
-		spcMock := &mocks.Spaces{}
+		spcMock := mocks.NewSpaces(t)
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(&spaces.Space{ID: spaceID, OrgID: "org", StateInfo: &spaces.StateInfo{State: spaces.StatePreparing}}, nil).Twice()
 		spcMock.On("Get", mock.Anything, mock.Anything).Return(nil, errors.New("some error")).Once()
 
diff --git a/pkg/spaces/middleware/caching_middleware_test.go b/pkg/spaces/middleware/caching_middleware_test.go
index 0674c932..6fdb6df8 100644
--- a/pkg/spaces/middleware/caching_middleware_test.go
+++ b/pkg/spaces/middleware/caching_middleware_test.go
@@ -29,7 +29,7 @@ func TestRolesCache(t *testing.T) {
 	ctx := context.Background()
 
 	t.Run("Get from cache", func(t *testing.T) {
-		sp := &spmocks.Spaces{}
+		sp := spmocks.NewSpaces(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -43,11 +43,10 @@ func TestRolesCache(t *testing.T) {
 		assert.Equal(t, v1, v2, "Ожидается при повторном запросе получение объекта из кэша.")
 		assert.NotSame(t, v1, v2)
 
-		sp.AssertExpectations(t)
 	})
 
 	t.Run("List from cache", func(t *testing.T) {
-		sp := &spmocks.Spaces{}
+		sp := spmocks.NewSpaces(t)
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -61,12 +60,11 @@ func TestRolesCache(t *testing.T) {
 		assert.Equal(t, vl1[0], vl2[0], "Ожидается при повторном запросе получение объектов из кэша.")
 		assert.NotSame(t, vl1[0], vl2[0])
 
-		sp.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate cache", func(t *testing.T) {
 		t.Run("After Update", func(t *testing.T) {
-			sp := &spmocks.Spaces{}
+			sp := spmocks.NewSpaces(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -105,11 +103,10 @@ func TestRolesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается что кеш объектов был удален после обновления объекта.")
 
-			sp.AssertExpectations(t)
 		})
 
 		t.Run("After UpdateConfig", func(t *testing.T) {
-			sp := &spmocks.Spaces{}
+			sp := spmocks.NewSpaces(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -148,11 +145,10 @@ func TestRolesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.NotEqual(t, vl2[0], vl3[0], "Ожидается что кеш объектов был удален после обновления объекта.")
 
-			sp.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			sp := &spmocks.Spaces{}
+			sp := spmocks.NewSpaces(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -191,11 +187,10 @@ func TestRolesCache(t *testing.T) {
 			require.NoError(t, err)
 			assert.Len(t, vl3, 0, "Ожидается что после удаления кеш объектов был удален.")
 
-			sp.AssertExpectations(t)
 		})
 
 		t.Run("After Create", func(t *testing.T) {
-			sp := &spmocks.Spaces{}
+			sp := spmocks.NewSpaces(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -222,11 +217,10 @@ func TestRolesCache(t *testing.T) {
 			assert.Equal(t, vl2[0], vl3[0])
 			assert.NotSame(t, vl2[0], vl3[0])
 
-			sp.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			sp := &spmocks.Spaces{}
+			sp := spmocks.NewSpaces(t)
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(sp)
 
@@ -249,7 +243,6 @@ func TestRolesCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			sp.AssertExpectations(t)
 		})
 	})
 }
diff --git a/pkg/users/middleware/caching_middleware_test.go b/pkg/users/middleware/caching_middleware_test.go
index c5755407..73057030 100644
--- a/pkg/users/middleware/caching_middleware_test.go
+++ b/pkg/users/middleware/caching_middleware_test.go
@@ -26,7 +26,7 @@ func TestUsersCache(t *testing.T) {
 	errNotFound := errors.NotFound(errors.New("not found"))
 
 	t.Run("Get from cache", func(t *testing.T) {
-		usrs := &mocks.Users{}
+		usrs := mocks.NewUsers(t)
 		ctx := context.Background()
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs)
@@ -46,11 +46,10 @@ func TestUsersCache(t *testing.T) {
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кэша при запросе по Identity.")
 		assert.NotSame(t, v2, v3)
 
-		usrs.AssertExpectations(t)
 	})
 
 	t.Run("GetByIdentity from cache", func(t *testing.T) {
-		usrs := &mocks.Users{}
+		usrs := mocks.NewUsers(t)
 		ctx := context.Background()
 
 		svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs)
@@ -70,12 +69,11 @@ func TestUsersCache(t *testing.T) {
 		assert.Equal(t, v2, v3, "Ожидается получение объекта из кэша при запросе по userID.")
 		assert.NotSame(t, v2, v3)
 
-		usrs.AssertExpectations(t)
 	})
 
 	t.Run("Invalidate Cache", func(t *testing.T) {
 		t.Run("After Update", func(t *testing.T) {
-			usrs := &mocks.Users{}
+			usrs := mocks.NewUsers(t)
 			ctx := context.Background()
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs)
@@ -106,11 +104,10 @@ func TestUsersCache(t *testing.T) {
 			assert.Equal(t, v4, v3, "Ожидается получение нового обьекта из кеша.")
 			assert.NotSame(t, v4, v3)
 
-			usrs.AssertExpectations(t)
 		})
 
 		t.Run("After Delete", func(t *testing.T) {
-			usrs := &mocks.Users{}
+			usrs := mocks.NewUsers(t)
 			ctx := context.Background()
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs)
@@ -140,11 +137,10 @@ func TestUsersCache(t *testing.T) {
 			require.Error(t, err)
 			assert.EqualErrorf(t, err, "not found", "Ожидается удаление объекта из кеша после удаления из хранилища и получение ошибки от сервиса.")
 
-			usrs.AssertExpectations(t)
 		})
 
 		t.Run("After TTL expired", func(t *testing.T) {
-			usrs := &mocks.Users{}
+			usrs := mocks.NewUsers(t)
 			ctx := context.Background()
 
 			svc := CachingMiddleware(cache.NewMemoryCache(size, ttl))(usrs)
@@ -169,7 +165,6 @@ func TestUsersCache(t *testing.T) {
 			assert.Equal(t, v2, v3)
 			assert.NotSame(t, v2, v3)
 
-			usrs.AssertExpectations(t)
 		})
 	})
 }
diff --git a/template/builder_test.go b/template/builder_test.go
index 128f7064..cd6a0807 100644
--- a/template/builder_test.go
+++ b/template/builder_test.go
@@ -28,7 +28,7 @@ func TestBuilder_Execute(t *testing.T) {
 		want    any
 		wantErr bool
 
-		getCnt func() (cnt *content.Content, assertExpectations func(t *testing.T))
+		getCnt func(t *testing.T) *content.Content
 	}{
 		{name: "error", str: "hello {{ .a }}", data: "world", want: "", wantErr: true},
 		{name: "empty", str: "", data: "", want: "", wantErr: false},
@@ -36,90 +36,148 @@ func TestBuilder_Execute(t *testing.T) {
 		{name: "#2", str: "{{ . }}", data: "world", want: "world", wantErr: false},
 		{name: "#3 ", str: "", data: "world", want: "", wantErr: false},
 		{name: "#4 ", str: "hello", data: "world", want: "hello", wantErr: false},
-		{name: "lookup", SpaceID: "space", EnvID: "env", str: "hello, {{ lookup \"secrets.dev.key\" }}", data: "", want: "hello, Luk", wantErr: false, getCnt: func() (*content.Content, func(t *testing.T)) {
-			itemsSvc := &mocksitems.Items{}
-			itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").Return(&items.Item{
-				ID:           "dev",
-				SpaceID:      "space",
-				EnvID:        "env",
-				CollectionID: "secrets",
-				Data: map[string]interface{}{
-					"id":  "dev",
-					"key": "Luk",
-				},
-			}, nil).Once()
-			return &content.Content{Items: itemsSvc}, func(t *testing.T) { itemsSvc.AssertExpectations(t) }
-		}},
-		{name: "lookup with slice", SpaceID: "space", EnvID: "env", str: "numbers {{ lookup \"secrets.dev.slice\" }}", data: "", want: "numbers [1 2 3]", wantErr: false, getCnt: func() (*content.Content, func(t *testing.T)) {
-			itemsSvc := &mocksitems.Items{}
-			itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").Return(&items.Item{
-				ID:           "dev",
-				SpaceID:      "space",
-				EnvID:        "env",
-				CollectionID: "secrets",
-				Data: map[string]interface{}{
-					"id":    "dev",
-					"slice": []int{1, 2, 3},
-				},
-			}, nil).Once()
-			return &content.Content{Items: itemsSvc}, func(t *testing.T) { itemsSvc.AssertExpectations(t) }
-		}},
-		{name: "lookup with empty Data", SpaceID: "space", EnvID: "env", str: "numbers {{ lookup \"secrets.dev.slice\" }}", data: "", want: "numbers <no value>", wantErr: false, getCnt: func() (*content.Content, func(t *testing.T)) {
-			itemsSvc := &mocksitems.Items{}
-			itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").Return(&items.Item{
-				ID:           "dev",
-				SpaceID:      "space",
-				EnvID:        "env",
-				CollectionID: "secrets",
-				Data:         map[string]interface{}{},
-			}, nil).Once()
-			return &content.Content{Items: itemsSvc}, func(t *testing.T) { itemsSvc.AssertExpectations(t) }
-		}},
-		{name: "lookup with incorrect field", SpaceID: "space", EnvID: "env", str: "hello {{ lookup \"secrets.dev.incorrect\" }}", data: "", want: "hello <no value>", wantErr: false, getCnt: func() (*content.Content, func(t *testing.T)) {
-			itemsSvc := &mocksitems.Items{}
-			itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").Return(&items.Item{
-				ID:           "dev",
-				SpaceID:      "space",
-				EnvID:        "env",
-				CollectionID: "secrets",
-				Data: map[string]interface{}{
-					"id":  "dev",
-					"key": "1234",
-				},
-			}, nil).Once()
-			return &content.Content{Items: itemsSvc}, func(t *testing.T) { itemsSvc.AssertExpectations(t) }
-		}},
-		{name: "lookup not found", SpaceID: "space", EnvID: "env", str: "hello {{ lookup \"secrets.prod.pass\" }}", data: "", want: "", wantErr: true, getCnt: func() (*content.Content, func(t *testing.T)) {
-			itemsSvc := &mocksitems.Items{}
-			itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "prod").Return(nil, errors.New("not found")).Once()
-			return &content.Content{Items: itemsSvc}, func(t *testing.T) { itemsSvc.AssertExpectations(t) }
-		}},
+		{
+			name:    "lookup",
+			SpaceID: "space",
+			EnvID:   "env",
+			str:     "hello, {{ lookup \"secrets.dev.key\" }}",
+			data:    "",
+			want:    "hello, Luk",
+			wantErr: false,
+			getCnt: func(t *testing.T) *content.Content {
+				itemsSvc := mocksitems.NewItems(t)
+				itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").
+					Return(&items.Item{
+						ID:           "dev",
+						SpaceID:      "space",
+						EnvID:        "env",
+						CollectionID: "secrets",
+						Data: map[string]interface{}{
+							"id":  "dev",
+							"key": "Luk",
+						},
+					}, nil).Once()
+				return &content.Content{Items: itemsSvc}
+			},
+		},
+		{
+			name:    "lookup with slice",
+			SpaceID: "space",
+			EnvID:   "env",
+			str:     "numbers {{ lookup \"secrets.dev.slice\" }}",
+			data:    "",
+			want:    "numbers [1 2 3]",
+			wantErr: false,
+			getCnt: func(t *testing.T) *content.Content {
+				itemsSvc := mocksitems.NewItems(t)
+				itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").
+					Return(&items.Item{
+						ID:           "dev",
+						SpaceID:      "space",
+						EnvID:        "env",
+						CollectionID: "secrets",
+						Data: map[string]interface{}{
+							"id":    "dev",
+							"slice": []int{1, 2, 3},
+						},
+					}, nil).Once()
+				return &content.Content{Items: itemsSvc}
+			},
+		},
+		{
+			name:    "lookup with empty Data",
+			SpaceID: "space",
+			EnvID:   "env",
+			str:     "numbers {{ lookup \"secrets.dev.slice\" }}",
+			data:    "",
+			want:    "numbers <no value>",
+			wantErr: false,
+			getCnt: func(t *testing.T) *content.Content {
+				itemsSvc := mocksitems.NewItems(t)
+				itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").
+					Return(&items.Item{
+						ID:           "dev",
+						SpaceID:      "space",
+						EnvID:        "env",
+						CollectionID: "secrets",
+						Data:         map[string]interface{}{},
+					}, nil).Once()
+				return &content.Content{Items: itemsSvc}
+			},
+		},
+		{
+			name:    "lookup with incorrect field",
+			SpaceID: "space",
+			EnvID:   "env",
+			str:     "hello {{ lookup \"secrets.dev.incorrect\" }}",
+			data:    "",
+			want:    "hello <no value>",
+			wantErr: false,
+			getCnt: func(t *testing.T) *content.Content {
+				itemsSvc := mocksitems.NewItems(t)
+				itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "dev").
+					Return(&items.Item{
+						ID:           "dev",
+						SpaceID:      "space",
+						EnvID:        "env",
+						CollectionID: "secrets",
+						Data: map[string]interface{}{
+							"id":  "dev",
+							"key": "1234",
+						},
+					}, nil).Once()
+				return &content.Content{Items: itemsSvc}
+			},
+		},
+		{
+			name:    "lookup not found",
+			SpaceID: "space",
+			EnvID:   "env",
+			str:     "hello {{ lookup \"secrets.prod.pass\" }}",
+			data:    "",
+			want:    "",
+			wantErr: true,
+			getCnt: func(t *testing.T) *content.Content {
+				itemsSvc := mocksitems.NewItems(t)
+				itemsSvc.On("Get", context.Background(), "space", "env", "secrets", "prod").
+					Return(nil, errors.New("not found")).Once()
+				return &content.Content{Items: itemsSvc}
+			},
+		},
 		{name: "lookup without itemID", SpaceID: "space", EnvID: "env", str: "hello {{ lookup \"secrets.pass\" }}", data: "", want: "", wantErr: true},
 		{name: "system#1", SpaceID: "space", str: "hello {{ system.SpaceID }}", data: "", want: "hello space", wantErr: false},
-		{name: "system space", SpaceID: "space", getCnt: func() (cnt *content.Content, assertExpectations func(t *testing.T)) {
-			spsSvc := &spsmocks.Spaces{}
+		{name: "system space", SpaceID: "space", getCnt: func(t *testing.T) *content.Content {
+			spsSvc := spsmocks.NewSpaces(t)
 			spsSvc.On("Get", context.Background(), "space").Return(&spaces.Space{Description: "description"}, nil).Once()
-			return &content.Content{Spaces: spsSvc}, func(t *testing.T) { spsSvc.AssertExpectations(t) }
+			return &content.Content{Spaces: spsSvc}
 		}, str: "{{ system.Space.Description }}", want: "description", wantErr: false},
-		{name: "system environment", SpaceID: "space", EnvID: "env", getCnt: func() (cnt *content.Content, assertExpectations func(t *testing.T)) {
-			envsSvc := &envsmocks.Environments{}
+		{name: "system environment", SpaceID: "space", EnvID: "env", getCnt: func(t *testing.T) *content.Content {
+			envsSvc := envsmocks.NewEnvironments(t)
 			envsSvc.On("Get", context.Background(), "space", "env").Return(&environments.Environment{Aliases: []string{"master"}}, nil).Once()
-			return &content.Content{Environments: envsSvc}, func(t *testing.T) { envsSvc.AssertExpectations(t) }
+			return &content.Content{Environments: envsSvc}
 		}, str: "{{ system.Environment.Aliases }}", want: "[master]", wantErr: false},
-		{name: "system collection", SpaceID: "space", EnvID: "env", CollID: "col", getCnt: func() (cnt *content.Content, assertExpectations func(t *testing.T)) {
-			collsSvc := &colsmocks.Collections{}
-			collsSvc.On("Get", context.Background(), "space", "env", "col").Return(&collections.Collection{Name: "cars"}, nil).Once()
-			return &content.Content{Collections: collsSvc}, func(t *testing.T) { collsSvc.AssertExpectations(t) }
-		}, str: "{{ system.Collection.Name }}", want: "cars", wantErr: false},
+		{
+			name:    "system collection",
+			SpaceID: "space",
+			EnvID:   "env",
+			CollID:  "col",
+			getCnt: func(t *testing.T) *content.Content {
+				collsSvc := colsmocks.NewCollections(t)
+				collsSvc.On("Get", context.Background(), "space", "env", "col").
+					Return(&collections.Collection{Name: "cars"}, nil).Once()
+				return &content.Content{Collections: collsSvc}
+			},
+			str:     "{{ system.Collection.Name }}",
+			want:    "cars",
+			wantErr: false,
+		},
 		{name: "system without account", SpaceID: "space", str: "hello {{ system.Organization.Name }}", want: "", wantErr: true},
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
 			var cnt *content.Content
 			if tt.getCnt != nil {
-				var checkFn func(*testing.T)
-				cnt, checkFn = tt.getCnt()
-				defer checkFn(t)
+				cnt = tt.getCnt(t)
 			}
 
 			b := &Builder{
@@ -187,7 +245,7 @@ func TestBuilder_ExecuteList(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			itemsSvc := &mocksitems.Items{}
+			itemsSvc := mocksitems.NewItems(t)
 			if tt.itemsCall != nil {
 				tt.itemsCall(itemsSvc)
 			}
@@ -205,7 +263,6 @@ func TestBuilder_ExecuteList(t *testing.T) {
 				assert.NoError(t, err)
 			}
 			assert.Equal(t, tt.want, got)
-			itemsSvc.AssertExpectations(t)
 		})
 	}
 }
@@ -256,7 +313,7 @@ func TestBuilder_ExecuteMap(t *testing.T) {
 	}
 	for _, tt := range tests {
 		t.Run(tt.name, func(t *testing.T) {
-			itemsSvc := &mocksitems.Items{}
+			itemsSvc := mocksitems.NewItems(t)
 			if tt.itemsCall != nil {
 				tt.itemsCall(itemsSvc)
 			}
@@ -274,7 +331,6 @@ func TestBuilder_ExecuteMap(t *testing.T) {
 				assert.NoError(t, err)
 			}
 			assert.Equal(t, tt.want, got)
-			itemsSvc.AssertExpectations(t)
 		})
 	}
 }
-- 
GitLab