class TestTheListOfStores(WebTestCase):
    anonymous = True

    def setUp(self):
        super(TestTheListOfStores, self).setUp()
        self.main_location = 'POINT(144.917908 -37.815751)'
        self.other_location = 'POINT(144.998401 -37.772895)'

        self.main_store = StoreFactory(
            name="Main store in Southbank",
            is_pickup_store=True,
            location=self.main_location,
        )
        self.other_store = StoreFactory(
            name="Other store in Northcote",
            is_pickup_store=True,
            location=self.other_location,
        )

    def test_displays_all_stores_unfiltered(self):
        page = self.get(reverse('stores:index'))
        self.assertContains(page, self.main_store.name)
        self.assertContains(page, self.other_store.name)

    def test_can_be_filtered_by_location(self):
        page = self.get(reverse('stores:index'))
        search_form = page.forms['store-search']
        search_form['latitude'] = '-37.7736132'
        search_form['longitude'] = '-144.9997396'
        page = search_form.submit()

        self.assertContains(page, self.main_store.name)
        self.assertContains(page, self.other_store.name)

        stores = page.context[0].get('object_list')
        self.assertSequenceEqual(stores, [self.other_store, self.main_store])

    def test_can_be_filtered_by_store_group(self):
        north_group = StoreGroupFactory(name="North")
        south_group = StoreGroupFactory(name="South")

        self.main_store.group = south_group
        self.main_store.save()
        self.other_store.group = north_group
        self.other_store.save()

        page = self.get(reverse('stores:index'))
        search_form = page.forms['store-search']
        search_form['group'] = south_group.id
        page = search_form.submit()

        self.assertContains(page, self.main_store.name)

        stores = page.context[0].get('object_list')
        self.assertSequenceEqual(stores, [self.main_store])
class TestTheListOfStores(WebTestCase):
    anonymous = True

    def setUp(self):
        super(TestTheListOfStores, self).setUp()
        self.main_location = 'POINT(144.917908 -37.815751)'
        self.other_location = 'POINT(144.998401 -37.772895)'

        self.main_store = StoreFactory(
            name="Main store in Southbank",
            is_pickup_store=True,
            location=self.main_location,
        )
        self.other_store = StoreFactory(
            name="Other store in Northcote",
            is_pickup_store=True,
            location=self.other_location,
        )

    def test_displays_all_stores_unfiltered(self):
        page = self.get(reverse('stores:index'))
        self.assertContains(page, self.main_store.name)
        self.assertContains(page, self.other_store.name)

    def test_can_be_filtered_by_location(self):
        page = self.get(reverse('stores:index'))
        search_form = page.forms['store-search']
        search_form['latitude'] = '-37.7736132'
        search_form['longitude'] = '-144.9997396'
        page = search_form.submit()

        self.assertContains(page, self.main_store.name)
        self.assertContains(page, self.other_store.name)

        stores = page.context[0].get('object_list')
        self.assertSequenceEqual(stores, [self.other_store, self.main_store])

    def test_can_be_filtered_by_store_group(self):
        north_group = StoreGroupFactory(name="North")
        south_group = StoreGroupFactory(name="South")

        self.main_store.group = south_group
        self.main_store.save()
        self.other_store.group = north_group
        self.other_store.save()

        page = self.get(reverse('stores:index'))
        search_form = page.forms['store-search']
        search_form['group'] = south_group.id
        page = search_form.submit()

        self.assertContains(page, self.main_store.name)

        stores = page.context[0].get('object_list')
        self.assertSequenceEqual(stores, [self.main_store])