diff --git a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotI18nTest.java b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotI18nTest.java
index 68b178e1..75aa6df0 100644
--- a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotI18nTest.java
+++ b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotI18nTest.java
@@ -4,70 +4,79 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.telegram.abilitybots.api.db.DBContext;
-import org.telegram.abilitybots.api.objects.EndUser;
 import org.telegram.abilitybots.api.objects.MessageContext;
 import org.telegram.abilitybots.api.sender.MessageSender;
 import org.telegram.abilitybots.api.sender.SilentSender;
+import org.telegram.telegrambots.api.objects.User;
 
 import java.io.IOException;
 
+import static java.lang.Long.valueOf;
 import static org.apache.commons.lang3.StringUtils.EMPTY;
 import static org.mockito.Mockito.*;
 import static org.mockito.internal.verification.VerificationModeFactory.times;
+import static org.telegram.abilitybots.api.bot.AbilityBotTest.mockContext;
+import static org.telegram.abilitybots.api.bot.AbilityBotTest.newUser;
 import static org.telegram.abilitybots.api.db.MapDBContext.offlineInstance;
-import static org.telegram.abilitybots.api.objects.EndUser.endUser;
 
 public class AbilityBotI18nTest {
-    private static final EndUser NO_LANGUAGE_USER = endUser(1, "first", "last", "username");
-    private static final EndUser ITALIAN_USER = endUser(2, "first", "last", "username");
+  private static final User NO_LANGUAGE_USER = newUser(1, "first", "last", "username", null);
+  private static final User ITALIAN_USER = newUser(2, "first", "last", "username", "it-IT");
 
-    private DBContext db;
-    private DefaultBot bot;
+  private DBContext db;
+  private NoPublicCommandsBot bot;
 
-    private NoPublicCommandsBot noCommandsBot;
+  private MessageSender sender;
+  private SilentSender silent;
 
-    private MessageSender sender;
-    private SilentSender silent;
+  @Before
+  public void setUp() {
+    db = offlineInstance("db");
+    bot = new NoPublicCommandsBot(EMPTY, EMPTY, db);
 
-    @Before
-    public void setUp() {
-        db = offlineInstance("db");
-        bot = new DefaultBot(EMPTY, EMPTY, db);
+    sender = mock(MessageSender.class);
+    silent = mock(SilentSender.class);
 
-        silent = mock(SilentSender.class);
+    bot.sender = sender;
+    bot.silent = silent;
+  }
 
-        bot.sender = sender;
-        bot.silent = silent;
-    }
+  @Test
+  public void missingPublicCommandsLocalizedCorrectly1() {
+    MessageContext context = mockContext(NO_LANGUAGE_USER);
 
-    @Test
-    public void missingPublicCommandsLocalizedCorrectly() {
-        NoPublicCommandsBot noCommandsBot = new NoPublicCommandsBot(EMPTY, EMPTY, db);
-        noCommandsBot.silent = silent;
+    bot.reportCommands().action().accept(context);
 
-        MessageContext context = mock(MessageContext.class);
-        when(context.chatId()).thenReturn(Long.valueOf(NO_LANGUAGE_USER.id()));
-        when(context.user()).thenReturn(NO_LANGUAGE_USER);
+    verify(silent, times(1))
+        .send("No public commands found.", NO_LANGUAGE_USER.getId());
+  }
 
-        noCommandsBot.reportCommands().action().accept(context);
+  @Test
+  public void missingPublicCommandsLocalizedCorrectly2() {
+    MessageContext context1 = mockContext(ITALIAN_USER);
 
-        verify(silent, times(1))
-                .send("No public commands found.", NO_LANGUAGE_USER.id());
+    bot.reportCommands().action().accept(context1);
 
-        MessageContext context1 = mock(MessageContext.class);
-        when(context1.chatId()).thenReturn(Long.valueOf(ITALIAN_USER.id()));
-        when(context1.user()).thenReturn(ITALIAN_USER);
-
-        noCommandsBot.reportCommands().action().accept(context1);
-
-        verify(silent, times(1))
-                .send("Non sono presenti comandi pubblici.", ITALIAN_USER.id());
-    }
+    verify(silent, times(1))
+        .send("Non sono presenti comandi pubblici.", ITALIAN_USER.getId());
+  }
 
 
-    @After
-    public void tearDown() throws IOException {
-        db.clear();
-        db.close();
-    }
+  @After
+  public void tearDown() throws IOException {
+    db.clear();
+    db.close();
+  }
+
+  public static class NoPublicCommandsBot extends AbilityBot {
+
+      protected NoPublicCommandsBot(String botToken, String botUsername, DBContext db) {
+          super(botToken, botUsername, db);
+      }
+
+      @Override
+      public int creatorId() {
+          return 0;
+      }
+  }
 }
diff --git a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotTest.java b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotTest.java
index 3d958717..2e03ad6a 100644
--- a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotTest.java
+++ b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/AbilityBotTest.java
@@ -39,6 +39,7 @@ import static org.mockito.internal.verification.VerificationModeFactory.times;
 import static org.telegram.abilitybots.api.bot.DefaultBot.getDefaultBuilder;
 import static org.telegram.abilitybots.api.db.MapDBContext.offlineInstance;
 import static org.telegram.abilitybots.api.objects.EndUser.endUser;
