Тёмный

Master Unit Testing Java Spring Boot REST API Application in One Shot | Full Course 

Think Constructive
Подписаться 11 тыс.
Просмотров 79 тыс.
50% 1

Let's become expert of unit testing java spring boot rest api application using Junit , AssertJ , Mockito , H2Database , Springframework test package libraries / frameworks. This is a full one shot course on software unit testing java spring boot applications. In this tutorial, Cloud Vendor API is further evolved and junit test cases are written for all 3 layers i.e. controller layer , service layer and repository layer. All layers are unit tested using junit, assertj, mockito, h2database and springframework test package . Code coverage method is also demonstrated in this session. Software testing expected from java developers is explained here.
Unit Testing is mandatory task to perform in java projects from every Java developer. Unit testing java projects helps to enhance java code quality and prevents java spring boot application from bugs. This tutorial will be helpful for backend developers and also for full stack developers.
Some notes -
JUNIT -
Unit testing framework for Java and its frameworks.
JUnit 5 is the next generation of JUnit.
The goal is to create an up-to-date foundation for developer-side testing on the JVM. This includes focusing on Java 8 and above, as well as enabling many different styles of testing.
AssertJ -
AssertJ is a Java library that provides a rich set of assertions and truly helpful error messages.
It improves test code readability, and is designed to be super easy to use within your favorite IDE.
Mockito -
Mockito is a mocking framework for Java.
It lets you write beautiful tests with a clean & simple API.
The tests are very readable and they produce clean verification errors.
Mockito 3.x requires Java 8 or above.
H2 Database -
H2 Database is Java SQL Database
Very fast and open source
Used as In-Memory Database
Spring Boot can auto-configure embedded H2 databases.
Key Annotations -
@SpringBootApplication
@Test
@DataJpaTest
@WebMvcTest
@Mock
@MockBean
@Autowired
@BeforeEach
@AfterEach
and more...
Spring Boot Session Links are given below -
1st session - • Java REST API with Spr...
2nd session - • Creating Java REST API...
3rd Session - • Exception Handling in ...
4th Session - • Java Spring Boot REST ...
Playlist for Spring Boot How To tutorial is -
• Spring Boot REST API C...
GitHub link for CloudVendorApi code -
github.com/thinkconstructive/...
Pls subscribe to the channel -
/ @thinkconstructive
Follow me on -
Official Website: thinkconstructive.com/
@Twitter : / tconstructive
@LinkedIn : / eshapuri
@LinkedIn : / think-constructive
Support the channel with your Amazon purchase -
Atomic Habits - amzn.to/3yEzGU5
The Courage To Be Disliked - amzn.to/3wheVMz
Disclosure, I use affiliate Amazon links above. Purchasing through these links gives me a small commission -- the price to you is the same.
#thinkconstructive #eshapuri #junit #junit5 #springboot
Chapters
00:00:00 Welcome
00:01:33 What is Unit Testing and Importance of Unit Testing
00:02:11 Java Spring Boot Project Design Overview
00:04:39 What is Junit ?
00:06:13 What is AssertJ ?
00:08:20 What is Mockito ?
00:09:26 What is H2 Database ?
00:11:17 Cloud Vendor API Software Project Overview
00:13:02 JUNIT Test Package Structure
00:13:50 Maven Dependency in pom.xml inclusion and verification
00:18:41 test/java/resources/application.yaml or test/java/resources/application.properties file content and structure
00:21:54 Repository Layer Test Cases : Java Spring Boot REST API
00:44:23 Service Layer Test Cases : Java Spring Boot REST API
01:09:54 Code Coverage using Intellij for Java REST API Repository Layer and Service Layer
01:12:59 Controller Layer Test Cases : Java Spring Boot REST API
01:36:32 Code Coverage using Intellij for Java REST API Controller Layer
01:39:00 Summary
01:40:25 Thank You
Queries
how to write unit test in java spring boot
how to write unit test in java spring boot rest
what is junit5 library
what is assertj library
what is mockito library
how to use h2database
what is spring boot test
how to write test case in java spring boot
how to test controller layer code
how to test service layer code
how to test repository layer code
how to check code coverage
how to check code coverage of java spring boot application
how to verify code coverage of java project
how to run junit test

