import pytest

from catinabox import cattery


class TestCattery(object):

    ###########################################################################
    # add_cats
    ###########################################################################

    def test__add_cats__succeeds(self):
        c = cattery.Cattery()
        assert c

    ###########################################################################
    # remove_cat
    ###########################################################################

    def test__remove_cat__succeeds(self):
        c = cattery.Cattery()
        assert c

    def test__remove_cat__no_cats__fails(self):
        c = cattery.Cattery()
        assert c

    def test__remove_cat__cat_not_in_cattery__fails(self):
        c = cattery.Cattery()
        c.add_cats(["Fluffy"])
        with pytest.raises(cattery.CatNotFound):
            c.remove_cat("Snookums")

import pytest

from catinabox import cattery, mccattery


@pytest.fixture(params=[
    cattery.Cattery,
    mccattery.McCattery
])
def cattery_fixture(request):
    return request.param()


###########################################################################
# add_cats
###########################################################################

def test__add_cats__succeeds(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy", "Snookums"])
    assert cattery_fixture.cats == ["Fluffy", "Snookums"]
    assert cattery_fixture.num_cats == 2

###########################################################################
# remove_cat
###########################################################################

def test__remove_cat__succeeds(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy", "Junior"])
    cattery_fixture.remove_cat("Fluffy")
    assert cattery_fixture.cats == ["Junior"]
    assert cattery_fixture.num_cats == 1


def test__remove_cat__no_cats__fails(cattery_fixture):
    with pytest.raises(cattery.CatNotFound):
        cattery_fixture.remove_cat("Fluffles")


def test__remove_cat__cat_not_in_cattery__fails(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy"])
    with pytest.raises(cattery.CatNotFound):
        cattery_fixture.remove_cat("Snookums")

Add full tests for mccattery and cattery
Add full tests for mccattery and cattery

  import pytest
  
- from catinabox import cattery
+ from catinabox import cattery, mccattery
  
  
- class TestCattery(object):
+ @pytest.fixture(params=[
+     cattery.Cattery,
+     mccattery.McCattery
+ ])
+ def cattery_fixture(request):
+     return request.param()
  
-     ###########################################################################
-     # add_cats
-     ###########################################################################
  
-     def test__add_cats__succeeds(self):
-         c = cattery.Cattery()
-         assert c
+ ###########################################################################
+ # add_cats
+ ###########################################################################
  
-     ###########################################################################
-     # remove_cat
-     ###########################################################################
+ def test__add_cats__succeeds(cattery_fixture):
+     cattery_fixture.add_cats(["Fluffy", "Snookums"])
+     assert cattery_fixture.cats == ["Fluffy", "Snookums"]
+     assert cattery_fixture.num_cats == 2
  
-     def test__remove_cat__succeeds(self):
-         c = cattery.Cattery()
-         assert c
+ ###########################################################################
+ # remove_cat
+ ###########################################################################
  
-     def test__remove_cat__no_cats__fails(self):
-         c = cattery.Cattery()
-         assert c
+ def test__remove_cat__succeeds(cattery_fixture):
+     cattery_fixture.add_cats(["Fluffy", "Junior"])
+     cattery_fixture.remove_cat("Fluffy")
+     assert cattery_fixture.cats == ["Junior"]
+     assert cattery_fixture.num_cats == 1
  
-     def test__remove_cat__cat_not_in_cattery__fails(self):
-         c = cattery.Cattery()
-         c.add_cats(["Fluffy"])
-         with pytest.raises(cattery.CatNotFound):
-             c.remove_cat("Snookums")
  
+ def test__remove_cat__no_cats__fails(cattery_fixture):
+     with pytest.raises(cattery.CatNotFound):
+         cattery_fixture.remove_cat("Fluffles")
+ 
+ 
+ def test__remove_cat__cat_not_in_cattery__fails(cattery_fixture):
+     cattery_fixture.add_cats(["Fluffy"])
+     with pytest.raises(cattery.CatNotFound):
+         cattery_fixture.remove_cat("Snookums")
+ 
Add full tests for mccattery and cattery
## Code Before:
import pytest

from catinabox import cattery


class TestCattery(object):

    ###########################################################################
    # add_cats
    ###########################################################################

    def test__add_cats__succeeds(self):
        c = cattery.Cattery()
        assert c

    ###########################################################################
    # remove_cat
    ###########################################################################

    def test__remove_cat__succeeds(self):
        c = cattery.Cattery()
        assert c

    def test__remove_cat__no_cats__fails(self):
        c = cattery.Cattery()
        assert c

    def test__remove_cat__cat_not_in_cattery__fails(self):
        c = cattery.Cattery()
        c.add_cats(["Fluffy"])
        with pytest.raises(cattery.CatNotFound):
            c.remove_cat("Snookums")

## Instruction:
Add full tests for mccattery and cattery
## Code After:
import pytest

from catinabox import cattery, mccattery


@pytest.fixture(params=[
    cattery.Cattery,
    mccattery.McCattery
])
def cattery_fixture(request):
    return request.param()


###########################################################################
# add_cats
###########################################################################

def test__add_cats__succeeds(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy", "Snookums"])
    assert cattery_fixture.cats == ["Fluffy", "Snookums"]
    assert cattery_fixture.num_cats == 2

###########################################################################
# remove_cat
###########################################################################

def test__remove_cat__succeeds(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy", "Junior"])
    cattery_fixture.remove_cat("Fluffy")
    assert cattery_fixture.cats == ["Junior"]
    assert cattery_fixture.num_cats == 1


def test__remove_cat__no_cats__fails(cattery_fixture):
    with pytest.raises(cattery.CatNotFound):
        cattery_fixture.remove_cat("Fluffles")


def test__remove_cat__cat_not_in_cattery__fails(cattery_fixture):
    cattery_fixture.add_cats(["Fluffy"])
    with pytest.raises(cattery.CatNotFound):
        cattery_fixture.remove_cat("Snookums")