+import static org.telegram.abilitybots.api.objects.EndUser.fromUser;
 import static org.telegram.abilitybots.api.objects.Flag.DOCUMENT;
 import static org.telegram.abilitybots.api.objects.Flag.MESSAGE;
 import static org.telegram.abilitybots.api.objects.Locality.ALL;
@@ -56,7 +57,9 @@ public class AbilityBotTest {
   private static final String TEST = "test";
   private static final String[] TEXT = {TEST};
   public static final EndUser MUSER = endUser(1, "first", "last", "username");
+  public static final User TG_USER = newUser(1, "first", "last", "username", null);
   public static final EndUser CREATOR = endUser(1337, "creatorFirst", "creatorLast", "creatorUsername");
+  public static final User TG_CREATOR = newUser(1337, "creatorFirst", "creatorLast", "creatorUsername", null);
 
   private DefaultBot bot;
   private DBContext db;
@@ -199,8 +202,7 @@ public class AbilityBotTest {
 
   @NotNull
   private MessageContext defaultContext() {
-    MessageContext context = mock(MessageContext.class);
-    when(context.user()).thenReturn(CREATOR);
+    MessageContext context = mockContext(TG_CREATOR, GROUP_ID);
     when(context.firstArg()).thenReturn(MUSER.username());
     return context;
   }
@@ -208,8 +210,7 @@ public class AbilityBotTest {
   @Test
   public void cannotBanCreator() {
     addUsers(MUSER, CREATOR);
-    MessageContext context = mock(MessageContext.class);
-    when(context.user()).thenReturn(MUSER);
+    MessageContext context = mockContext(TG_USER, GROUP_ID);
     when(context.firstArg()).thenReturn(CREATOR.username());
 
     bot.banUser().action().accept(context);
@@ -228,8 +229,7 @@ public class AbilityBotTest {
 
   @Test
   public void creatorCanClaimBot() {
-    MessageContext context = mock(MessageContext.class);
-    when(context.user()).thenReturn(CREATOR);
+    MessageContext context = mockContext(TG_CREATOR, GROUP_ID);
 
     bot.claimCreator().action().accept(context);
 
@@ -241,8 +241,7 @@ public class AbilityBotTest {
   @Test
   public void userGetsBannedIfClaimsBot() {
     addUsers(MUSER);
-    MessageContext context = mock(MessageContext.class);
-    when(context.user()).thenReturn(MUSER);
+    MessageContext context = mockContext(TG_USER, GROUP_ID);
 
     bot.claimCreator().action().accept(context);
 
@@ -550,21 +549,38 @@ public class AbilityBotTest {
 
   @Test
   public void canReportCommands() {
-    Update update = mock(Update.class);
-    Message message = mock(Message.class);
-
-    when(update.hasMessage()).thenReturn(true);
-    when(update.getMessage()).thenReturn(message);
-    when(message.hasText()).thenReturn(true);
-    MessageContext context = mock(MessageContext.class);
-    when(context.chatId()).thenReturn(GROUP_ID);
-    when(context.user()).thenReturn(MUSER);
+    MessageContext context = mockContext(TG_USER, GROUP_ID);
 
     bot.reportCommands().action().accept(context);
 
     verify(silent, times(1)).send("default - dis iz default command", GROUP_ID);
   }
 
+  @NotNull
+  public static MessageContext mockContext(User user) {
+    return mockContext(user, user.getId());
+  }
+
+  @NotNull
+  public static MessageContext mockContext(User user, long groupId) {
+    Update update = mock(Update.class);
+    Message message = mock(Message.class);
+    EndUser endUser = fromUser(user);
+
+    when(update.hasMessage()).thenReturn(true);
+    when(update.getMessage()).thenReturn(message);
+
+    when(message.getFrom()).thenReturn(user);
+    when(message.hasText()).thenReturn(true);
+
+    MessageContext context = mock(MessageContext.class);
+    when(context.update()).thenReturn(update);
+    when(context.chatId()).thenReturn(groupId);
+    when(context.user()).thenReturn(endUser);
+
+    return context;
+  }
+
   @After
   public void tearDown() throws IOException {
     db.clear();
@@ -655,4 +671,17 @@ public class AbilityBotTest {
     writer.close();
     return backupFile;
   }
+
+  public static User newUser(Integer id, String firstname, String lastname, String username, String languageCode) {
+    User user = mock(User.class);
+
+    when(user.getBot()).thenReturn(false);
+    when(user.getFirstName()).thenReturn(firstname);
+    when(user.getId()).thenReturn(id);
+    when(user.getLastName()).thenReturn(lastname);
+    when(user.getUserName()).thenReturn(username);
+    when(user.getLanguageCode()).thenReturn(languageCode);
+
+    return user;
+  }
 }
diff --git a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/NoPublicCommandsBot.java b/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/NoPublicCommandsBot.java
deleted file mode 100644
index b4e49973..00000000
--- a/telegrambots-abilities/src/test/java/org/telegram/abilitybots/api/bot/NoPublicCommandsBot.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.telegram.abilitybots.api.bot;
-
-import org.telegram.abilitybots.api.db.DBContext;
-
-public class NoPublicCommandsBot extends AbilityBot {
-
-    protected NoPublicCommandsBot(String botToken, String botUsername, DBContext db) {
-        super(botToken, botUsername, db);
-    }
-
-    @Override
-    public int creatorId() {
-        return 0;
-    }
-}
\ No newline at end of file