GithubHelp home page GithubHelp logo

unobserve's Introduction

Unobserve

Lint and Test Status Quality Score Coverage Latest Stable Version License

About Unobserve

When testing Laravel applications, we frequently need to "silence" events, so as not to trigger additional side-effects. Laravel's Event::fake method is useful, but muting a specific model observer is still problematic.

Unobserve takes care of that, making it easy to mute and unmute an observer at will.

Requirements and installation

Select the appropriate version of Unobserve from the following table.

Unobserve Laravel PHP
1.x ^5.8, ^6.0 ^7.2
2.x ^7.0 ^7.2.5
3.x ^8.0 ^7.3.0
4.x ^8.0 ^8.0.0
5.x ^9.0, ^10.0 ^8.0.0
6.x ^11.0 ^8.2.0

Install Unobserve using Composer:

composer require monooso/unobserve

Usage

First, add the CanMute trait to your observer class.

<?php

namespace App\Observers;

use Monooso\Unobserve\CanMute;

class UserObserver
{
    use CanMute;
}

You can now mute and unmute your observer as needed:

UserObserver::mute();
UserObserver::unmute();

Mute options

Mute all observer events:

UserObserver::mute();

Mute specific observer events:

UserObserver::mute('creating');
UserObserver::mute(['creating', 'created']);

Development

Unobserve is very stable at this point. If you have any feature ideas please open an issue before doing any work.

Here's how to set everything up for local development on Unobserve 1:

  1. Clone the repository.
  2. Install the dependencies by running composer install.
  3. Install the code quality tools by running composer install --working-dir=tools/php-cs-fixer.
  4. Set your Git hooks directory to .githooks by running git config core.hooksPath .githooks.

License

Unobserve is open source software, released under the MIT license.

Footnotes

  1. I'm assuming you know your way around PHP, and already have your environment set up.

unobserve's People

Contributors

monooso avatar sergej-tihonov avatar dependabot[bot] avatar mikemand avatar wilburpowery avatar spinzar avatar

Stargazers

Hassan Kerdash avatar Marcelo Vaz Castilho avatar Vincent Drouin avatar Lucian B. avatar hadi alizadeh avatar  avatar  avatar  avatar Prasad Nayanajith avatar  avatar John Vo avatar  avatar Richard van Baarsen avatar İzni Burak Demirtaş avatar Umut Işık avatar Rattanak Chuon avatar Jan Daryl Galbo avatar Евгений Борисов avatar Artyom Yeremenko avatar Jason P. Scharf avatar Terran avatar Mehmet Çoban avatar Abel avatar  avatar baijunyao avatar Abdurrahman Kahraman avatar Andres Felipe Vega avatar Peter Krebs avatar  avatar Ricardo Simão avatar Jean-Pierre Fourie avatar Maxime Lafontaine avatar Chun-Sheng, Li avatar Matt A avatar Mark Wu avatar Damian Tardencilla avatar John McLem Adan avatar Glenn Kimble Jr avatar Charlie Page avatar Agyenim Boateng Barfi avatar AkrAm avatar wilbur.yu avatar Alexander Melihov avatar Philippe Tellier avatar Hafiq avatar  avatar Patompong Savaengsuk avatar Alan Wynn avatar Luca Fregoso avatar Pedro Furtado avatar  avatar Matthias Lotze avatar xiatian avatar Josephus Paye II avatar Martinez Andres avatar Simon Schaufelberger avatar  avatar Turan Karatuğ avatar Andrew G. avatar Ratting Gergely avatar Goenitz avatar nana2000 avatar Andrés Herrera García avatar Rodrigo avatar  avatar Rick Mills avatar Noah Halstead avatar Railken avatar Davor Minchorov avatar Kit Burton-Senior avatar KID avatar Matija Boban avatar Yish avatar Sven Luijten avatar Sebastiaan Luca avatar Nick avatar Denis Veg avatar Cüneyt Şentürk avatar Denis Dulici avatar mahdikhanzadi avatar Kevin Jiang avatar Adeniji Charles Ayodipupo avatar dom avatar

Watchers

James Cloos avatar  avatar Semih T. avatar  avatar

unobserve's Issues

Release with Laravel 10 support

@monooso can you please create a release so we have a version with Laravel 10 support.
The changes are working and are all merged just a new release is missing.
As nothing has changed minor release like 5.2.0 is sufficient.

Difference between this package and unsetEventDispatcher()

What is the difference between this and just doing ModelName::unsetEventDispatcher(); ?

// Check Dispatcher
Model::getEventDispatcher()

// Remove Dispatcher
Model::unsetEventDispatcher()

// Add Dispatcher
Model::setEventDispatcher(new \Illuminate\Events\Dispatcher);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.