Implement delete segment

Added delete segment functionality.
Also added test cases that actually not covering
the line of code but tested the delete segment functionally.

Change-Id: Iabf59e92be9de09d2d2fde48fea403b7cd2bcd26
This commit is contained in:
nirajsingh 2018-01-30 16:21:43 +05:30
parent 3e90629f3e
commit 4fac53baa4
3 changed files with 63 additions and 1 deletions

View File

@ -100,3 +100,9 @@ def segment_create(request, data):
def get_segment(request, segment_id):
"""Returns segment by id"""
return masakariclient(request).get_segment(segment_id)
def segment_delete(request, segment_id, ignore_missing=True):
"""delete segment"""
return masakariclient(request).delete_segment(
segment_id, ignore_missing)

View File

@ -13,6 +13,9 @@
# limitations under the License.
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext_lazy
from masakaridashboard.api import api
from horizon import tables
@ -25,6 +28,27 @@ class CreateSegment(tables.LinkAction):
icon = "plus"
class DeleteSegment(tables.DeleteAction):
@staticmethod
def action_present(count):
return ungettext_lazy(
u"Delete Segment",
u"Delete Segment",
count
)
@staticmethod
def action_past(count):
return ungettext_lazy(
u"Deleted Segment",
u"Deleted Segment",
count
)
def delete(self, request, segment_uuid):
api.segment_delete(request, segment_uuid, ignore_missing=True)
class FailoverSegmentTable(tables.DataTable):
name = tables.Column('name', verbose_name=_("Name"))
@ -42,6 +66,7 @@ class FailoverSegmentTable(tables.DataTable):
class Meta(object):
name = "failover_segment"
verbose_name = _("FailoverSegment")
table_actions = (CreateSegment,
table_actions = (DeleteSegment,
CreateSegment,
tables.FilterAction
)

View File

@ -109,3 +109,34 @@ class SegmentTest(test.TestCase):
result = api.pagination_list(self.request, marker='', paginate=True)
self.assertIn(SEGMENT_LIST, result)
mock_segments.assert_called_once_with(limit=21, marker='')
def test_delete_ok(self):
segment = SEGMENT_LIST[0]
data = {'object_ids': [segment.uuid],
'action': 'failover_segment__delete'}
with mock.patch(
'masakaridashboard.api.api.pagination_list',
return_value=(SEGMENT_LIST, True, True)
), mock.patch(
'masakaridashboard.api.api.segment_delete',
return_value=None
) as mocked_delete:
res = self.client.post(INDEX_URL, data)
self.assertNoFormErrors(res)
self.assertRedirectsNoFollow(res, INDEX_URL)
mocked_delete.assert_called_once_with(
mock.ANY,
segment.uuid,
ignore_missing=True
)
@mock.patch.object(proxy_obj.Proxy, 'delete_segment')
def test_segment_delete(self, mock_delete_segments):
mock_delete_segments.return_value = None
result = api.segment_delete(
self.request, SEGMENT_LIST[0].uuid, ignore_missing=True)
self.assertEqual(None, result)
mock_delete_segments.assert_called_once_with(
SEGMENT_LIST[0].uuid, True)