SingletonSean
SingletonSean
  • 291
  • 2 868 828
The Most Wonderful Type of Tests
Learn how to write integration tests in a .NET application!
🕗 Timestamps:
0:00 - Introduction
0:30 - When to Integration Test
1:29 - Creating a Test Project
2:59 - Instantiating Test Dependencies (via Dependency Injection)
6:41 - Mocking the Boundaries (via NSubstitute)
9:14 - Getting the Test to Run and Celebrating the Benefits
11:10 - Creating Reusable Mocks
13:51 - Writing an Advanced Test
17:31 - Summary
📦 Source code: github.com/SingletonSean/streakathon
🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03hb55qLwnSC3yyxR2VIPOxI.html
🔗 Testing Trophy Video: ua-cam.com/video/8Tb61_EX3DM/v-deo.html
💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin
🏠 Discord: discord.gg/6hkR98BaCz
🐤 Twitter: SingletonSean_
🏆 Donate: www.paypal.com/donate?hosted_button_id=UBZCZWX2UVWJE
✉️ Email: youtube@singletonsean.com
➖➖➖➖➖➖➖➖➖➖
© Credits
🎵 Outro: pixabay.com/music/synthwave-computer-love-121106/
Переглядів: 939

Відео

Setup Logging in Your .NET MAUI Application (feat. Serilog)
Переглядів 77814 днів тому
Setup logging in a .NET MAUI application with Serilog! 🕗 Timestamps: 0:00 - Introduction 0:35 - Installing Packages 2:28 - Configuring 3:25 - Using the Logger 4:12 - Adding Sinks (Debug, File) 6:17 - Summary 📦 Source code: github.com/SingletonSean/streakathon/tree/video/serilog 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03gIo-USwFl-i9gUlvbW0BSS.html 🔗 Serilog Repository: github.com/serilog/seri...
Setup Authentication in .NET MAUI (feat. Firebase Authentication V4)
Переглядів 1,1 тис.28 днів тому
Learn how to setup Firebase Authentication in a .NET MAUI application! 🕗 Timestamps: 0:00 - Introduction 0:27 - Project Setup 1:46 - Installation 2:32 - Configuration [new FirebaseAuthConfig()] 4:27 - Boilerplate MVVM Pages… 5:51 - Sign In [FirebaseAuthClient.SignInWithEmailAndPasswordAsync()] 8:40 - Sign Up [FirebaseAuthClient.CreateUserWithEmailAndPasswordAsync()] 10:54 - Profile Details [Fir...
Automatic Versioning with Changesets - MAUI CI/CD TUTORIAL #5 (Windows)
Переглядів 471Місяць тому
Learn how to setup automatic versioning in a GitHub Actions CI/CD pipeline via Changesets! 🕗 Timestamps: 0:00 - Introduction 0:30 - The Problem w/ Manual Versioning 1:02 - Hello, Changesets! 2:46 - Setting up Changesets 4:34 - Using Changesets 6:52 - Running Changesets in GitHub Actions 15:55 - Testing and Fixing Permissions Issues 19:37 - Summary 📦 Source code: github.com/SingletonSean/maui-tu...
How I Launched A Website That Generated $3.98 In Revenue
Переглядів 1,5 тис.Місяць тому
I launched a website that (kinda) had users! Hear about what I built, how I built it, and what I learned so that you can potentially build your own product that makes way more money than I did. 🕗 Timestamps: 0:00 - Introduction 0:36 - Problem 1:17 - Initial Concept 1:50 - Validating the Idea 5:22 - Building the First Real Version! 9:05 - The Pivot 13:08 - Monetization?! 16:16 - Takeaways 🔗 Webs...
Why SingletonSean?
Переглядів 1,2 тис.2 місяці тому
Yes, SingletonSean is somewhat of an odd name. This is the story of how I chose the name SingletonSean! 🕗 Timestamps: 0:00 - Introduction 0:39 - The Internship 1:22 - Encountering Singletons 2:28 - Growth and Learning 3:25 - UA-cam Channel 4:28 - Thank You! 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin 🏠 Discord: discord.gg/6hkR98BaCz 🐤 Twitter: SingletonSea...
Automatic Updates - MAUI CI/CD TUTORIAL #4 (Windows)
Переглядів 8832 місяці тому
Learn how to setup automatic updates for a MAUI Windows application from a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 1:48 - Creating the App Installer File 6:00 - Uploading Release Assets for App Installer File 7:40 - Testing and Fixing Things 10:41 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03iO8MxhOt0U-Ib6...
Versioning and Releasing - MAUI CI/CD TUTORIAL #3 (Windows)
Переглядів 4512 місяці тому
Learn how to create versioned GitHub releases for a MAUI Windows application from a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 1:03 - Extracting the Version 2:35 - Creating a Version Tag 4:05 - Creating a Release 6:09 - Granting Workflow Permissions 6:40 - Testing 7:13 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/blob/master/.github/workflows/deploy.yml...
Certificate Signing - MAUI CI/CD TUTORIAL #2 (Windows)
Переглядів 5712 місяці тому
Learn how to sign a MAUI Windows application with a certificate in a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 0:44 - Creating a Self-Signed Certificate 3:12 - Getting the Certificate Into GitHub Actions 5:44 - Signing the MSIX with the Certificate 7:32 - Testing and Fixing Things 9:01 - Trusting the Certificate and Installing! 9:33 - Summary 📦 Source code: github.com/Sin...
Publishing - MAUI CI/CD TUTORIAL #1 (Windows)
Переглядів 9012 місяці тому
Learn how to publish a MAUI Windows application in a GitHub Actions CI/CD pipeline! 🕗 Timestamps: 0:00 - Introduction 0:49 - Workflow Definition 2:18 - Workflow Steps 6:23 - Testing 7:08 - Next Steps 📦 Source code: github.com/SingletonSean/maui-tutorials/blob/master/.github/workflows/deploy.yml 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03iO8MxhOt0U-Ib6zS97_aV7.html 🔗 GitHub Actions: docs.githu...
Contributing To Open-Source For The First Time
Переглядів 2,7 тис.2 місяці тому
I made my first ever contribution to an open-source project! Hopefully this story inspires others to try contributing to open-source projects out there 😁 🕗 Timestamps: 0:00 - Introduction 0:30 - Context 0:54 - Problem 2:03 - Running Locally 2:55 - Reproducing 4:04 - Fixing! 4:48 - An Alternate Solution… 6:29 - The Pivot 7:44 - Automated Testing! 9:42 - Opening the Pull Request 10:31 - Takeaways...
Is Your MAUI Application UI Responsive?
Переглядів 1,3 тис.3 місяці тому
Learn how to build a responsive, cross-platform UI in .NET MAUI! 🕗 Timestamps: 0:00 - Introduction 0:33 - Problem With Style Inheritance 1:54 - Solution With Style Classes 3:27 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/ResponsiveDesign 🔁 Full playlist: ua-cam.com/play/PLA8ZIAm2I03gIo-USwFl-i9gUlvbW0BSS.html 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9...
I’m So Glad MAUI Has XAML Style Classes
Переглядів 1,4 тис.3 місяці тому
Learn how to efficiently compose styles in .NET MAUI! 🕗 Timestamps: 0:00 - Introduction 0:33 - Problem With Style Inheritance 1:54 - Solution With Style Classes 3:27 - Summary 🔗 MAUI Styling Documentation: learn.microsoft.com/en-us/dotnet/maui/user-interface/styles/xaml?view=net-maui-8.0 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/StyleClassesRock 🔁 Full playlist: ua-cam....
How to Create Custom Code Snippets in Visual Studio (feat. MAUI Bindable Properties)
Переглядів 1,5 тис.4 місяці тому
Let's create a custom code snippet and make our lives easier! 🕗 Timestamps: 0:00 - Introduction 0:15 - Setup 0:41 - Metadata 1:29 - Code Template 2:06 - Variables / Literals 4:05 - Importing to Visual Studio 5:05 - Cleaning Up 6:16 - Summary 🔗 Example Snippet (propbp): singletonsean.s3.amazonaws.com/propbp.snippet 🔗 Code Snippets Documentation: learn.microsoft.com/en-us/visualstudio/ide/code-sn...
I Hope You’re Extracting MAUI Components
Переглядів 1,3 тис.4 місяці тому
Creating custom MAUI components is the way. 🕗 Timestamps: 0:00 - Problem 1:01 - Creating a Custom Component 1:58 - Defining Attributes (Bindable Properties) 3:40 - Using a Custom Component 4:42 - Referencing Attributes 6:21 - Summary 📦 Source code: github.com/SingletonSean/maui-tutorials/tree/master/ContentViewComponents 💎 Become a Member: ua-cam.com/channels/7X9mQ_XtTYWzr9Tf_NYcIg.htmljoin 🏠 D...
Accidentally Building the Greatest .NET MAUI Meta-Framework
Переглядів 2,7 тис.4 місяці тому
Accidentally Building the Greatest .NET MAUI Meta-Framework
Simplify Configuration via Polymorphism
Переглядів 1,9 тис.4 місяці тому
Simplify Configuration via Polymorphism
The Right Way to Conditional Render in .NET MAUI
Переглядів 3,6 тис.4 місяці тому
The Right Way to Conditional Render in .NET MAUI
Securely Persist Local Data in .NET MAUI (Secure Storage)
Переглядів 1,4 тис.5 місяців тому
Securely Persist Local Data in .NET MAUI (Secure Storage)
Do You Really Need a Data Transfer Object?
Переглядів 5 тис.5 місяців тому
Do You Really Need a Data Transfer Object?
Refactor Your App to The MVVM Community Toolkit (feat. WPF!)
Переглядів 9 тис.5 місяців тому
Refactor Your App to The MVVM Community Toolkit (feat. WPF!)
You Might Not Need That Interface
Переглядів 1,8 тис.5 місяців тому
You Might Not Need That Interface
Why Are You Using Async/Await? (feat. WPF)
Переглядів 6 тис.6 місяців тому
Why Are You Using Async/Await? (feat. WPF)
Create a Custom Link Component in MAUI (via Inheritance)
Переглядів 1,1 тис.6 місяців тому
Create a Custom Link Component in MAUI (via Inheritance)
Binding MAUI Views to View Models (w/ Dependency Injection!) - MAUI TUTORIALS
Переглядів 2,8 тис.6 місяців тому
Binding MAUI Views to View Models (w/ Dependency Injection!) - MAUI TUTORIALS
A Readable and “DRY” Approach to Guard Clauses?
Переглядів 2,3 тис.7 місяців тому
A Readable and “DRY” Approach to Guard Clauses?
Navigation Made Easy (w/ MVVM) - MAUI TUTORIALS
Переглядів 4,9 тис.7 місяців тому
Navigation Made Easy (w/ MVVM) - MAUI TUTORIALS
Is It Okay To Put Properties on Interfaces?
Переглядів 2,8 тис.7 місяців тому
Is It Okay To Put Properties on Interfaces?
The Ultimate Guide to Testing in .NET
Переглядів 1,6 тис.7 місяців тому
The Ultimate Guide to Testing in .NET
Can Your .NET Application Run in Isolation? (feat. MAUI)
Переглядів 9318 місяців тому
Can Your .NET Application Run in Isolation? (feat. MAUI)

КОМЕНТАРІ

  • @MagoMakes
    @MagoMakes День тому

    This is great, but you present things waaaaay too quickly. Remember, everybody's built differently so you need to always think of your audience. Apart from that - top job 👍👍

  • @jonathancumini6183
    @jonathancumini6183 День тому

    Best value for this topic. Thank you so much

  • @ThomasSchmidt-Esterle
    @ThomasSchmidt-Esterle День тому

    What a great series of WPF Custom Controls!!! Keep up the great work.

  • @mrstiflor6744
    @mrstiflor6744 2 дні тому

    How would I implement this Navigation Scenario, if I have a ContentControl displaying UserControls in my MainView, and then another ContentControl in one of the UserControls? If I want to use the NavigationStore and so on for all the ContentControls in my application, that wouldnt work. Do you put seperate NavigationStore / NavigationService instances for each ContentControl in the DI Container? Or how would you solve that scenario?

  • @jacobgordon6431
    @jacobgordon6431 2 дні тому

    This was a great video, although I would've preferred more in depth explanations. My current issue with this implementation is that we authorize the user and create a dictionary of claims consisting of the user's info...but how do I access this in any way? That's the info I need to create a Model I can't seem to find a way to access it in this implementation.

  • @ngocduong-og2wd
    @ngocduong-og2wd 2 дні тому

    Thank you for the wonderful video, Sean! I have just started learning about Firebase Authentication recently, and as I understand it, the token will expire after 3600 seconds (which is 1 hour) by default and needs to be refreshed. But in the case where the user logs in -> leaves the app open for more than 1 hour, and the token will automatically be refreshed to continue being used. Is there any solution for this?

  • @SuperGulamali
    @SuperGulamali 2 дні тому

    You should checkout MAUI now it's so much better than it was from about a year ago!

  • @dimitris01n
    @dimitris01n 2 дні тому

    I really love your videos. I have a problem though. Before you add the MainWindow into DI everything was working on my laptop. After this, when you changed the MainWindow into DI and using the funky method "services.AddScoped<MainWindow>(s => new MainWindow(s.GetRequiredService<MainViewModel>()));" i am getting this error: "System.InvalidOperationException: 'Unable to resolve service for type 'MyAgenda.WPF.State.Navigators.Navigator' while attempting to activate 'MyAgenda.WPF.ViewModels.MainViewModel'.'". My App.xaml is the same as yours also all my classes idk what is happening...

    • @dimitris01n
      @dimitris01n 2 дні тому

      I found the issue, in my MainViewModel.cs i had in constructor Navigation as parameter and not a INavigation. Anyways i love your videos !!! Keep Going!

  • @FaebuOG
    @FaebuOG 3 дні тому

    Hey @SingletonSean I am stuck since 2-3 weeks trying to fix the host notification errors. There is a problem with deserializing the FIREBASE_CONFIG String. I followed along the tutorials and the project works completly fine localy. Here is the error message from azure: Microsoft.Azure.WebJobs.Script: Error configuring services in an external startup class. Google.Apis.Auth: Error deserializing JSON credential data. Newtonsoft.Json: Error converting value {"type":"service_account","proje........." And unfortunatly since this string is sensible data, I havn't found anything online yet..

  • @ragnarok7976
    @ragnarok7976 3 дні тому

    You don't need to run the project you just have to build it. That will also add your custom control to the toolbox if you prefer to just drag and drop it on your window from there.

  • @stevanstojsin
    @stevanstojsin 3 дні тому

    Nice

  • @pathiashokkumar153
    @pathiashokkumar153 5 днів тому

    i cant able to connect with sql

  • @ShahidKhan-vs8bb
    @ShahidKhan-vs8bb 5 днів тому

    Thank you for sharing the video. DevExpress offers similar attached properties to media queries that you can utilize. Take a look at those. It would be beneficial to have a separate NuGet package for this instead of adding DevExpress just to create responsive MAUI apps.

  • @mackthisarrowhearth295
    @mackthisarrowhearth295 5 днів тому

    One question. For Unit-test and E2E, it is rather easy to establish how much you covered, since the scenario's are rather clear. How does one do that proper for integrations, for there are so many specific combinations.

  • @pathiashokkumar153
    @pathiashokkumar153 5 днів тому

    how to connect with sql database.... i just clone the code but i face difficulty to connect to sql

  • @mariocamspam72
    @mariocamspam72 6 днів тому

    Unit tests: when you mock every single important part of the application and then all tests pass always E2E tests: when you fail a test because the windows input stack decided your mouse click wasnt worth anything Integration tests: testing a viewmodel which references 46 different UI frameworks and breaks MVVM purity in ways never seen before

    • @SingletonSean
      @SingletonSean 5 днів тому

      Accurate and I still love integration tests

  • @wowojune9184
    @wowojune9184 7 днів тому

    The most best explanation of "Bindable Property".

  • @elijahromer6544
    @elijahromer6544 8 днів тому

    Please do a followup with the OAuth flows! Thanks!!!! Subscribed

  • @elijahromer6544
    @elijahromer6544 8 днів тому

    Does this work with Android and iOS?

    • @SingletonSean
      @SingletonSean 6 днів тому

      I haven't tried, but I think it will. Might have to bring in the FirebaseAuthentication.Maui package for this functionality. I'm honestly not sure - will have to explore this!

    • @HagosAbdallah
      @HagosAbdallah 6 днів тому

      I tried something similar, deploying on android emulator the {Credential = credential} aspect showed, "children could not be evaluated".. I followed due process of inserting the json file inside the android.resources.blabla.. but still

  • @andresmoring4538
    @andresmoring4538 8 днів тому

    Hello i got a problem if i remove startupUri programm starts but it doenst open the window. I did it like you show it, in the class app maybe someone can help

  • @elijahromer6544
    @elijahromer6544 8 днів тому

    Dumb question but- how do the view models get passed to the constructor? I'm guessing DI automatically handle that (even with URI Navigation) when you register the pages and view models as singletons in MauiProgram.cs?

  • @bobjesson4624
    @bobjesson4624 10 днів тому

    Sean, 4+ years after making, this video is still meaningful to people out there. I'm enjoying this series very much as I work on a solution for my company. Thank you for this, and the others in the series. Much, very much, appreciated!

  • @WilmerLin
    @WilmerLin 11 днів тому

    MAUI will grow up and i also believe there is hope for it.

  • @I_c_a_r_u_S_S
    @I_c_a_r_u_S_S 12 днів тому

    Very good explained. This is the best explantation I found in three languages :D

  • @maksym7279
    @maksym7279 12 днів тому

    Cool! Thanks!

  • @olivier0003
    @olivier0003 12 днів тому

    Thanks for your advice ! I improve my Maui code !

  • @dimitris01n
    @dimitris01n 13 днів тому

    What if you set Thickness to 0? ;D You can't divide by zero and i guess you haven't add a check for this xD I like finding bugs

  • @j.r.8176
    @j.r.8176 13 днів тому

    I mean this is cool but you could have just used ViewBox!

  • @nikolaidavydov7523
    @nikolaidavydov7523 14 днів тому

    thanks! perfect lesson

  • @shvideo1
    @shvideo1 15 днів тому

    Fantastic tutorial. It's very educational. Thank you for taking the time to make them.

  • @CodeWithRivandra
    @CodeWithRivandra 15 днів тому

    You know what, this Xaml cannot do conditional rendering easily. Too sad

  • @chudchadanstud
    @chudchadanstud 15 днів тому

    Properties are literally methods lol. Yes it's okay. I really don't know why this is a question. C# devs need to spend some time in early Java land.

  • @SeenuMahalakshmi
    @SeenuMahalakshmi 16 днів тому

    To distribute windows application only in maui so i have remove other target platforms when try to publish using side loading. Generateappx package does not exist issue occur. How to resolve?

  • @rcanacci
    @rcanacci 16 днів тому

    Hey Sean, this is a wonderful explanation - however, its not environment specific. This is build type specific. In turn, if you have a local, dev, qa, and prod deployed environments (almost all will be built using Release) its not useful. Please consider renaming the video. Misleading.

  • @7m0xd
    @7m0xd 17 днів тому

    Thank you so much. I'm also developing MAUI App and I want to implement logging and file persistence logs but if you notice that to access these file logs is a bit complicated for the end-user. What would you recommend to add in the App to access these logs and send it to the developer or any other approaches ?

  • @yoriichi28
    @yoriichi28 17 днів тому

    Can you tell me nugets for Fireabse database , firebase pushnotification also which works great for maui

  • @niltonhugosilvamarlo6515
    @niltonhugosilvamarlo6515 17 днів тому

    🎯 Key points for quick navigation: 00:00 *🏨 Understanding MVVM architecture for WPF applications* - MVVM architecture separates the view layer into models (M), views (V), and view models (VM) - Exploring the concept of models and how domain logic is encapsulated within them - Creating classes for a hotel, reservation book, reservation, and room id to represent the domain model 02:07 *🛠️ Implementing model functionality* - Organizing classes into folders within the project structure - Defining methods within the model layer to interact with the domain logic - Handling reservation conflicts and implementing exception handling within the model layer 08:13 *📝 Refining model functionality for user interactions* - Introducing user identification within the reservation class - Opting for a list data structure over a dictionary for simplicity and ease of use - Defining methods in the model layer to support user actions such as viewing and making reservations Made with HARPA AI

  • @subramaniannk4255
    @subramaniannk4255 19 днів тому

    Your video is certainly one of the best.

  • @abhaynath5833
    @abhaynath5833 19 днів тому

    This was really really helpful video. Turned out I was using serilog wrong way. I had been referencing ILogger from serilog instead of Ilogger from Microsoft logging package.

  • @ivandrofly
    @ivandrofly 20 днів тому

    Thank you :)

  • @johnchance5446
    @johnchance5446 20 днів тому

    What's the deal? If it's too fast, you're too old? 🤔

  • @dmytrohryshyn
    @dmytrohryshyn 22 дні тому

    Thanks. You helped to solve my problem at work. Highly appreciated.

  • @ragnarok7976
    @ragnarok7976 22 дні тому

    Oh wow, I heard Ninja has figma too

  • @ragnarok7976
    @ragnarok7976 22 дні тому

    Granted I'm not exactly a beginner but I actually do like the speed. I tend to just watch videos like these without following along and then implement the concepts in my projects at a later time. I disagree with the people who say it's bad I think it's just an intermediate level tutorial that assumes a certain level of familiarity. For those with problems I would remind you that MVVC and design patterns in general tend to be more advanced programming concepts. There is no shame in wanting a slower format that goes into more details but for people who are just looking to pick up MVVC and little else I believe this is actually a pretty good tutorial which is why it's the first result when searching for such a thing.

  • @obsidian741
    @obsidian741 23 дні тому

    I’m actually a bit surprised that MAUI does not provide something more elegant than that since it aims at targeting mobile platforms. This trick is totally applicable and practical for traditional WPF apps. Looks like stagnating 🤔

  • @mukkulnagpal
    @mukkulnagpal 23 дні тому

    If ItemControl has suppose 10 items. I want to show left and right arrow instead of scrollbar so that user can click those arrows to navigate to different items itemcontrol. How to achieve this ?

  • @bearzal2234
    @bearzal2234 23 дні тому

    At 15:30 it is mentioned that we create LoadMajorIndexViewModel method to avoid calling LoadMajorIndexes method via constructor each time MajorIndexViewModel is instantiated, but with line 25 we instantiate MajorIndexViewModel so it is becoming the same thing. The catch here is that in both cases we still instantiate MajorIndexViewModel, where is the benefit of this approach?

  • @user-wy5xn6eu5o
    @user-wy5xn6eu5o 23 дні тому

    I love U