Опубликовано:

 

20 июл 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 142   
@ThinkConstructive
@ThinkConstructive Год назад
This is a FULL Course for Unit Testing Spring Boot REST API application using JUNIT5, AssertJ, Mockito, H2Database and Spring test frameworks. All 3 layers will be unit tested for CloudVendorAPI application and code coverage will also be demonstrated. This is a fully practical demonstration, hence, you will get to learn real time coding and explanation both together in this session. This session addresses the REAL PAIN point of Java Spring Boot developers i.e. writing Unit Test Cases. Please attend the full session to get complete benefit from this course. Happy Learning 😊 Cheers, Esha
@DeepakLalchandaniProfile
@DeepakLalchandaniProfile Год назад
Brilliant mam, but which book would you recommend that you have used for video.
@ThinkConstructive
@ThinkConstructive Год назад
Thanks. Please visit spring.io/
@jasper5016
@jasper5016 4 месяца назад
Thanks so much Esha. I really liked your style of teaching. Can you please cover more interesting topics such as how to ship Spirngboot app as Docker image to AWS ECS or Fargate etc.
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Thank you 😊 Please stay connected and share with others too. Sure, will plan sessions on this
@souravpal2436
@souravpal2436 Месяц назад
Great ma'am. But recent I pull this latest code but it's not working. Please check it
@user-en2tn2fu6i
@user-en2tn2fu6i 3 месяца назад
i watch many videos on youtube .but dont find video content like your.tx so much provide such a good content
@professionalyoutubevideowa37
@professionalyoutubevideowa37 6 месяцев назад
This is the best course on Spring Unit testing. Concise and straight to the point!!
@ThinkConstructive
@ThinkConstructive 6 месяцев назад
Glad you liked it 😊 Thanks a lot ❤️ Please stay connected and share with others too 😊
@donotdisturb1934
@donotdisturb1934 Год назад
i have no words to describe how much i love the way you explained this, you made it so simple and easy to follow and understand that even as a beginner with no idea about unit testing and your previous cloud vendor project, i was able to understand and connect as to how this would be correlated to my project.
@ThinkConstructive
@ThinkConstructive Год назад
I am extremely happy to know that the tutorial helped you 😊 Thanks for sharing it here ❤️ Stay connected and share with others too 😊
@ParthPuri
@ParthPuri Год назад
Extremely helpful full of knowledge … loads of details are shared and code is very useful…thanks a ton for sharing this …
@ThinkConstructive
@ThinkConstructive Год назад
Welcome 😊 Glad that it helped.
@oLunatiko
@oLunatiko Год назад
Great video, thank you for sharing!
@ThinkConstructive
@ThinkConstructive Год назад
Welcome 😊 Glad that you liked it. Please share session with more people.
@mithleshpuri
@mithleshpuri Год назад
Awesome content. Great to learn spring boot from your sessions. Thanku 🙏
@ThinkConstructive
@ThinkConstructive Год назад
Glad you like them! Welcome 😊
@mithleshpuri
@mithleshpuri Год назад
Brilliant video. Keep teaching us. Thank you 🙏
@ThinkConstructive
@ThinkConstructive Год назад
Thanks, will do 😊 Please share session with more people.
@rushabhshah392
@rushabhshah392 7 месяцев назад
Good content.. Thank you. Glad to see that one like helped the video also reached to 1K.
@mukesh76801
@mukesh76801 5 месяцев назад
Thanks for this video. This is best junit testing video I ever found.
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Thank you so much 😊😊 Please stay connected and share with others too.
@saranr1467
@saranr1467 2 месяца назад
Very clear and concise content , thanks for the effort in creating this video
@dias6475
@dias6475 5 месяцев назад
Thank you, Esha, for this fantastic content!
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Thank you so much ❤️ Please stay connected and share with others too.
@ahmedouyahya
@ahmedouyahya Год назад
Hats off. Really Awesome content. Thank you so much. You got one subscriber here.
@ThinkConstructive
@ThinkConstructive Год назад
Welcome to Think Constructive. Glad to hear this 😊 Thank you. Stay connected and keep sharing with others too.
@rabinotieno6553
@rabinotieno6553 5 месяцев назад
you are the best i have learnt alot from your course
@giang08t3
@giang08t3 11 месяцев назад
Thank you so much for the very useful course!
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Most Welcome 😊 Stay connected and please share with others too. Thanks 😊
@rajeshpamuri9760
@rajeshpamuri9760 5 месяцев назад
Mam never seen like this tutorial From RU-vid
@pronoob4775
@pronoob4775 3 месяца назад
Best Unit Testing Video on RU-vid, Thank you
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Thank you 😊😊 Please stay connected and share with others too.
@msdinfo2871
@msdinfo2871 6 месяцев назад
Thank you so much for such an amazing teaching!
@ThinkConstructive
@ThinkConstructive 6 месяцев назад
Thanks, it means a lot ❤️❤️ Please stay connected and share with others too 😊
@sibashankarsahu2055
@sibashankarsahu2055 11 месяцев назад
great content and great effort. Really appreciate.
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Thanks 😊 Stay connected and please share with others too, thanks 😊
@jayjoshi1366
@jayjoshi1366 4 месяца назад
The explanation of each test case is awesome. I was searching for the same bundle of all test cases with JUnit 5, including all CRUD operations. It could have been more helpful than it is already, if the methods like andDo(), andExpect(), explanation of the ObjectMapper code block for mapping cloudVendor obj to Json stirng was taken deeply. But still much appreciated for you efforts and learned a lot from this session. Thanks a lot ma'am!
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Glad it helped you ❤️ Sure will plan sessions on suggested methods. Please stay connected and share with others too. Thank you 😊
@santoshrajuutube
@santoshrajuutube Год назад
Thank you so much Mam, for your time and patience.
@ThinkConstructive
@ThinkConstructive Год назад
Thanks 😊
@trinitykhuman
@trinitykhuman 3 дня назад
Very very helpful. Thank you !!!
@ThinkConstructive
@ThinkConstructive 2 дня назад
Glad it was helpful . Stay connected and please share with others too
@atharvsingh6901
@atharvsingh6901 10 месяцев назад
I really appreciate your crucial efforts for the benefit of java coding community. My respect 🙏 to you mam. You are our GURUMA
@ThinkConstructive
@ThinkConstructive 10 месяцев назад
Thank you so much for your kind words, respect ❤️ ❤️ Stay connected and please share with others too 😊
@atharvsingh6901
@atharvsingh6901 10 месяцев назад
@@ThinkConstructive surely mam, I'll. These informative 👏 contents are useful for learning and growing in job. Pls continue the great work. You may not have idea, how much helpful these are. Otherwise, to learn such things, we have to pay thousands of rupees that not everybody can afford. Money shouldn't be a barrier to education. And ur efforts 👌 💪 are proving it. 🙏😊
@ThinkConstructive
@ThinkConstructive 10 месяцев назад
Thank you so much for your kind words 😊 ❤️ Keep learning, keep growing
@kartikmerotha136
@kartikmerotha136 11 месяцев назад
I was looking for this video from long time... You clear all doubts..
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Nice, Thanks 😊 Stay connected and please share with others too, thanks 😊
@kartikmerotha136
@kartikmerotha136 11 месяцев назад
@ThinkConstructive yeah sure I already share with another one😊😊
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Great thanks 😊
@vishnupriyapeta2162
@vishnupriyapeta2162 4 месяца назад
Hi Esha Mam, can you able to externalize the application properties in json config and provide annotations explaining this flow in ur upcoming videos! Kudos to your effort🎉
@AlessiaCaraFans
@AlessiaCaraFans Год назад
omg you just saved my life thank youuuu so muuuuuuch
@ThinkConstructive
@ThinkConstructive Год назад
Glad that it was helpful 😊 Please share with other too. Thanks 😊
@bharathkalyans
@bharathkalyans 6 месяцев назад
Thanks that was really helpful.
@ThinkConstructive
@ThinkConstructive 6 месяцев назад
Glad you liked it 😊 Please stay connected and share with others too. Thanks 😊
@otifelix
@otifelix 11 месяцев назад
Thank you so much for the content really great.
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Most welcome 😊 Stay connected and please share with others too. Thank you 😊
@tittuc1480
@tittuc1480 Год назад
Videos are very helpful for tech buddies , Could you please upload Evosuite using autogenerated test cases in STS?
@ThinkConstructive
@ThinkConstructive Год назад
Thanks 😊. I will check and plan
@user-xb1pu1tj7e
@user-xb1pu1tj7e 4 месяца назад
Thank u for sharing thes excellent course, i just have a question, i waanna know the difference between MockBean and Mock annotation why we used mockbean to mock the service why we didnt use mock
@MsProtestante
@MsProtestante 9 месяцев назад
Very good lady! Thank you!
@ThinkConstructive
@ThinkConstructive 8 месяцев назад
Thanks 😊 Stay connected and please share with others too. Thank you
@sagarprasad3204
@sagarprasad3204 Год назад
Thank for unit test case video.. if you get chance please prepare video for integration test using spring boot, cucumber and docker as postgres db.
@ThinkConstructive
@ThinkConstructive Год назад
Welcome 😊 Sure will include it in the plan by
@boxofgames3
@boxofgames3 Год назад
superb explanation mam, keep teaching us
@ThinkConstructive
@ThinkConstructive Год назад
Thanks 😊 Sure, I will
@sgr7ss
@sgr7ss 18 дней назад
Good explanation
@blessycheriyan5870
@blessycheriyan5870 Год назад
Very informative videos and tremendous experiences
@ThinkConstructive
@ThinkConstructive Год назад
Thanks 😊
@blessycheriyan5870
@blessycheriyan5870 Год назад
@@ThinkConstructive waiting for more videos related to spring boot
@ThinkConstructive
@ThinkConstructive Год назад
Sure, will upload soon
@leonardofukuje5171
@leonardofukuje5171 Год назад
Thank you!
@ThinkConstructive
@ThinkConstructive Год назад
Welcome 😊
@user-lw2jn8gp3e
@user-lw2jn8gp3e 10 месяцев назад
Awesome session 🌹
@ThinkConstructive
@ThinkConstructive 10 месяцев назад
Thank you so much 😊 Stay connected and please share with others too.
@londonuk648
@londonuk648 7 месяцев назад
You are amazing.
@ThinkConstructive
@ThinkConstructive 6 месяцев назад
Thanks a lot ❤️ ❤️ Please stay connected and share with others too 😊
@uvanana.
@uvanana. Месяц назад
Everything is working fine for me
@krishnaprasad-rn6pp
@krishnaprasad-rn6pp Год назад
Good work. keep it up. Can please post videos on highcharts or chartJs
@ThinkConstructive
@ThinkConstructive Год назад
Thanks 😊 Currently JS videos are not in the plan! Sorry
@daisyday101
@daisyday101 3 месяца назад
Hello Ma'am, what is the exact difference between junit and mockito ? and how can we decide whether we should go for mockito or junit before writing test cases?
@priteshsingh299
@priteshsingh299 Год назад
Hello Mam, instead of mocking Entity and repository class in every test method can we mock it once above?
@godfreyogbeide2340
@godfreyogbeide2340 Год назад
GOOD MORNING MA, YOU ARE REALLY DOING A GOOD JOB. I WANT TO ASK YOU A QUESTION? IS IT POSSIBLE TO CREATE A REST APPLICATION SPRING BOOT USING A GRADLE PROJECT PLEASE!!
@ThinkConstructive
@ThinkConstructive Год назад
Good Morning, Thank you 😊 Yes, Spring Boot REST Application can be build using GRADLE build.
@rameshs8282
@rameshs8282 3 месяца назад
Can someone tell me, In real time projects will do mocking junit test in all three layers like controller, service and repository or only one in service layer will test junit mockito?
@DushmantaKSahu
@DushmantaKSahu 7 месяцев назад
nice
@rahulbasutkar04
@rahulbasutkar04 25 дней назад
Thank you mam
@ThinkConstructive
@ThinkConstructive 24 дня назад
Most welcome 😊 Please share with others too
@dadasahebgadhe2083
@dadasahebgadhe2083 Год назад
I use @async annotation with two methods in a same service class, asynchronous calling happen but not getting any response
@ThinkConstructive
@ThinkConstructive Год назад
Please try including wait timer in the test case
@nikhilbalthi9133
@nikhilbalthi9133 8 месяцев назад
Thank you
@ThinkConstructive
@ThinkConstructive 8 месяцев назад
Welcome 😊 Stay connected and please share with others too. Thanks 😊
@avanishsingh5630
@avanishsingh5630 5 месяцев назад
Mam you covered simple test cases like find by id method , getAll method but what if a method call external service like there is a method called CreateVehichle() this method internally calls a fabservcie.readData for better under standing i am pasting some code snipite CreateVehicle(VehiclcleRegistation vr){ externaldata= externalService.readData} and in externalService readData there is one more service called can you please tell me how can i write testcase for CreateVehichle() method and also provide some good resources for Junit
@user-pz4ix9sp3h
@user-pz4ix9sp3h 2 месяца назад
Why inside the test methods such as testCreateVendor mock(CloudVendor.class); mock(CloudVendorRepository.class); Is this being used because even without these the test cases are passing
@user-ui8fi3gl1c
@user-ui8fi3gl1c 10 месяцев назад
Hi mam , All the process are working .But Code coverge does details does not showing me.totally it's showing empty. what is the problem mam.
@user-ve1jp5ho1k
@user-ve1jp5ho1k 7 месяцев назад
Hi Mam. Ur Explanation is very good. In real time, Can I take above test cases for reference, And can i use in any real time project.
@ThinkConstructive
@ThinkConstructive 7 месяцев назад
Hello, Thank you so much 😊 Yes, definitely, you can use these test cases and tutorial as a reference for any real time project. Stay connected and please share with others too 😊
@tittuc1480
@tittuc1480 Год назад
Could you please upload evosuite using generate automatically junit in STS in this weeks?
@ThinkConstructive
@ThinkConstructive Год назад
Apologies, It’s very difficult to do this on immediate basis. For now, I can include it in my plan.
@tittuc1480
@tittuc1480 Год назад
@@ThinkConstructive thank you for your positive response , Anyway waiting for that video
@kartikmerotha136
@kartikmerotha136 11 месяцев назад
Could you please create any project tutorial from scratch to deploy which covers all features of microservices.
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Sure
@syedirfan4541
@syedirfan4541 5 месяцев назад
Mam make a video on adding swagger in ur project
@user-lf8ce8zz1o
@user-lf8ce8zz1o 15 дней назад
Hi.....Is H2 database is mandatory to install for testing
@shrip8668
@shrip8668 Месяц назад
In service class u have mock repo n again in create cloud vendor u have mock repo i didn't understand that
@dubeyankitsarar8084
@dubeyankitsarar8084 Год назад
Mam please make a video on microservices.plz
@ThinkConstructive
@ThinkConstructive Год назад
Sure, will plan it shortly.
@tittuc1480
@tittuc1480 Год назад
Waiting for more videos in microservices 🥳
@ThinkConstructive
@ThinkConstructive Год назад
Sure, will plan it.
@snowsior621
@snowsior621 10 месяцев назад
Good guide, but sad that test cases do not contain case when code throws exception error
@ThinkConstructive
@ThinkConstructive 10 месяцев назад
Thanks. Soon, will create another video for exception error test case. Thanks for asking for this scenario.
@RochaNahuel
@RochaNahuel 11 месяцев назад
GENIA FROM ARGENTINA
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Welcome 😊 Stay connected
@mauriciopareja3899
@mauriciopareja3899 6 месяцев назад
Hello, when found link video project start form beginning ? thanks
@ThinkConstructive
@ThinkConstructive 6 месяцев назад
Hi, Please find 1st video link - ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-iBGkJln9BPo.html Complete playlist link - ru-vid.com/group/PLcs1FElCmEu121gqGwlQt47d0SqNkzSTK
@mauriciopareja3899
@mauriciopareja3899 6 месяцев назад
@@ThinkConstructive thanks, excellent content !
@shubhampatil7336
@shubhampatil7336 Год назад
Please make videos on microservice?
@ThinkConstructive
@ThinkConstructive Год назад
Sure, will plan it shortly.
@deepakmathur4218
@deepakmathur4218 Год назад
Hi ma'am, i'm having one doubt i.e. how is this working you jave not created any table for this
@ThinkConstructive
@ThinkConstructive Год назад
Hi, Table is created In Memory using H2 database for the respective model class, when application comes up.
@pinkugouda8998
@pinkugouda8998 11 месяцев назад
Ma'am thanks for the great video. Can you please share the git lab link
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Welcome 😊 Here is the github link - github.com/thinkconstructive/rest-api-spring-boot-demo/tree/master Stay connected and please share with others too. Thanks 😊
@ShanmukRaoSamudrala
@ShanmukRaoSamudrala Месяц назад
thumbnail 🤡🤡 content 💀💀🔥
@AkshaliModak
@AkshaliModak 11 месяцев назад
mam please make videos on design patterns
@ThinkConstructive
@ThinkConstructive 11 месяцев назад
Sure
@yanrithy7035
@yanrithy7035 3 месяца назад
54:44
@i.m.mature_guy_
@i.m.mature_guy_ 3 месяца назад
Can you please share the URL of the git project of this tutorial.
@ThinkConstructive
@ThinkConstructive 3 месяца назад
Sure, here it is - github.com/thinkconstructive/rest-api-spring-boot-demo/tree/master
@i.m.mature_guy_
@i.m.mature_guy_ 3 месяца назад
Mam also can you please explain how you have implemented the method in the repository layer findVendorWithName I am only able to see the method definition but not the implementation.
@ashishmahanta7963
@ashishmahanta7963 Год назад
Please add another layer service interface layer
@ThinkConstructive
@ThinkConstructive Год назад
I don't think , service interface layer needs to be unit tested!
@jayalekshmij7567
@jayalekshmij7567 Год назад
Could you please provide the application.properties file
@ThinkConstructive
@ThinkConstructive Год назад
Sure, please get it from below link - github.com/thinkconstructive/rest-api-spring-boot-demo/blob/master/src/test/resources/application.properties
@SuryaPrakash-qn4bj
@SuryaPrakash-qn4bj 3 месяца назад
GitHub link is not working,if u have this project source code could you plz share with me
@NickTheGr3ek
@NickTheGr3ek Год назад
why are we using mock(CloudVendor.class) and mock(CloudVendorRepository.class) ?, since we got the @Mock annotation on the CloudVendorRepository
@faclimbo
@faclimbo Год назад
good day, i got error when i tried to run my test case. .hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create table cloud_vendor_info (vendor_id varchar(255) not null, vendor_address varchar(255), vendor_name varchar(255), vendor_phone_number varchar(255), primary key (vendor_id)) engine=InnoDB" via JDBC Statement at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:587) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:532) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final] at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.createTable(AbstractSchemaMigrator.java:307) ~[hibernate-core-6.1.6.Final.jar:6.1.6.Final]
@ambaradhikari7425
@ambaradhikari7425 8 месяцев назад
is your error resolved?
@Moonaz023
@Moonaz023 10 дней назад
Thank you so much for such an amazing teaching!
@ThinkConstructive
@ThinkConstructive 2 дня назад
Thanks a lot. Stay connected and please share with others too