from datetime import datetime

import factory

from polling.models import State
from polling.models import CANDIDATE_NONE


class StateFactory(factory.DjangoModelFactory):
    class Meta:
        model = State

    name = factory.Sequence(lambda n: "state-%d" % n)
    updated = factory.LazyFunction(datetime.now)
    abbv = factory.LazyAttribute(lambda obj: obj.name[-2:])
    tipping_point_rank = factory.Sequence(lambda n: int(n))
    safe_for = CANDIDATE_NONE
    safe_rank = -1
    leans = CANDIDATE_NONE
    lean_rank = -1

from datetime import datetime
import us

import factory

from polling.models import State
from polling.models import CANDIDATE_NONE


class StateFactory(factory.DjangoModelFactory):
    class Meta:
        model = State

    name = factory.Sequence(lambda n: us.STATES[n])
    updated = factory.LazyFunction(datetime.now)
    abbv = factory.LazyAttribute(
        lambda obj: us.states.lookup(unicode(obj.name)).abbr)
    tipping_point_rank = factory.Sequence(lambda n: int(n))
    safe_for = CANDIDATE_NONE
    safe_rank = -1
    leans = CANDIDATE_NONE
    lean_rank = -1

Use real states in StateFactory
Use real states in StateFactory

  from datetime import datetime
+ import us
  
  import factory
  
  from polling.models import State
  from polling.models import CANDIDATE_NONE
  
  
  class StateFactory(factory.DjangoModelFactory):
      class Meta:
          model = State
  
-     name = factory.Sequence(lambda n: "state-%d" % n)
+     name = factory.Sequence(lambda n: us.STATES[n])
      updated = factory.LazyFunction(datetime.now)
-     abbv = factory.LazyAttribute(lambda obj: obj.name[-2:])
+     abbv = factory.LazyAttribute(
+         lambda obj: us.states.lookup(unicode(obj.name)).abbr)
      tipping_point_rank = factory.Sequence(lambda n: int(n))
      safe_for = CANDIDATE_NONE
      safe_rank = -1
      leans = CANDIDATE_NONE
      lean_rank = -1
  
Use real states in StateFactory
## Code Before:
from datetime import datetime

import factory

from polling.models import State
from polling.models import CANDIDATE_NONE


class StateFactory(factory.DjangoModelFactory):
    class Meta:
        model = State

    name = factory.Sequence(lambda n: "state-%d" % n)
    updated = factory.LazyFunction(datetime.now)
    abbv = factory.LazyAttribute(lambda obj: obj.name[-2:])
    tipping_point_rank = factory.Sequence(lambda n: int(n))
    safe_for = CANDIDATE_NONE
    safe_rank = -1
    leans = CANDIDATE_NONE
    lean_rank = -1

## Instruction:
Use real states in StateFactory
## Code After:
from datetime import datetime
import us

import factory

from polling.models import State
from polling.models import CANDIDATE_NONE


class StateFactory(factory.DjangoModelFactory):
    class Meta:
        model = State

    name = factory.Sequence(lambda n: us.STATES[n])
    updated = factory.LazyFunction(datetime.now)
    abbv = factory.LazyAttribute(
        lambda obj: us.states.lookup(unicode(obj.name)).abbr)
    tipping_point_rank = factory.Sequence(lambda n: int(n))
    safe_for = CANDIDATE_NONE
    safe_rank = -1
    leans = CANDIDATE_NONE
    lean_rank = -1
